Skip to main content

4-06. 서버 스크립트

About 1 minJavaSpringAWScrashcoursejavajdkjdk8streamspringspringframeworkspringbootawsaws-ec2

4-06. 서버 스크립트 관련


4-06. 서버 스크립트

점프 투 스프링부트 - WikiDocs

이전 장에서 다음의 명령을 실행하여 SBB 배포파일을 실행하여 서비스를 실행했다.

java -jar sbb-0.0.1-SNAPSHOT.jar

하지만 위와 같이 단순하게 실행하면 서버에 접속한 터미널을 종료하면 서비스도 중단된다. 따라서 이를 방지하기 위해서는 백그라운드로 서비스를 실행해야 한다.

이번 장에서는 백그라운드로 서비스를 시작하는 스크립트(shell script)와 서비스를 중지하는 스크립트를 만들어 보자.


SBB 시작 스크립트

SBB 서비스를 실행하는 시작 스크립트를 다음과 같이 작성하자. 이때 서버에서는 STS와 같은 편집기를 사용할 수 없으므로 여기서는 nano 편집기를 사용하자.

터미널에서 sbb 디렉터리로 이동한 다음 nano start.sh 명령을 수행하자.

cd sbb
nano start.sh
그러면 다음과 같은 화면이 나타난다. 이 화면이 nano 편집기 화면이다.
그러면 다음과 같은 화면이 나타난다. 이 화면이 nano 편집기 화면이다.

아쉽게도 nano 편집기에서는 마우스를 사용할 수 없다. 하지만 화살표 키로 커서를 움직이며 편집할 수 있으므로 그다지 어렵지 않다. 편집기 아래에는 여러 단축키 기능이 표시되어 있다.

^Ctrl을 의미한다. ^XCtrlX를 동시에 누르라는 뜻이다.

nano 편집기에서 다음 내용을 입력하고 Ctrl+O를 눌러서 start.sh 파일을 저장한 뒤 Ctrl+X를 눌러서 편집기를 종료하자.

파일명: /home/ubuntu/sbb/start.sh

#!/bin/bash

JAR=sbb-0.0.1-SNAPSHOT.jar
LOG=/home/ubuntu/sbb/sbb.log

nohup java -jar $JAR > $LOG 2>&1 &

JAR 변수는 배포파일명이고 LOG 변수는 로그를 출력할 파일명이다.

로그 파일에는 STS에서 로컬 서버 실행시 콘솔창에 표시되던 것과 동일한 로그들이 출력된다.

위 명령어에서 nohup는 프로세스를 실행한 터미널의 연결이 끊어지더라도 프로세스가 지속적으로 동작 할 수 있게 해주는 명령어이고 > $LOG는 프로세스의 출력을 로그파일에 저장하라는 의미이다. 2>&1은 오류(stderr) 출력을 일반(stdout) 출력으로 전달하라는 의미이다. 따라서 일반 로그와 오류 로그가 모두 sbb.log 파일에 저장될 것이다. 그리고 마지막의 & 문자는 백그라운드로 명령을 실행하라는 의미이다.

서버 로그를 잘 관리하기 위한 logback을 사용하는 방법은 조금 나중에 알아본다.

그리고 다음과 같이 스크립트명만 입력하더라도 실행이 될 수 있게 실행권한을 부여하자.

chmod +x start.sh

그리고 다음과 같이 서버를 실행하자.

./start.sh
#

./start.sh에서 ./의 의미는 현재 디렉터리를 의미한다.


SBB 중지 스크립트

실행중인 SBB 서비스를 중지하기 위한 stop.sh 스크립트는 다음과 같이 작성하자.

파일명: /home/ubuntu/sbb/stop.sh

#!/bin/bash

SBB_PID=$(ps -ef | grep java | grep sbb | awk '{print $2}')

if [ -z "$SBB_PID" ];
then
    echo "SBB is not running"
else
    kill -9 $SBB_PID
    echo "SBB stopped."
fi

SBB_PID는 현재 실행중인 SBB 서비스의 프로세스 아이디이다. 만약 SBB 서비스의 프로세스가 없다면 "SBB is not running" 이라는 메시지를 출력하고 프로세스가 있다면 kill -9로 해당 프로세스를 강제로 종료한다.

그리고 다음과 같이 스크립트명만 입력하더라도 실행이 될 수 있게 실행권한을 부여하자.

chmod +x stop.sh

서비스를 중지하려면 다음과 같이 실행한다.

./stop.sh

SBB 재시작

만약 SBB 프로그램이 변경되었다면 jar 파일을 변경한 후에 stop.shstart.sh을 순서대로 실행하면 된다.

./stop.sh # 중지
./start.sh # 시작