728x90
서론
기존 Spring Boot 서버를 배포하는 부분에서 서버 종료, 시작을 일일히 제어해야하는 불편함이 존재하였다.
간단한 쉘 스크립트 개발을 통해 서버를 종료하고 시작하는 기능을 탑재하여 수작업에서 오는 휴먼에러를 최소화하고자 한다.
기존 배포 정책
- ps -ef | grep java : 활성화된 프로세스 중 java를 활용하는 Spring Boot 서버의 PID를 찾기 위한 명령어
- kill or pkill {PID} : 1번에서 확인한 Spring Boot의 PID를 종료하는 명령어
- 서버 종료가 확정되었다고 할 수 없는 명령어
- 프로세스가 종료되지 않은 상태에서 서버 재시작 시
- 서버 재시작 프로세스 : 동일 포트 사용 충돌로 중지
- 기존 서버 프로세스 : kill 명령어를 통해 내부 쓰레드 정리 후 중지
- 결론 : 서버 운영이 중단될 수 있는 휴먼에러 발생 가능
- ps -ef | grep java : 실제 서버가 종료되었는지 확인하는 반복 명령어
- nohup java ... -jar server.jar & : 서버를 실행하는 명령어
개선 배포 정책
- 중지 스크립트(stop.sh)
- pgrep -f $JAR_FILE_NAME : 서버 시작에 사용한 jar 파일명을 기준으로 PID를 검색하는 명령어
- kill -9 $PID : 프로세스 kill 명령어 옵션으로 강제종료를 수행하는 명령어
#!/bin/bash
JAR_FILE_NAME=server.jar
# Get the PID from the file
PID=$(pgrep -f $JAR_FILE_NAME)
if [ -z "$PID" ]; then
echo "> 현재구동중인 애플리케이션이 없으므로 종료하지 않습니다."
else
echo "> kill -9 $PID"
kill -9 $PID
echo "> 실행중인 애플리케이션을 종료하고 있습니다..."
sleep 10
fi
- 시작 스크립트(start.sh)
- nohup ~ : Spring Boot jar 실행 명령어
- $! : 실행한 프로세스의 PID를 콘솔로 보여주는 변수
#!/bin/bash
# Start the application
nohup java \
-Dspring.profiles.active=dev \
-jar server.jar &
echo "> Application started with PID $!"
- 재시작 스크립트(restart.sh)
#!/bin/bash
# Stop the application
./stop.sh
# Start the application
./start.sh
728x90
반응형
'Develop' 카테고리의 다른 글
[Spring] Spring Bean 생명주기와 @Annotation 정리 (0) | 2024.09.10 |
---|---|
[Flutter] Uri를 활용한 SMS 보내기 기능 구현 (0) | 2024.08.29 |
[SMTP] 수신 메일에서의 hover, onmouse 기능 미지원 이슈 (4) | 2024.08.28 |
[Java] params URLEncoder 처리 (0) | 2024.07.30 |
[Spring Boot] IndexOutOfBoundsException 개선 작업 (0) | 2024.07.24 |
[Java] Mybatis Column '{컬럼명}' in IN/ALL/ANY subquery is ambiguous 해결 (0) | 2024.07.19 |
[Flutter] 안드로이드 스튜디오 Profiler, Devtools (0) | 2024.07.12 |
[JDK, PASS] cannot access class com.sun.crypto.provider.SunJCE (0) | 2024.06.20 |