본문 바로가기

:SERVER/AWS

[easyupclass] EC2 서버에 스크립트로 배포하기(2)

반응형

1. deploy.sh 파일 수정
#3. server checking 부분 추가됨

#!/bin/bash

# 1. env variable
source ./var.sh
echo "1. evn variable setting complete"

# 2. cron delete
touch crontab_delete
crontab crontab_delete
rm crontab_delete
echo "2. cron delete complete"

# 3. server checking
if [ -n "${PROJECT_PID}" ]; then
  # re delpoy
  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

-n 명령어는 따라오는 문자열의 길이가 0 이상이면 참
1>/dev/null 명령어는 표준 출력 결과를 휴지통으로 이동시켜버림


2. deploy.sh 파일 수정
#4. project folder delete & #5. git clone & 6 & 7 build 부분 추가됨
기존 깃 다운로드 받은 폴더 삭제 & 깃 프로젝트 다운로드(복제) & 빌드 후 jar 파일 생성

apt-get update 
apt-get install 
2가지는 동기식

#!/bin/bash

# 1. env variable
source ./var.sh
echo "1. evn variable setting complete"

# 2. cron delete
touch crontab_delete
crontab crontab_delete
rm crontab_delete
echo "2. cron delete complete"

# 3. server checking
if [ -n "${PROJECT_PID}" ]; then
  # re delpoy
  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 실행 권한 주기
chmod u+x ${HOME}/${PROJECT_NAME}/gradlew
echo "6. gradlew u+x complete"

# 7. build project
cd ${HOME}/${PROJECT_NAME}
./gradlew build
echo "7. gradle build complete"


3. jar 파일 실행해 보기
java -jar -Dspring.profiles.active=prod [jar파일명]


4. deploy.sh 파일 수정
#8. 서버 시작하는 부분 추가

#!/bin/bash

# 1. env variable
source ./var.sh
echo "1. evn variable setting complete"

# 2. cron delete
touch crontab_delete
crontab crontab_delete
rm crontab_delete
echo "2. cron delete complete"

# 3. server checking
if [ -n "${PROJECT_PID}" ]; then
  # re delpoy
  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 실행 권한 주기
chmod u+x ${HOME}/${PROJECT_NAME}/gradlew
echo "6. gradlew u+x complete"

# 7. build project
cd ${HOME}/${PROJECT_NAME}
./gradlew build
echo "7. gradle 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"

출처이지업클래스 | 개발자를 위한 AWS DevOps 입문 [CI/CD 무중단 배포]
https://easyupclass.e-itwill.com/course/course_view.jsp?id=74&rtype=0&ch=course

반응형