이번 포스팅은 쉘 스크립트를 이용하여 이전 포스트에서 사용했던 긴 명령어를 변수 활용 및 서버 실행을 순차적으로 하도록 만들어 실행할 것이다.
먼저 vi 명령어로 start.sh 쉘 스크립트 파일을 생성한다.
vi start.sh
그리고 권한을 부여해야 하는데,
chmod 755 start.sh
간단하게 설명하자면, chmod는 권한을 부여한다는 것이고, 뒤에 755는 사용자에겐 모든 권한을, 그룹사용자 및 기타 사용자는 읽기/실행 권한만 준다는 것이다.
위처럼 권한을 주게되면
요렇게 파일의 색깔이 변한다.
서버 명령어에 대한 포스팅은 따로 작성할 예정이다.
Start.sh
#!/bin/bash
SERVICE_NAME=security
PATH_TO_JAR=/data/security-0.0.1-SNAPSHOT.jar
PID_PATH_NAME=/data/security.pid
PORT=7878
APPLICATION_LOCAL=/data/application.yml
ENV_SET=local
JAVA_HOME=/data/jdk-11.0.22/bin/java
echo "==============================START============================="
echo "Starting $SERVICE_NAME ..."
if [ ! -f $PID_PATH_NAME ]; then
$JAVA_HOME -jar -Dserver.port=$PORT -Dspring.profiles.active=$ENV_SET $PATH_TO_JAR --spring.config.location=file:${APPLICATION_LOCAL} > nohup.out &
echo $! > $PID_PATH_NAME
echo "$SERVICE_NAME started ..."
else
echo "$SERVICE_NAME is already running ..."
fi
echo "================================================================"
간단하게 서버를 실행하는 쉘 스크립트를 작성해봤다.
먼저
1. PID_PATH_NAME은 security.pid 파일에 실행된 프로세스의 pid를 저장하도록 하여 해당 파일의 pid를 확인 후 이미 실행되고 있으면 실행하지 않도록 하였다.
2. 각각 변수를 두어 각 파일의 위치 혹은 포트, 환경을 작성하였다.
3. 실시간 로그를 확인하기 위해 nohup.out 파일에 로그가 쌓이도록 하였다.
4. 명령어 마지막에 & 를 작성하여 백그라운드에서 실행되도록 하였다,
쉘 스크립트 파일 실행은
./start.sh
파일 명 앞에 ./ 를 붙이면 된다.
실행을 하니 echo로 작성한 부분들이 출력되며
실행되는 프로세스를 확인하기 위해
ps -ef
명령어를 통해 확인하였다.
tail -f nohup.out
실시간 로그 확인하는 명령어를 통해
서버가 정상적으로 실행되는 것을 확인했다. (api 호출에 따라 실시간 로그가 올라온다.)
또한
cat security.pid
cat 명령어를 통해 생성된 security.pid 파일에 작성된 프로세스 pid를 확인할 수 있었다.
Stop.sh
#!/bin/bash
SERVICE_NAME=security
PID_PATH_NAME=/data/security.pid
echo "===============================STOP============================="
if [ -f $PID_PATH_NAME ]; then
PID=$(cat $PID_PATH_NAME);
echo "$SERVICE_NAME stoping ..."
kill $PID;
echo "$SERVICE_NAME stopped ..."
rm $PID_PATH_NAME
else
echo "$SERVICE_NAME is not running ..."
fi
echo "================================================================"
stop 쉘 스크립트 파일은 비교적 간단하다.
저장된 security.pid의 pid 를 확인한 후 해당 pid 에 대한 프로세스가 실행되고 있다면 프로세스를 종료시키는 과정을 담았다.
똑같이 stop 스크립트를 실행하면
실행된 서버가 종료되며
프로세스를 확인했을 때 종료된것을 알 수 있다.
'Server > 서버 배포과정' 카테고리의 다른 글
SpringBoot 프로젝트 서버 배포하기 6 - Jenkins 빌드 시 성공/실패 여부를 Email로 전달하기 (0) | 2024.08.07 |
---|---|
SpringBoot 프로젝트 서버 배포하기 5 - Jenkins에서 SSH 설정 및 배포하기 (0) | 2024.08.05 |
SpringBoot 프로젝트 서버 배포하기 4 - jenkins 세팅 및 빌드 (0) | 2024.05.23 |
SpringBoot 프로젝트 서버 배포하기 2 - 환경설정을 서버에 세팅 (0) | 2024.05.21 |
SpringBoot 프로젝트 서버 배포하기 1 - 서버 명령어로 프로젝트 실행 (0) | 2024.05.20 |
댓글