서버 Reboot 후 특정 서비스 자동 실행(systemctl service) 등록 방법

    서버 점검, 정전, 또는 커널 업데이트 후 서버가 재부팅되면 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

    답글 남기기

    이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다