본문 바로가기

IT

ubuntu server systemd 에 spring boot jar 서비스로 등록하기

반응형

Ubuntu 16.04 LTS Server systemd 에 Spring Boot 로 만든 웹 어플리케이션 jar 를 서비스로 등록하여 Server 를 재시작 할 때 자동으로 구동되도록 설정해도록 하겠습니다.



일단 Spring Boot 기반의 웹 어플리케이션 jar 파일은 이미 만들어져있고 java -jar application_name.jar 로 실행이 가능하고, systemd 를 사용하는 ubuntu server 가 이미 있다는 전제하에 글을 보시기 바랍니다.


일단 서버에 접속하여 jar 파일을 특정한 위치에 업로드 합니다.


글에서는 ubuntu 사용자 계정을 vmapi 라고 하였습니다. 각자 자신의 환경에 맞는 것으로 생각하고 글을 읽어주세요.


서비스에 등록하려면 systemd 의 요구사항에 맞는 서비스 설정파일이 필요합니다.


저는 api.service 라는 파일을 생성하였고, 내용은 다음과 같습니다.


[Unit]
Description=API Service
After=syslog.target
[Service]
Environment="SERVICE_SLOT_NAME=vm-api"
SyslogIdentifier=ApiService
WorkingDirectory=/home/vmapi/apiApp
ExecStart=/usr/bin/java -jar api.jar
User=vmapi
Type=simple
[Install]
WantedBy=multi-user.target


필요없는 부분은 과감시 생략하고, 중요하다고 생각되는 부분만 설명하고 넘어가겠습니다.

https://docs.spring.io/spring-boot/docs/current/reference/html/deployment-install.html

자세한 내용은 위 링크를 확인해보시기 바랍니다.


위 내용을 파일로 만들어서 api.service 라는 파일을 만들었습니다.

글에 api.jar 와 api.service 파일은 /home/vmapi/apiApp 폴더에 저장해 놓았습니다.


이제부터는 터미널이 필요합니다.


$ sudo systemctl daemon-reload


systemd daemon 을 reload 합니다.


$ sudo systemctl enable /home/vmapi/apiApp/api.service


작성했던 api.service 를 systemd 서비스에 추가합니다.

링크가 /etc/systemd/system 폴더에 api.service 심볼릭 링크가 생성된 것을 확인하시기 바랍니다.

정상적으로 심볼릭 링크가 생성되었다면 다음 명령어를 이용해서 실행해봅시다.


$ sudo systemd start api.service


ps, top, htop 등 실행중인 프로세스를 확인할 수 있는 앱을 이용하여 java -jar api.jar 가 잘 실행되고 있는지 확인합니다.


그리고 마지막으로 api.jar 가 8080 등으로 서비스 중이라면 정상적으로 서비스가 되는지 확인합니다.


여기까지 정상적으로 잘 진행되었다면 sudo reboot 명령으로 서버를 리부팅해봅니다.

리부팅이 완료되면 별도의 명령어를 사용하지 않고, 서비스가 잘 로딩되었는지 확인하면 끝입니다.


이상 ubuntu 의 systemd 에 spring boot jar 를 서비스로 등록하기였습니다.

반응형