지난시간에 이어서 작성
3. 서버 PID찾아서 종료시키기
pid 918번을 찾아보자
pgrep -f bash
pgrep -> pid검색
-f -> 프로세스 이름을 찾는 옵션
입력시 918이 조회됨
java+gradel프로젝트의 경우 빌드시
프로젝트네임(aws-v2) + 버전(0.0.1) + .jar의 이름으로 실행파일이 만들어짐
aws-v2-0.0.1.jar
이걸 적용하면
pgrep -f aws-v2-0.0.1.jar
입력시 pid를 조회할수 있다.
지난번에 작성한 var.sh를 열어서
PROJECT_PID="$(pgrep -f ${PROJECT_NAME}-${PROJECT_VERSION}.jar)"
JAR_PATH="${HOME}/${PROJECT_NAME}/build/libs/${PROJECT_NAME}-${PROJECT_VERSION}.jar"
를 입력해준다.
결국 PROJECT_PID는 pgrep -f aws-v2-0.0.1.jar
JAR_PATH는 /home/ubuntu/aws-v2/build/libs/aws-v2-0.0.1.jar 라는 의미가 됨
deloy.sh파일에 아래와 같은내용을 추가
# 3. server checking
if [ -n "${PROJECT_PID}" ]; then ###if문 -n은 뒤에 ${PROJECT_PID}문자열의 길이가 있는지 확인 있으면 if문 실행됨
# re deploy
kill -9 $PROJECT_PID
echo "3. project kill complete"
else ###PID 없으면 여기 실행됨
# first deploy
# 3-1 apt update
sudo apt-get -y update 1>/dev/null ###apt update를 하는데 쉘스크립트 내부 bash명령어를 사용하기때문에 -get을 붙여준다, -y옵션은 설치하시겠습니까? 라는 물음에 대한 대답설정, 1>/dev/null은 설치시 나오는 로그들을 쓰레기통에 버리겠다는 의미
# 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
이렇게 입력하고 deploy.sh를 실행하면 아래와같이 작동하는것을 볼수 있다.
또다시 deploy.sh에 들어가서
아래 내용을 입력한다.
# 4. project folder delete
rm -rf ${HOME}/${PROJECT_NAME} ###-rf는 삭제옵션이며 f의 경우 삭제하시겠습니까? 같은물음을 모두 생략
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 chmod complete"
# 7. build
cd ${HOME}/${PROJECT_NAME}
./gradlew build
echo "7. gradlew build complete"
실행해보면
이렇게 작동을 한것을 확인할 수 있다.
aws-v2/build/libs 폴더로 이동하면 jar파일이 존재하는데
해당 프로젝트의 경우 dev/prod 환경으로 나누어져있어서 그냥 실행하면 dev환경의 8081로 실행됨
prd의 8080환경으로 실행하길 원하는 경우 아래와 같이 작성
java -jar -Dspring.profiles.active=prod aws-v2-0.0.1.jar
그럼 서버가 실행됨을 확인 할 수 있다.
#해당 내용은 이지업 개발자를 위한 AWS DevOps 입문 [CI/CD 무중단 배포] Remind용으로 작성중입니다.
'개발 > AWS' 카테고리의 다른 글
AWS 배포하기 1 (L3) 엘라스틱빈스톡(ELB) (0) | 2022.12.13 |
---|---|
AWS 배포하기 4 (L2) 서버 실행하기 + 크론등록 (0) | 2022.11.23 |
AWS 배포하기 2 (L2) 재배포를 고려한 cron종료 (0) | 2022.11.16 |
AWS 배포하기 1 (L2) 환경변수와 bashrc (0) | 2022.11.16 |
aws배포하기 6 (기본) 재배포하기 (0) | 2022.11.09 |