개발/개발관련

[개발관련] BootJar 서비스 등록, 리눅스에서 application.properties, logback.xml 수정

mabb 2024. 8. 8. 12:47
반응형

들어가며

주기적으로 외부 API에서 데이터를 수집하여 DB에 적재하고, 알람 목적으로 웹 애플리케이션 백엔드 단의 웹소켓 용 API에 데이터를 전달하는 소스를 작성하였습니다. java17, Spring boot 기반이며 application.properties 파일에 외부 API의 URL과 토큰, 그리고 기타 설정 정보를 저장해두었습니다. 빌드한 파일을 고객사에 미리 전달하면 작업 서버로 파일을 옮겨주시는 방식이기 때문에 리눅스에서 bootJar 내의 application.properties 파일을 수정할 필요가 있었습니다. 이는 간단하게 zip 명령어로 수정이 가능합니다. 같은 방식으로 logback.xml을 수정하여 log 파일의 저장 주기나 경로도 즉석에서 변경할 수 있습니다.

현 회사에서 이전에는 bootJar의 enable을 처리할 때 셸 스크립트와 크론을 사용하였습니다. 예를 들면 bootJar를 실행시키는 셸 스크립트를 크론 등록하는 것입니다. 해당 스크립트에서는 ps ..... | wc -l  의 조건을 주어 현재 프로세스가 가동중인지 판단하고 if문으로 가동하거나 가동하지 않는 식으로 처리를 하였습니다. 아무래도 서비스 등록을 하는 것이 깔끔한 것 같아 저는 bootJar로 빌드한 파일을 서비스로 등록하여 관리하고 있습니다.

 

목적

1. bootJar의 설정 파일 (application.yml, application.properties, logback.xml 등)을 리눅스 환경에서 수정하기

2. bootJar를 서비스로 등록하여 관리하기

 

bootJar의 설정 파일을 리눅스 환경에서 수정하기

: 압축해제한 파일들을 재 압축하는 식으로 진행하면 실행이 되지 않습니다. MANIFEST 설정이 깨지는 것으로 추정하고 있습니다. 그렇기 때문에 jar에 해당 경로 파일을 추가 압축 하는 식으로 진행하면 됩니다.

1) bootJar 압축 해제
: bootJar 파일이 있는 디렉터리에서 압축을 해제합니다.
  # unzip ./bootJar.jar

unzip ./bootJar.jar

2) ./BOOT_INF/classes 경로 내의 설정 파일 수정
: 압축 해제한 BOOT-INF 내의 경로에서 설정파일을 vi 편집기로 수정합니다.
  # vi ./BOOT-INF/classes/application.properties

3) 재압축
: 기존의 bootJar 파일에 수정한 설정 파일을 경로를 맞추어서 추가 압축 해줍니다. ( bootJar 내의 파일을 덮어쓰기 합니다.)
  # zip ./bootJar.jar ./BOOT-INF/classes/application.properties

zip ./bootJar.jar ./BOOT-INF/claases/application.properties

 

bootJar를 서비스로 등록하기

1) 서비스 파일 생성 및 작성
vi /etc/systemd/system/{서비스명}.service

 
[Unit]

Description=EWP Tag GW Collector



[Service]

ExecStart=/bin/bash -c "exec java -jar /data/ewp-tag-collector/TagLocationAndGWCollector-0.0.1-SNAPSHOT.jar"



[Install]

WantedBy=multi-user.target

2) systemctl 리로드
  # systemctl daemon-reload

3) 서비스 실행
  # systemctl start {서비스명}.service

반응형