AWS

spring boot -> aws ec2 ubuntu 배포 스크립트

25G 2023. 3. 26. 14:18

기존에 배포 프로세스 이해도를 높히기 위해서 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