본문 바로가기
WEB,WAS/Nodejs

Windows 환경에서 PM2를 서비스로 등록해 특정 계정으로 자동 재기동하기

by Rainbound-IT 2025. 8. 19.
반응형

Node.js 애플리케이션을 운영하다 보면, 서버를 재부팅하거나 윈도우 업데이트가 적용될 때마다 앱이 자동으로 다시 켜져야 안정적인 서비스 운영이 가능합니다.
리눅스에서는 pm2 startup으로 쉽게 systemd에 붙일 수 있지만, 윈도우는 기본적으로 지원되지 않아서 조금 다른 접근이 필요합니다. 이번 글에서는 윈도우에서 특정 계정(예: 서비스 계정)으로 PM2를 서비스로 등록하고, 리부팅 시 앱을 자동 재기동하는 방법을 정리합니다.


🛠️ 준비 사항

  • Windows Server / Windows 10 이상
  • Node.js (운영 시에는 LTS 버전(20.x) 권장)
  • npm 전역(Global) 패키지 설치 권한
  • PM2 (Node 프로세스 매니저)

1. Node.js & PM2 설치

먼저 Node.js를 설치합니다.
운영 안정성을 위해 LTS 버전을 추천합니다. (예: 20.15.1)

 
# Node.js 버전 확인
node -v
npm -v

# PM2 전역 설치
npm install -g pm2

# 정상 설치 확인
pm2 -v
 

2. PM2 홈 디렉터리 고정

윈도우에서 계정마다 PM2의 홈 디렉터리(.pm2)가 달라집니다.
운영 계정(예: admin) 기준으로 경로를 고정합니다.

setx PM2_HOME "C:\Users\admin\.pm2" /M
 
 

이제 PM2가 항상 같은 경로(C:\Users\admin\.pm2)를 사용합니다.


3. PM2 서비스 설치

윈도우에는 systemd가 없기 때문에, pm2-windows-service 모듈을 사용합니다.

npm install -g pm2-windows-service
pm2-service-install
 
 

실행하면 설치 마법사가 시작됩니다.
여기서 중요한 설정은 다음과 같습니다:

  • Service name: 기본값 PM2
  • User account: .\admin (운영 계정)
  • Password: 계정 비밀번호
  • PM2_HOME: C:\Users\admin\.pm2
  • PM2_SERVICE_SCRIPTS: 비워두면, 이후 pm2 save로 저장한 덤프(dump.pm2) 기준으로 자동 실행

설치 완료 후 services.msc에서 PM2 서비스가 등록된 것을 확인할 수 있습니다.
👉 시작 유형을 자동으로 설정하세요.


4. 애플리케이션 등록

앱 루트에 ecosystem.config.js 파일을 생성합니다.

 
module.exports = {
  apps: [
    {
      name: "qr-card",
      cwd: "C:/www/qr.card.com",
      script: "node_modules/next/dist/bin/next",
      args: "start -p 3000",
      env: {
        NODE_ENV: "production",
        API_BASE_URL: "https://api.your-domain.com"
      },
      out_file: "C:/www/qr.card.com/.pm2/out.log",
      error_file: "C:/www/qr.card.com/.pm2/error.log"
    }
  ]
}
 
 

등록 및 실행:

 
cd C:\www\qr.card.com
pm2 start ecosystem.config.js --env production
 

5. 상태 저장 (덤프 생성)

PM2는 현재 실행 중인 프로세스 상태를 dump.pm2에 저장합니다.
리부팅 시 서비스가 이 파일을 기반으로 프로세스를 복구합니다.

 
pm2 save
 

6. 검증

리부팅 대신 서비스만 재시작해도 동일하게 동작을 검증할 수 있습니다.

 
Restart-Service PM2
pm2 list
 
 

→ 서비스 재시작 후에도 앱이 online 상태로 복구되면 성공입니다.


📌 요약

  1. Node.js LTS + PM2 설치
  2. PM2_HOME을 특정 계정(admin) 경로로 고정
  3. pm2-windows-service 설치 후 서비스 등록
  4. 앱을 ecosystem.config.js로 등록하고 실행
  5. pm2 save로 상태 저장
  6. 서비스 재시작 또는 리부팅 시 자동 복구 확인
반응형

댓글