IT관련

Windows Server에서 Node.js 서버를 서비스로 실행하는 방법

파란하늘999 2025. 11. 11. 16:25

Windows Server(예: 2019, 2022)에서 Node.js 앱을 Windows 서비스로 등록하면 서버 재시작 시 자동 실행되고, 백그라운드에서 안정적으로 동작합니다. 이는 프로덕션 환경에서 필수적이에요. 주요 방법은 node-windows (NPM 패키지, 간단)와 NSSM (무료 도구, 유연)입니다. 아래에 단계별로 설명하겠어요. (Node.js 18+ LTS 추천, 관리자 권한 필요)

1. node-windows 패키지 사용 (추천: NPM 기반, 쉬움)

이 패키지는 Node.js 앱을 Windows 서비스로 직접 설치/관리합니다. GitHub에서 공식 지원되며, 로그와 이벤트 로그 통합이 좋습니다.

단계:

  1. 패키지 설치: 프로젝트 디렉토리에서 명령 프롬프트(관리자 모드) 실행.
    npm install -g node-windows
    npm link node-windows

     

    (전역 설치로 편의)

    github Link
    https://www.npmjs.com/package/node-windows


  2. 서비스 스크립트 생성: 프로젝트 루트에 service.js 파일 생성 (예: Express 서버 app.js를 서비스화).
    const Service = require('node-windows').Service;
    
    // 서비스 설정
    const svc = new Service({
      name: 'My Node.js Server',  // 서비스 이름 (작업 관리자에 표시)
      description: 'Node.js 기반 웹 서버',  // 설명
      script: 'C:\\path\\to\\your\\app.js',  // 실행할 JS 파일 경로 (절대 경로)
      nodeOptions: [
        '--max-old-space-size=4096'  // 메모리 제한 (옵션)
      ],
      env: [{
        name: "NODE_ENV",
        value: "production"
      }],
      logmode: "rotate",  // 로그 모드 (rotate: 파일 로테이션)
      logfile: "C:\\path\\to\\logs\\server.log",  // 로그 파일 경로
      logdir: "C:\\path\\to\\logs"  // 로그 디렉토리
    });
    
    // 설치: svc.install() 실행
    svc.install();
    
    // 제거: svc.uninstall() 실행
  3. 서비스 설치 및 시작:
    • node service.js 실행 (설치됨).
    • 서비스 관리자(services.msc)에서 "My Node.js Server" 검색해 시작/중지/자동 시작 설정.
    • 또는 명령어: sc start "My Node.js Server"
  4. 테스트: 서버 재시작 후 sc query "My Node.js Server"로 상태 확인 (STATE: 4 RUNNING).

 

 

 

장점: 코드로 관리, 이벤트 로그 지원. 2024년 기준 안정적.

2. NSSM (Non-Sucking Service Manager) 사용 (추천: 외부 도구, 유연)

NSSM은 Node.js 외에도 모든 EXE를 서비스화하는 무료 도구입니다. 다운로드 후 사용.

단계:

  1. NSSM 다운로드: https://nssm.cc/download에서 최신 버전(2.24+) ZIP 다운로드 후 압축 해제 (예: C:\nssm\win64\nssm.exe).
  2. 서비스 설치: 명령 프롬프트(관리자)에서.
    C:\nssm\win64\nssm.exe install MyNodeService
    • GUI 창 열림:
      • Path: C:\Program Files\nodejs\node.exe (Node.js 경로)
      • Startup directory: C:\path\to\your\project
      • Arguments: app.js (실행 파일)
      • Output: 로그 파일 경로 (예: C:\logs\stdout.log)
      • Error: C:\logs\stderr.log
  3. 서비스 시작/설정:
    C:\nssm\win64\nssm.exe start MyNodeService
    C:\nssm\win64\nssm.exe set MyNodeService Start SERVICE_AUTO_START  // 자동 시작
    • 제거: nssm remove MyNodeService confirm
  4. 테스트: services.msc에서 확인.

장점: GUI 지원, 재시작 정책(예: 3회 실패 시 중지) 설정 가능.

방법 비교 테이블

방법 설치 난이도 자동 로그 재시작 정책 비용 추천 시나리오
node-windows 낮음 (NPM) 예 (파일/이벤트) 기본 지원 무료 Node.js 전용, 코드 관리 선호
NSSM 중간 (다운로드) 예 (파일) 고급 설정 무료 일반 EXE 서비스화, GUI 필요

추가 팁

  • 환경 변수: 프로덕션에서 NODE_ENV=production 설정 (node-windows env나 NSSM Environment 탭).
  • 포트 충돌: 앱이 80/443 포트 사용 시 IIS와 충돌 가능; IIS Node 모듈 고려.
  • 모니터링: PM2 (npm i -g pm2)로 클러스터링 후 pm2-windows-service로 서비스화 (고급).
  • 문제 해결: 이벤트 뷰어(eventvwr.msc)에서 오류 로그 확인. UAC 활성화 시 관리자 모드 필수.
  • Microsoft 가이드: Node.js 기본 설치 후 서비스화는 위 방법으로 보완.
반응형