본문 바로가기
Server

[Ubuntu] 애플리케이션 백그라운드 실행하기

by hunbal 2023. 9. 22.
SMALL

NCP로 서버를 생성하고 Ubuntu로 스프링 부트 애플리케이션을 배포한 후, SSH 세션 연결이 끊기거나 로컬 컴퓨터를 종료하면 스프링 부트 서비스가 중단되는 문제가 발생하였다. 나는 배포 후 가상 서버가 운영중이기만 하면 내 로컬 컴퓨터에서 연결이 끊어져도 문제 없을거라 생각했지만,  백그라운드 실행 설정을 추가해줘야 한다는 것을 알게 되었다.

 

Ubuntu 기준으로 어플리케이션을 백그라운드 실행 가능하도록 설정하여 터미널이나 SSH 연결 중단, PC 종료 후에도 서비스가 유지되게 하는 방법에 대해 기록하려 한다.

 


 

1.Systemd 서비스로 등록

 

systemd : 우분투와 다른 많은 리눅스 배포판에서 사용되는 초기화 시스템이다. systemd를 사용하여 스프링 부트 애플리케이션을 부팅 시 자동 실행할 수 있다.

 

Putty로 Ubuntu 가상 서버에 접속 한 후 systemd 서비스 파일을 생성한다. 아래 명령어를 입력하자.

$ sudo nano /etc/systemd/system/서비스이름.service

가상 서버 /etc/systemd/system 경로에 service 파일이 생성된다.

 

 

 

2.service 파일 작성

생성한 service 파일을 아래 명령어 입력 후 편집해준다.
sudo nano /etc/systemd/system/'서비스이름'.service

$ sudo nano /etc/systemd/system/sfdb2023springboot.service
[Unit]
Description=My Spring Boot Application

[Service]
ExecStart=/usr/bin/java -jar /path/to/your/'서비스이름'.jar
WorkingDirectory=/path/to/your/app/directory
Restart=always
User=your-username
Type=simple

[Install]
WantedBy=multi-user.target

# ExecStart: 스프링 부트 JAR 파일의 경로와 Java 명령을 지정
# WorkingDirectory: 애플리케이션을 실행할 디렉토리를 지정
# User: 애플리케이션을 실행할 사용자 이름을 지정
# Restart: 서비스가 실패하거나 종료될 때 자동으로 다시 시작하도록 설정

 

JAR 파일 경로와 실행 디렉토리를 구조에 맞게 지정해주어야 한다.

편집 후 Ctrl + X , Y 선택 후 Enter 입력하여 빠져나온다.

 

 


3. 서비스 시작 및 자동 실행 설정

 

 systemd에 서비스를 등록하고 부팅 시 자동 실행하도록 설정하면 완료된다.

$ sudo systemctl enable 서비스이름
$ sudo systemctl start 서비스이름

 


 

명령어 실행 후 Putty(SSH 세션) 연결을 끊거나 로컬 컴퓨터가 종료된 후에도 스프링 서버가 유지되는 것을 확인할 수 있을 것이다! 👍

 

 

 

 

댓글