우분투에서 서비스파일 등록 이유
어느날 차장님께서 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