개발/AWS

AWS 배포하기 3 (L2) 서버종료 및 프로그램 설치

Ridiss 2022. 11. 16. 09:00

지난시간에 이어서 작성

 

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용으로 작성중입니다.