카테고리 없음

Linux Spring Boot jar 파일 서비스 등록 자동실행

광82 2023. 9. 15. 09:42
반응형

서비스 등록을 위한 설정 파일 작성하기

우선 자동실행되게 하기 위해서는 해당 jar 파일을 리눅스로 되어 있는 서버에 서비스 등록해야 한다.

이 서비스 등록은 우선 서비스 설정 파일을 만들어야 가능하다.

 

아래 명령어를 통해 서비스 등록 파일을 해당 위치에 작성해준다.

(vi가 아니라 vim이 설치 되어 있다면 vim을 사용해도 된다.)

vi /etc/systemd/system/${service name}.service

 

파일작성기에 아래 내용을 작성한다.

[Unit]
Description=Service Description
After=syslog.target network.target postgresql.service

[Service]
ExecStart=/bin/bash -c "exec java -jar /usr/local/server/test.jar"
Restart=on-failure
RestartSec=10

User=root
Group=root

[Install]
WantedBy=multi-user.target

 

1. [Unit]

1.1 Description

Description=Service Description

이건 말 그대로 해당 서비스에 대한 설명이다. 추후 서비스를 실행하고 서비스의 status를 확인했을 때 표시되는 등 해당 서비스가 어떤 서비스인지에 대해 설명을 작성하면 된다.

 

1.2 After

After=syslog.target network.target postgresql.service

서비스가 언제 실행될지에 대해 정할 수 있는 부분이다. 서비스가 실행되기 전에 먼저 설정되어야하는 것들이나 실행되어야 하는 것들이 있을 경우 설정한다.

- syslog.target: 시스템 로그 관련된 것이 잘 설정된 후를 의미한다.

- network.target: 네트워크가 연결된 후를 의미한다.

- postgresql.service: 이 부분은 커스텀으로 넣은 부분으로 백엔드 서버가 postgresql DB와 연결해서 사용하는지라 postgresql 서비스가 시작된 후를 위해서 넣어봤다.

 

2. [Service]

2.1 ExecStart

ExecStart=/bin/bash -c "exec java -jar /usr/local/server/test.jar"

이 부분이 바로 jar 파일을 실행시키는 부분이다. '/bin/bash -c'를 입력하고 "exec "(쌍따옴표) 뒤에 해당 jar 파일을 실행시키는 명령어를 입력하면 된다. 참고로 현재까지 jar 파일을 수동으로 실행시킬 때는 백그라운드에서 실행시키기 위해서 nohup과 &를 사용했었는데 여기서는 그럴 필요 없이 그냥 입력해주면 된다.

 

2.2 Restart

Restart=on-failure

서비스가 언제 다시 시작할지에 대한 것을 설정할 수 있는 부분이다.

'on-failure'는 서비스를 실행시키는데 실패하면 다시 시작시키겠다는 의미의 설정이다.

그 밖에 'always'와 같은 다른 설정도 있다. 참고로 'always'의 경우는 서비스가 정상 종료되었다 해도 'on-failure'와 다르게 다시 시작하겠다는 뜻이다.

 

기본 값은 no로 서비스를 재시작하지 않겠다고 설정되어 있다.

 

2.3 RestartSec

RestartSec=10

서비스를 다시 시작하기 전에 몇 초동안 잠시 기다릴지에 대한 설정이다. 나는 10초로 조금 텀을 뒀지만 1초로 설정해놔도 무방하다.

기본 값은 100ms이다.

 

2.4 User, Group

User=root
Group=root

이건 해당 서비스를 실행하기 위한 권한이다.

 

 

3. [Install]

3.1 WantedBy

WantedBy=multi-user.target

서비스 run level을 설정하는 부분이다. 'multi-user.target'로 설정하면 다중 사용자로 설정된다.

 

 

작성한 서비스 설정파일로 서비스 등록하기

위의 설정파일을 작성 완료 한 후 ESC > wq를 입력하고 엔터를 치면 파일 작성이 완료된다.

그 후에 아래 명령을 치면 리눅스에서 서비스 파일들을 읽고 자동으로 새로 생긴 서비스의 경우 서비스 등록을 해준다.

daemon-reload

 

서비스 재시작

위 'daemon-reload' 명령어로 서비스를 등록해주고 서비스를 재시작해준다.

참고로 작성한 파일 명 그대로 '${서비스명}.service'으로도 명령어를 사용할 수 있고 '${서비스명}'으로도 명령어를 사용할 수 있다.

systemctl restart ${서비스명}

 

 

현재 구동되는 서비스들 목록 조회

서비스 등록을 정상적으로 등록됐다면 현재 서비스들의 리스트를 조회했을 때 해당 리스트에서 등록한 서비스를 확인할 수 있다.

아래 명령을 쳐서 서비스 리스트를 확인할 수 있으며 서버가 재부팅 되었을 때 서비스가 자동으로 시작되는지의 여부도 확인할 수 있다.

systemctl -t service list-unit-files

 

위 명령어나 위의 리스트에서 나온 것들에 대해서는 다 공부하지는 못했지만 STATE 부분이 enabled 되어 있을 경우 서비스가 서버 리부팅시 재시작 된다.

 

만일 등록한 서비스가 disabled로 설정되어 있다면 아래 명령어를 통해 enabled로 설정해주면 된다.

systemctl enable ${서비스명}

 

 

서비스 명령어(+ 상태 확인하기)

등록된 서비스는 아래 명령어로 다룰 수 있다.

1. 서비스 시작

systemctl start ${서비스명}

 

2. 서비스 재시작

systemctl restart ${서비스명}

 

3. 서비스 종료

systemctl stop ${서비스명}

 

4. 서비스 상태 확인하기

systemctl status ${서비스명}

 

'systemctl status ${서비스명}'을 치면 아래와 같이 해당 서비스 상태를 확인할 수 있다.

서비스 설정 파일에 지정해놓은 Description도 볼 수 있고 해당 서비스가 제대로 돌아가고 있는지도 확인할 수 있다. 이를 통해 내가 서비스 설정 파일을 잘 등록했는지도 확인할 수 있고, 서비스에 다른 문제가 없는지 확인할 수 있다.

 

반응형