다음 포스팅에서 이어진다.
https://123okk2.tistory.com/387
프로그램을 만들었으면 클라이언트 혹은 서버에 해당 프로그램을 배포해야 한다.
하지만 동일 프로그램을 실행시키더라도 실행하는 환경에 따라 application.properties (혹은 yml), bootstrap.properties 등의 설정 파일의 값은 바뀌어야 한다.
물론 이 부분은 윈도우는 7Zip등을 통해, 리눅스는 vim 등을 통해 얼마든지 수정은 가능하지만, 실행 스크립트를 만들어놓으면 보다 쉽게 이러한 환경 설정값들을 수정할 수 있다.
금주만 해도 7개 모듈에 대한 실행 스크립트를 제작했다. 하지만 스크립트를 제작할 때마다 직전에 작성한 스크립트를 참고하여 제작하는 내 모습을 보고, 까먹지 않기 위해 스크립트 제작 방법을 기재해놓을까 한다.
먼저 스크립트로 실행할 프로그램이 필요하다.
간단하게 MariaDB에서 특정 테이블 데이터를 GET 할 수 있는 프로그램을 제작한다.
위 프로그램의 동작을 위해서는 아래와 같은 설정 값들이 필요하다.
server.address=0.0.0.0
server.port=8080
#Log 설정
logging.level.root=info
logging.file.path=/logs
#JPA 설정
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=update
#MariaDB 설정
spring.datasource.driverClassName=org.mariadb.jdbc.Driver
spring.datasource.url=jdbc:mariadb://xxx.xxx.xxx.xxx:3306/scriptTest?allowMultiQueries=true&useOldAliasMetadataBehavior=true&useSSL=false
spring.datasource.username=root
spring.datasource.password=0000
이 중 환경에 따라 달라지는 설정값들을 선택한다. 위 프로그램에서는 server.address를 제외한 모든 설정 값들이 환경에 따라 변경되어야 할 것으로 보인다.
그러면 이제 변경되어야 할 값들을 쉘 스크립트에서 변수로 선언하고, 각 변수들을 java -jar 명령어 실행 시 옵션으로 넣어주면 된다.
예시는 아래와 같다.
#!/bin/sh
## 1. 파라미터 확인
if [ -z $1 ]; then
echo "enter command"
echo "ex) ./run.sh {start|stop}"
exit
fi
## 2. 변수 설정 (배포 시 변경해야 하는 값)
#jar 파일 경로 및 이름
JAR_PATH=/app
JAR_FILE=proxyTest-0.0.1-SNAPSHOT.jar
#PORT 설정 관련 변수
PORT=8080
#LOG 설정 관련 변수
LOG_LEVEL=DEBUG
LOG_PATH=$JAR_PATH/logs
#JPA 설정 관련 변수
SHOW_SQL_LOG=true
DDL_AUTO=update
#DB 설정
DB_CLASS=org.mariadb.jdbc.Driver
DB_URL=jdbc:mariadb://xxx.xxx.xxx.xxx:3306/scriptTest?allowMultiQueries=true&useOldAliasMetadataBehavior=true&useSSL=false
DB_USER=root
DB_PASSWORD=0000
## 3. 프로그램 실행
# 기본 옵션 설정
JAVA_OPT="-Xmx64m -Xmx256m "
# 포트 설정
JAVA_OPT=$JAVA_OPT" -Dserver.port=$PORT"
# 로그 설정
JAVA_OPT=$JAVA_OPT" -Dlogging.level.root=$LOG_LEVEL -Dlogging.file.path=$LOG_PATH"
# JPA 설정
JAVA_OPT=$JAVA_OPT" -Dspring.jpa.show-sql=$SHOW_SQL_LOG -Dspring.jpa.hibernate.ddl-auto=$DDL_AUTO"
# DB 설정
JAVA_OPT=$JAVA_OPT" -Dspring.datasource.driverClassName=$DB_CLASS -Dspring.datasource.url=$DB_URL -Dspring.datasource.username=$DB_USER -Dspring.datasource.password=$DB_PASSWORD"
case $1 in
start)
echo "start application"
nohup java $JAVA_OPT -jar $JAR_PATH/$JAR_FILE > /dev/null 2> /dev/null &
# PID 저장
echo $! > $JAR_PATH/application.pid
echo "application started"
;;
stop)
# 프로그램이 실행중이 아니면 종료
if [ -f $JAR_PATH/application.pid ]; then
echo "stop application"
# Process ID 식별
PID=`cat $JAR_PATH/application.pid`
echo "application is running as $PID"
# 종료
kill $PID
echo "application stopped"
# pid 파일 삭제
rm /$JAR_PATH/application.pid
else
echo "application not running"
fi
;;
esac
이제 /app 폴더에 logs폴더를 만들고 run.sh 스크립트 파일과 jar 파일을 넣은 후 아래 명령어를 통해 프로그램을 켜고 끌 수 있다.
./run.sh start
./run.sh stop
그리고 설정값에 따라 /app/logs 내부에 spring.log라는 이름으로 로그 파일이 생성되어 로그가 저장된다.
물론 로그 파일명과 로그로테이션 설정은 로그백 설정을 통해 별도로 가능하다.
'실습 > 리눅스 서버 + 스프링 부트' 카테고리의 다른 글
application.yml 적용법 (0) | 2023.01.15 |
---|---|
JPA에서 외래키 사용 (1) | 2022.12.13 |
[Shell Script] 쉘 스크립트 문법 (0) | 2022.08.16 |
JPA 페이징 (0) | 2022.07.25 |
application.properties (yml) 암호화 (0) | 2022.07.25 |