[Java/systemd] 자바 애플리케이션 매니저 systemd 사용법

dani·2026년 1월 25일

Java

목록 보기
9/9

🔸systemd란

[pm2/NodeJS] pm2 자주 쓰는 명령어 정리

지난 시간에는 NodeJS 서버를 사용할 때 이를 리눅스 서버에 배포 시 프로세스를 관리하는 도구인pm2에 대해 정리해보았다. 이번 시간에는 비슷한 성격이지만 Java 언어를 사용할 때 서버를 다루는 systemd에 대해 알아볼 것이다.

systemd란, 리눅스에서 서버 프로그램을 자동으로 실행, 중지, 재시작해주는 기본 서비스 관리자라고 할 수 있다. 노드에서 pm2의 역할과 동일한데, 사실 노드의 pm2를 OS레벨로 마든게 systemd라고 보면 된다고 한다.


🔸systemd 역할

  • 부팅 및 서비스 관리
  • 프로세스 감시 및 자동 복구
  • 리소스 및 로그 통합 관리

systemd를 한 줄로 요약하면, .jar 파일을 리눅스 시스템의 정식 구성원으로 등록시켜주는 도구이다. 그리고 그 외에도 위와 같은 역할들을 수행한다.

🔸systemd 사용하기

◾1. 서비스 파일 생성하기

리눅스 시스템 서비스 설정 디렉토리에 .service파일을 생성한다. 이 때 루트 권한이 필요하다.

  • 서비스 파일 생성
sudo vi /etc/systemd/system/myapp.service
  • 서비스 내용 작성하기
[Unit]
Description=Java Spring Boot Application
After=network.target

[Service]
# 애플리케이션을 실행할 사용자 (보안상 root 권한보다 별도 계정 권한 권장)
User=ubuntu
# 애플리케이션 경로
WorkingDirectory=/home/ubuntu/app
# 실행 명령어 (절대 경로 사용 권장)
ExecStart=/usr/bin/java -jar /home/ubuntu/app/application.jar
# 프로세스가 죽었을 때 재시작 설정
Restart=always
RestartSec=10
# 로그 설정
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=myapp

[Install]
WantedBy=multi-user.target

◾2. 서비스 활성화 및 실행

  • systemd 설정 반영하기
sudo systemctl daemon-reload

  • 서비스 시작
sudo systemctl start myapp

  • 부팅 시 자동 시작 등록
sudo systemctl enable myapp

  • 상태 확인

sudo systemctl status myapp

`pm2`의 `pm2 status(pm2 list)` 와 같은 역할이다. 

◾3. 로그 확인

  • 전체 로그 보기
journalctl -u myapp
  • 실시간 로그 보기 (Tail)
journalctl -u myapp -f

journalctl을 통해 로그를 관리한다. pm2의 pm2 logs와 같은 역할이다.


◾JAR 파일 교체(배포) 시

새 버전의 .jar 파일을 업로드한 후에는 아래 명령어로 간단히 재시작하면 된다.

sudo systemctl restart myapp
profile
개발세포 이야기

0개의 댓글