사이드 프로젝트 INFO - 배포

seul·2022년 8월 7일
0

SIDE-PROJECT-INFO

목록 보기
6/7
post-thumbnail

배포하는 방법

자동 배포까지는 너무 복잡해서, 일단은 수동 배포만 진행했다

배포 스크립트 작성

  • vim ~/app/{코드가있는디렉토리명}/deploy.sh
    • ~/app/{디렉토리명} 폴더에 deploy.sh 파일을 생성함
#!/bin/bash
REPOSITORY=/home/ubuntu/app/{디렉토리명}
PROJECT_NAME={프로젝트명}
# 프로젝트 디렉토리 주소, 프로젝트명: 자주 사용해서 변수로 저장
# 타입 없이 $ 변수명으로 변수 사용

cd $REPOSITORY/$PROJECT_NAME/
# git clone 받았던 디렉토리로 이동

git pull
# master 브랜치의 최신 내용 받기

./gradlew build
# 프로젝트 내부의 gradlew로 build 수행

cd $REPOSITORY
cp $REPOSITORY/$PROJECT_NAME/build/libs/*.jar $REPOSITORY/
# build 결과물인 jar 파일을 복사해 jar 파일을 모아둔 위치로 복사

CURRENT_PID=$(pgrep -f ${PROJECT_NAME}.*.jar)
# CURRENT_PID=$(pgrep -f spingboot-webservice) -> 현재 구동 중인 애플리케이션
# 기존에 수행 중이던 스프링 부트 애플리케이션을 종료
# pgrep: process id만 추출
# -f: 프로세스 이름으로 찾음

if [ -z "$CURRENT_PID" ]; then
        echo "> application ing X not end"
else    
        echo "> kill -15 $CURRENT_PID"
        kill -15 $CURRENT_PID
        sleep 5
fi      
# 현재 구동 중인 프로세스가 있는지 확인
# process id 값을 보고 프로세스 있으면 해당 프로세스 종료

JAR_NAME=$(ls -tr $REPOSITORY/ | grep jar | tail -n 1)
# 새로 실행할 jar 파일명을 찾음
# 여러 jar 파일이 생겨서 tail -n으로 가장 나중의 jar 파일을 변수에 저장

nohup java -jar $REPOSITORY/$JAR_NAME 2>&1 &
# 찾은 jar 파일명으로 해당 파일을 nohup으로 실행
  • ./deploy.sh: 빌드
  • vim nohup.out: log 보기

스크립트로 수동 배포 하는 방법

  1. 터미널에서 ssh -i /Users/{디렉토리명}/{pem파일명}.pem {EC2 인스턴스 - 플랫폼@퍼블릭 IPv4 DNS}
    을 이용하여 접근하기
  2. cd app/{디렉토리명}
  3. ./deploy.sh
profile
자존감은 일상의 성실함으로부터 온다

0개의 댓글