본문 바로가기
DevOps

Ubuntu 환경에서 Spring Boot Application을 service로 등록하기

by 흑시바 2024. 6. 8.

일반적으로 리눅스 백그라운드 환경에서 스프링 부트 애플리케이션을 간단하고 빠르게 실행할 때는 nohup java -jar 명령어를 이용한다. 하지만 nohup 명령어로 실행하는 것은 로그 관리, 서비스 자동 재시작, 자원 관리 등 애플리케이션 운영에 필요한 여러 필요 사항을 쉽게 구현하기 어려운 문제를 가지고 있다.

 

스프링 부트 애플리케이션을 service로 등록해서 활용하는 것이 더욱 안정적이고, 한 번 구축해 놓으면 나중에 개발 단계나 운영 단계에서 훨씬 편리하기 때문에 유용하다.

 

아래는 우분투 환경에서 shiba-server-0.0.1-SNAPSHOT.jar 스프링 부트 애플리케이션을 'shiba' 라는 서비스로 등록하기 위한 과정을 단계별로 설명한다.

1. JAR 파일 준비

먼저, 실행할 JAR 파일 (hello.jar)을 준비하고, 이를 적절한 디렉터리에 배치한다. 예를 들어, /home/shiba/app 디렉터리에 배치한다고 가정한다.

 

sudo mkdir -p /home/shiba/app
sudo cp app/shiba-server-0.0.1-SNAPSHOT.jar /home/shiba/app

2. 서비스 유닛 파일 작성

Systemd 서비스 유닛 파일을 작성하여 JAR 파일을 서비스로 등록한다. 유닛 파일은 /etc/systemd/system 디렉토리에 위치해야 한다.

 

sudo vi /etc/systemd/system/shiba.service


유닛 파일에 다음 내용을 추가한다.

 

[Unit]
Description=Shiba Spring Web Application
After=network.target

[Service]
User=shiba
ExecStart=/usr/bin/java -jar /home/shiba/app/shiba-server-0.0.1-SNAPSHOT.jar
SuccessExitStatus=143
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target

[Unit] 섹션

서비스의 메타데이터와 의존성을 정의한다.


Description: 서비스에 대한 설명이다.
After: 이 서비스가 시작되기 전에 완료되어야 하는 서비스. 여기서는 네트워크가 활성화된 후에 시작되도록 설정한다.

[Service] 섹션

서비스의 실행 방법과 동작을 정의한다.

 

User: 서비스를 실행할 사용자. shiba 대신 실제 사용자 이름으로 변경한다. (반드시 권한이 있는 사용자)
ExecStart: 서비스를 시작할 때 실행할 명령어.
SuccessExitStatus: 정상 종료 상태 코드를 지정한다. (예: 143은 SIGTERM 신호에 의한 종료)
Restart: 서비스가 종료되었을 때 자동으로 재시작할 조건 (서비스가 실패할 경우 재시작하도록 설정)
RestartSec: 재시작하기 전에 대기할 시간(초)

[Install] 섹션

서비스가 설치될 때의 동작을 정의한다.

 

WantedBy: 서비스가 언제 시작될지를 정의한다. (다중 사용자 모드에서 시작되도록 설정)

3. 서비스 파일 권한 설정

서비스 유닛 파일의 권한을 설정한다.

 

sudo chmod 644 /etc/systemd/system/shiba.service

4. 서비스 리로드 및 활성화

Systemd를 리로드하여 새로운 서비스 유닛 파일을 인식시키고, 서비스를 활성화한다.

 

sudo systemctl daemon-reload
sudo systemctl enable shiba.service

5. 서비스 시작

서비스를 시작하고 상태를 확인한다.

 

sudo systemctl start shiba.service
sudo systemctl status shiba.service

6. 로그 확인

서비스 로그를 확인하여 애플리케이션이 정상적으로 실행되고 있는지 확인한다.

 

sudo journalctl -u shiba.service -n 1000 -f

 

댓글