우분투 톰캣 서비스등록

박성현·2026년 1월 26일

개발중 학습

목록 보기
36/44

Ubuntu에서 systemd 서비스 등록하기

visudo 설정과 /etc/systemd/system 서비스 파일 생성까지 한 번에 정리

서버에 톰캣, 스프링부트, 배치 프로그램 등을 올리다 보면 부팅 시 자동 실행, 권한 관리, 서비스 상태 관리가 꼭 필요해진다. 이럴 때 사용하는 게 바로 systemd 서비스 등록이다.

이 글에서는 실무에서 가장 많이 쓰는 방식인

  • visudo를 이용한 sudo 권한 설정
  • /etc/systemd/system/ 경로에 서비스 파일 생성

처음부터 끝까지 정리해본다.


1. 왜 systemd 서비스로 등록해야 할까?

단순히 쉘에서 ./start.sh로 실행하면 이런 문제가 생긴다.

  • 서버 재부팅 시 자동 실행 안 됨
  • 실행 유저가 root인지 일반 유저인지 헷갈림
  • 프로세스 죽었는지 확인하기 어려움
  • 로그 추적 불편

systemd로 등록하면:

  • systemctl start|stop|restart로 관리 가능
  • 부팅 시 자동 실행 (enable)
  • 실행 유저/그룹 명확
  • 로그는 journalctl로 한 번에 확인

👉 운영 서버라면 거의 필수다.


2. 서비스 실행 유저 준비

보통 root로 서비스 실행은 권장하지 않는다. 예를 들어 service_user 유저로 실행한다고 가정해보자.

id service_user

없다면 생성:

sudo adduser service_user

3. visudo로 sudo 권한 설정

서비스 내부 스크립트에서 sudo가 필요하거나, 특정 명령만 sudo 없이 실행하고 싶을 때 visudo를 사용한다.

3-1. visudo 편집

sudo visudo

3-2. 특정 유저에게 systemctl 권한 부여 (예시)

service_user ALL=(ALL) NOPASSWD: /bin/systemctl

👉 의미:

  • service_user 유저는
  • 비밀번호 없이
  • systemctl 명령을 실행 가능

💡 보안상 필요 최소한의 명령만 허용하는 게 좋다.


4. /etc/systemd/system 서비스 파일 생성

이제 핵심 단계다.

4-1. 서비스 파일 생성

sudo vi /etc/systemd/system/tomcat-example-service.service

4-2. 서비스 파일 예시

[Unit]
Description=Tomcat example 2026 Service
After=network.target

[Service]
Type=forking

User=service_user
Group=dev
UMask=0002

Environment=JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
Environment=CATALINA_HOME=/opt/tomcat/share/tomcat10/example-service
Environment=CATALINA_BASE=/opt/tomcat/share/tomcat10/example-service

ExecStart=/opt/tomcat/share/tomcat10/example-service/bin/startup.sh
ExecStop=/opt/tomcat/share/tomcat10/example-service/bin/shutdown.sh

Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

5. systemd 설정 반영

서비스 파일을 만들거나 수정했으면 반드시 daemon-reload를 해야 한다.

sudo systemctl daemon-reload

6. 서비스 실행 및 자동 실행 등록

6-1. 서비스 시작

sudo systemctl start tomcat-example-service.service

sudo systemctl restart tomcat-example-service.service

sudo systemctl stop tomcat-example-service.service

6-2. 부팅 시 자동 실행

sudo systemctl enable tomcat-example-service.service

6-3. 상태 확인

systemctl status tomcat-example-service.service

7. 로그 확인 방법

서비스가 안 뜰 때 가장 먼저 볼 것.

journalctl -xeu tomcat-example-service.service

실시간 로그:

journalctl -fu tomcat-example-service.service

profile
개발기록장

0개의 댓글