기존에 배포 프로세스 이해도를 높히기 위해서 spring boot project를 aws ec2 ubuntu 서버에 자동 재 배포하는 쉘 스크립트 작성을 해봤다.
#!/bin/bash
# 1. env variable
source ./var.sh
echo "1. env variable setting complete"
# 2. clone delete
touch crontab_delete
crontab crontab_delete
rm crontab_delete
echo "2. cron delete complete"
# 3. server checking
if [ -n "${PROJECT_PID}" ]; then
# re deploy
kill -9 $PROJECT_PID
echo "3. project kill complete"
else
# first deploy
# 3-1 apt update
sudo apt-get -y update 1>/dev/null
echo "3-1. apt-get update complete"
# 3-2 jdk install
sudo apt-get -y install openjdk-11-jdk 1>/dev/null
echo "3-2. jdk install complete"
# 3-3 timezone
sudo timedatectl set-timezone Asia/Seoul
echo "3-3. timezone setting complete"
fi
# 4. project folder delete
rm -rf ${HOME}/${PROJECT_NAME}
echo "4. project folder delete complete"
# 5. git clone
git clone https://github.com/${GITHUB_ID}/${PROJECT_NAME}.git
sleep 3s
echo "5. git clone complete"
# 6. gradlew +x
chmod u+x ${HOME}/${PROJECT_NAME}/gradlew
echo "6. gradlew u+x complete"
# 7. build
cd ${HOME}/${PROJECT_NAME}
./gradlew build
echo "7. gradlew build complete"
# 8. start jar
nohup java -jar -Dspring.profiles.active=prod ${JAR_PATH} 1>${HOME}/log.out 2>${HOME}/err.out &
echo "8. start server complete"
# 9. cron registration
touch crontab_new
echo "* * * * * ${HOME}/check-and-restart.sh" 1>>crontab_new
# register the others.... you use >> (append)
crontab crontab_new
rm crontab_new
echo "9. cron registration complete"
기존에 배포를 할때는 docker를 활용해서 아주 쉽게 배포를 해왔지만 좀 더 배포에 대한 이해도를 높히기 위해서는 위와같은 로우한 작업을 한번쯤은 경험해 볼필요가 있다고 생각했습니다.
위 스크립트는 강의를 보고 작성한 것이며 출처는 메타코딩님의 강의 입니다.
'AWS' 카테고리의 다른 글
aws 생성형 ai 부산 세미나 (1) | 2024.02.24 |
---|---|
5/31 AWS 스타트업 지원 교육 참여 (0) | 2023.05.31 |
spring boot project의 기본적인 배포 흐름 (0) | 2023.02.26 |
RSA 알고리즘 (0) | 2023.01.25 |
EC2 서버 방화벽 (임바운드 규칙) (0) | 2023.01.25 |