systemd로 백그라운드 서비스 관리하기

서버가 재부팅되거나 애플리케이션이 비정상 종료될 때마다 직접 들어가서 프로세스를 재실행하는 것은 비효율적입니다. systemd를 활용하면 이런 작업을 자동화할 수 있습니다.

서비스 유닛 파일 작성

/etc/systemd/system/myapp.service 경로에 유닛 파일을 작성합니다.

[Unit]
Description=My Application
After=network.target

[Service]
Type=simple
User=deploy
WorkingDirectory=/opt/myapp
ExecStart=/usr/bin/node server.js
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

서비스 등록 및 실행

유닛 파일을 작성한 뒤에는 다음 명령으로 등록하고 실행합니다.

  • systemctl daemon-reload — 변경된 유닛 파일 인식
  • systemctl enable myapp — 부팅 시 자동 시작 등록
  • systemctl start myapp — 즉시 실행

로그 확인

systemd로 관리되는 서비스의 로그는 journalctl로 확인할 수 있습니다. journalctl -u myapp -f 명령으로 실시간 로그를 추적할 수 있습니다.

자동 재시작 정책

Restart=on-failure는 비정상 종료 시에만 재시작하며, Restart=always는 정상 종료를 포함한 모든 종료 상황에서 재시작합니다. 서비스 특성에 맞게 선택하는 것이 중요합니다.