본문 바로가기
리눅스의 모든 것

리눅스 서비스 등록 방법 – systemd로 프로그램 자동 실행 설정하기

by 운따돈 2025. 8. 15.

리눅스에서 어떤 프로그램을 매번 수동으로 실행하는 것은 번거롭습니다.
특히 서버 환경에서는 부팅 후 자동 실행이 필요한 경우가 많아요.


예를 들어 웹 서버(Nginx, Apache), 데이터베이스(MySQL), 백엔드 애플리케이션(Node.js, Python Flask), 또는 자체 제작한 스크립트를 서버가 켜질 때 자동으로 실행하도록 설정하려면 서비스 등록이 필수입니다.

이때 systemd를 사용하면 프로그램을 서비스로 등록하고, 시작·중지·자동 실행 여부를 쉽게 관리할 수 있습니다.


systemd와 서비스 개념

systemd는 리눅스 시스템의 초기화 프로세스이자 서비스 관리 도구입니다.
서비스 등록은 단순히 프로그램을 실행하는 것뿐 아니라, 다음과 같은 장점이 있습니다.

  • 서버 부팅 시 자동 실행
  • 중지·재시작 명령어 지원
  • 로그 관리
  • 다른 서비스와의 의존성 설정
  • 상태 확인 가능

서비스 등록을 위해서는 .service 파일을 생성해 /etc/systemd/system에 저장해야 합니다.


서비스 파일 작성 방법

서비스 파일의 기본 구조는 다음과 같습니다.

[Unit]
Description=서비스 설명
After=network.target

[Service]
ExecStart=/usr/bin/프로그램_경로 또는 스크립트_경로
Restart=always
User=실행할_사용자
WorkingDirectory=작업_디렉토리
Environment="환경변수=값"

[Install]
WantedBy=multi-user.target


Node.js 애플리케이션 서비스 등록

  1. 서비스 파일 생성
    sudo nano /etc/systemd/system/myapp.service
  2. 내용 작성
    [Unit]
    Description=My Node.js App
    After=network.target

[Service]
ExecStart=/usr/bin/node /home/ubuntu/myapp/server.js
Restart=always
User=ubuntu
WorkingDirectory=/home/ubuntu/myapp
Environment="PORT=3000"

[Install]
WantedBy=multi-user.target


서비스 등록 및 실행

서비스 파일 작성 후에는 systemd에 새 설정을 적용하고, 서비스 실행·등록을 진행합니다.

sudo systemctl daemon-reload
sudo systemctl start myapp.service
sudo systemctl enable myapp.service

  • start : 서비스 즉시 실행
  • enable : 부팅 시 자동 실행 등록

서비스 상태 확인 및 관리

서비스 동작 상태를 확인하려면 다음 명령어를 사용합니다.

sudo systemctl status myapp.service

중지, 재시작, 로그 확인도 가능합니다.

  • 중지 : sudo systemctl stop myapp.service
  • 재시작 : sudo systemctl restart myapp.service
  • 로그 확인 : sudo journalctl -u myapp.service -f

서비스 수정 시 주의사항

서비스 파일을 수정했다면 반드시 다음을 실행해야 변경 사항이 적용됩니다.
sudo systemctl daemon-reload
sudo systemctl restart myapp.service

또한 파일 경로, 실행 사용자, 권한 설정이 잘못되면 서비스 실행이 실패할 수 있으니,
journalctl 로그를 꼭 확인하는 습관이 필요합니다.


보안 및 안정성 강화 팁

  1. 전용 사용자 계정으로 실행 – root 계정으로 실행하지 않고 별도의 계정을 만드는 것이 안전합니다.
  2. 환경변수 파일 분리 – API 키, 비밀번호 등은 /etc/default/서비스명 또는 .env 파일에 저장 후 불러오기.
  3. Restart 옵션 활용 – 프로그램 오류로 중단 시 자동 재시작하도록 설정.
  4. 의존성 설정 – After, Requires 옵션으로 데이터베이스나 네트워크가 준비된 후 실행되도록 조정.

결론

리눅스 서비스 등록은 서버 운영 효율성을 높이고, 프로그램을 안정적으로 유지하는 핵심 기술입니다.
systemd 서비스 등록을 마스터하면, 어떤 애플리케이션이든 부팅 시 자동 실행 및 안정적인 관리가 가능합니다.
특히, 스타트업이나 소규모 서버 환경에서는 이 방법이 운영 비용을 줄이고 서버 다운타임을 최소화하는 데 큰 도움이 됩니다.