[Linux] Linux에서 SpringBoot jar 파일 서비스 등록해 자동실행 되게 하기(+ 서비스 관련 기본 명령어들)
서비스 등록을 위한 설정 파일 작성하기
1. 서비스 만들기
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'로 설정하면 다중 사용자로 설정된다.
서비스 등록하기
daemon-reload
서비스 재시작
systemctl restart ${서비스명}
현재 구동되는 서비스들 목록 조회
systemctl -t service list-unit-files
서비스 시작
systemctl start ${서비스명}
서비스 종료
systemctl stop ${서비스명}
서비스 상태확인
systemctl status ${서비스명}
'코딩 > Spring' 카테고리의 다른 글
[Spring] Jasypt로 설정 암호화 방법 (0) | 2023.01.19 |
---|---|
[Spring]Jpa insert default value (0) | 2022.12.14 |
[Spring] JPA native query 사용시 dto mapping 방법 (0) | 2022.11.29 |
[Spring] JPA In 절 사용하기 (1) | 2022.11.29 |
[Spring] DB커넥션풀과 Hikari CP란? (0) | 2022.11.23 |