재부팅 시 PM2 프로세스 자동 재실행 설정

2025. 5. 9. 10:11개발/개발 필기

반응형

. 배경

  • 사건
    • 서버가 예기치 않게 재부팅되면서, PM2로 구동 중이던 Node.js/Python 서비스가 모두 중단됨
    • 고객이 “로그인 불가”로 문의 → 재해 복구 절차 점검
  • 원인
    • 서버 재부팅 후 PM2가 자동으로 프로세스를 복원하도록 설정되지 않음
  • 영향
    • Web/API 서버 다운 → 고객 서비스 불가
    • 다행히 DB는 자동으로 올라왔으나, 애플리케이션까지 복구되지 않았다면 큰 사고로 이어질 수 있었음

 

2. 환경

  • 운영체제: Ubuntu
  • 프로세스 매니저: PM2
  • 구동 중인 앱:
    • app.js (Node.js)
    • main.py (Python / FastAPI 등)

 

3. 해결 및 설정 절차

  1. PM2로 애플리케이션 실행
# 예시: Node.js
pm2 start app.js --name web-server

# 예시: Python (FastAPI/Uvicorn)
pm2 start main.py \
  --name api-server \
  --interpreter python3 \
  -- watch false

 

2. 현재 프로세스 목록·상태 저장

pm2 save

 

PM2가 관리 중인 프로세스와 환경 설정을 디스크에 기록합니다.

 

3. 시스템 부팅 시 PM2가 자동 실행되도록 설정

pm2 startup

 

 

  • 명령 실행 후 출력되는 스크립트를 복사·붙여넣기 해서 한 번 더 실행
  • 부팅 시 /etc/systemd/system/pm2-root.service 등이 생성되어 PM2가 자동 기동됨

4. 설정 확인

pm2 list      # 재부팅 후에도 프로세스가 online 상태로 복원됐는지 확인

 

 

5. (선택) 강제 복원

  • 만약 부팅 직후 바로 복원이 안 될 경우:
  •  
pm2 resurrect

pm2 save 직전 상태로 프로세스를 복원합니다.

 

이렇게 설정해 두면, 이후 서버가 재부팅되어도 PM2가 자동으로 다시 기동되어 애플리케이션이 무중단으로 복원됩니다.

반응형