티스토리 뷰

오늘은 종료 스크립트와 배포 스크립트를 작성해보겠다.

 

종료와 배포의 과정은 몇 단계의 과정을 통해 시행되는데 개발자가 명령어를 하나하나 실행하기에는 수고가 너무 많다.

따라서 명령어들을 모아놓은 쉘 스크립트를 작성하여 종료와 배포에 대한 편의성을 늘릴 수 있다.


종료 스크립트 작성하기

현재 실행 중인 파일을 중단시키는 과정은 2단계로 나뉜다.

  1. 현재 실행중인 .jar 프로세스의 PID(Process ID)를 찾는다.
  2. kill 명령어를 통해 해당 PID를 중단시킨다.

 

우선 vim으로 스크립트 파일을 하나 생성한다.

vim spring-stop.sh // .sh 확장자의 vim 파일을 하나 생성한다.

vim 쓰기모드로 들어간 후 필요한 명령어를 작성한다.

echo "Springboot Stop...." // echo 콘솔에 메시지를 출력한다.

SPRING_PID=$(pgrep -f .jar) // pgrep 평령어를 통해 pid를 추출한다. -f는 프로세스 이름으로 찾는 옵션이다.

echo $SPRING_PID

kill -15 $SPRING_PID // 해당 PID 프로세스 종료
  • kill의 -15옵션은 프로세스에게 프로그램을 정상적으로 종료하도록 요청하는 시그널이다. 하지만 일정시간 내에 종료되지 않으면 시스템은 프로세스를 강제 종료시킨다.

종료 스크립트 실행

배포 스크립트 작성하기

배포를 하는 과정은 아래와 같다.

  1. 해당 폴더가 있는 디렉터리로 이동한다.
  2. git pull 명령어를 통해 master 브랜치의 최신 내용을 가져온다.
  3. ./gradlew build 명령어를 통해 현재 파일을 빌드한다.
  4. .jar 파일이 있는 폴더로 이동한 후 실행시킨다.

 

REPOSITORY=/home/ubuntu
PROJECT=aws-v1 // 프로젝트 폴더

cd $REPOSITORY/$PROJECT // 이동

echo "> Git Pull"

git pull // git에서 pull

echo "> 프로젝트  Build 시작"

./gradlew build // build를 통한 jar파일 생성

CURRENT_PID=$(pgrep -f .jar) // PID 확인

echo "현재 구동중인 애플리케이션 PID : $CURRENT_PID"

if [ -z "$CURRENT_PID" ]; then // PID가 없다면 종료 명령어를 내리지 않는다.
	echo "> 현재 구동 중인 애플리케이션이 없습니다."
else
	echo "> 현재 실행중인 애플리케이션을 종료합니다."
    cd .. 
    ./spring-stop.sh // 종료 스크립트 실행
    cd $PROJECT
    sleep 5
fi

echo "> 새 애플리케이션 배포"

cd build/libs

nohup java -jar *.jar & // .jar 파일 실행
  • if-else를 통해 현재 실행되고 있는 프로세스가 있을 경우에만 종료 스크립트를 통해 종료를 하도록 했다.

배포 스크립트 실행

 


주의!!

해당 스크립트를 실행하려고 하면 권한이 없다고 오류가 뜬다.

그래서 해당 스크립트를 작성하고 하래의 명령어를 통해 권한을 부여해야 한다.

chmod u+x spring-stop.sh
chmod u+x spring-start.sh
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함