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 세션) 연결을 끊거나 로컬 컴퓨터가 종료된 후에도 스프링 서버가 유지되는 것을 확인할 수 있을 것이다! 👍
'Server' 카테고리의 다른 글
[Node.js] Node.js의 특징 (0) | 2024.01.16 |
---|---|
[구글 파이어베이스 호스팅(Firebase Hosting)] 프론트엔드 리액트 프로젝트 배포하기 (0) | 2023.09.22 |
[네이버 클라우드 플랫폼(NCP)]프로젝트 배포하기 2.서버 접속 후 스프링부트 배포하기 (0) | 2023.09.22 |
[네이버 클라우드 플랫폼(NCP)]프로젝트 배포하기 1.서버 생성 (1) | 2023.09.21 |
댓글