Ubuntu 16.04 LTS 서비스파일 등록하기

linux

우분투에서 서비스파일 등록 이유

어느날 차장님께서 jar파일을 실행 후 그 콘솔을 닫으면 그 서비스가 종료된다고 말씀한 적이 있다.
서비스파일 없이 putty로 접속 후에 jar파일을 실행하고 그 putty를 종료하면 그 서비스가 종료되는것이다.
하지만 nginx같은경우는 service nginx start를 하게되면 그 putty를 꺼도 계속 켜있는데 이렇게 nginx 처럼 나의 jar파일을 서비스화 시키려고 한다. 대부분의 자료는 여기 에서 확인할 수 있다.

=======================================================================
우분투 16.04LTS 버전 부터 된다고한다.

나는 systemd를 이용하여 등록하였다.

$ vi /etc/systemd/system/myapp.service

myapp.service 파일을 수정한다.

#myapp.service
[Unit]
Description = Hj's Jwt app
After = network.target

[Service]
ExecStart = /bin/bash -c "exec java -Dspring.profiles.active=DEV1 -jar /home/ubuntu/jwt-0.0.1-SNAPSHOT.jar"


User = ubuntu
Group = ubuntu

[Install]
WantedBy = multi-user.target

를 추가 후 저장한다.

나는 전에하던 로드밸런싱때문에 2개를 만들었다.

#myapp2.service
[Unit]
Description = myapp2
After = network.target

[Service]
ExecStart = /bin/bash -c "exec java -jar /home/ubuntu/jwt-0.0.1-SNAPSHOT.jar"

User = ubuntu
Group = ubuntu

[Install]
WantedBy = multi-user.target

이러면 스프링부트 jar파일이 application-DEV1.properties 의 설정을 가진 서비스와 그냥 application.properties 의 설정을 가진 서비스를 시작하기위해 두개의 service파일을 만들었다.

이렇게 추가가 완료되면 등록을 해주어야한다.

$ systemctl enable myapp.service
$ systemctl enable myapp2.service

등록이 완료되면 서비스 시작 및 종료는 다음과 같이하면 된다.

$ systemctl start myapp // myapp 서비스 시작
$ systemctl start myapp2 // myapp2 서비스 시작


$ systemctl stop myapp // myapp 서비스 종료
$ systemctl stop myapp2 // myapp2 서비스 종료

또한 서비스의 실행상태는 다음과 같이 확인한다.

$ systemctl status myapp
$ systemctl status myapp2
효준's profile image

효준

2018-07-31 11:30

다른글 보러가기

nginx에서 로드밸런싱 하기

이전 포스트

SpringBoot에서 웹소켓(Websocket) 구현하기

다음 포스트