서버 점검, 정전, 또는 커널 업데이트 후 서버가 재부팅되면 Nginx, Node.js, Python API 등 핵심 애플리케이션 데몬이 수동으로 켜져야 하는 상황이 발생할 수 있습니다.
본 문서에서는 리눅스 표준 시스템 관리자인 systemd를 활용해 특정 커스텀 스크립트나 앱을 서버 부팅 시 자동으로 안전하게 실행시키는 세팅 가이드를 다룹니다.
1. systemctl 자동 실행의 장점
- 서드파티 데몬(Node.js, Python, Go 등)의 부팅 시 자동 구동
- 프로세스 불의의 이유로 강제 종료(Crash) 시 자동 재시작(
Restart=always) 기능 지원
2. 단계별 서비스 파일(Service Unit) 생성 절차
[1단계] systemd 서비스 파일 생성
/etc/systemd/system/ 경로에 .service 확장자로 파일 등록을 진행합니다. (예: myapp.service)
Bash
sudo nano /etc/systemd/system/myapp.service
[2단계] 서비스 구조 작성
아래 서식을 본인의 애플리케이션 실행 환경에 맞춰 수정 작성합니다.
Ini, TOML
[Unit]
Description=My Custom Node.js Web Application
After=network.target mysql.service
[Service]
Type=simple
User=ubuntu
WorkingDirectory=/var/www/myapp
ExecStart=/usr/bin/node /var/www/myapp/app.js
Restart=always
RestartSec=10
Environment=NODE_ENV=production
[Install]
WantedBy=multi-user.target
[3단계] 데몬 재로드 및 서비스 등록/실행
파일 작성 후 systemd 데몬에게 새로운 서비스가 추가되었음을 알립니다.
Bash
# 1. systemd 설정 재로드
sudo systemctl daemon-reload
# 2. 서비스 실행 테스트
sudo systemctl start myapp
# 3. 서비스 실행 상태 확인
sudo systemctl status myapp
# 4. 서버 재부팅 시 자동 실행 활성화
sudo systemctl enable myapp