Windows Server(예: 2019, 2022)에서 Node.js 앱을 Windows 서비스로 등록하면 서버 재시작 시 자동 실행되고, 백그라운드에서 안정적으로 동작합니다. 이는 프로덕션 환경에서 필수적이에요. 주요 방법은 node-windows (NPM 패키지, 간단)와 NSSM (무료 도구, 유연)입니다. 아래에 단계별로 설명하겠어요. (Node.js 18+ LTS 추천, 관리자 권한 필요)
1. node-windows 패키지 사용 (추천: NPM 기반, 쉬움)
이 패키지는 Node.js 앱을 Windows 서비스로 직접 설치/관리합니다. GitHub에서 공식 지원되며, 로그와 이벤트 로그 통합이 좋습니다.
단계:
- 패키지 설치: 프로젝트 디렉토리에서 명령 프롬프트(관리자 모드) 실행.
(전역 설치로 편의)
npm install -g node-windows npm link node-windows
github Link
https://www.npmjs.com/package/node-windows - 서비스 스크립트 생성: 프로젝트 루트에 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() 실행 - 서비스 설치 및 시작:
- node service.js 실행 (설치됨).
- 서비스 관리자(services.msc)에서 "My Node.js Server" 검색해 시작/중지/자동 시작 설정.
- 또는 명령어: sc start "My Node.js Server"
- 테스트: 서버 재시작 후 sc query "My Node.js Server"로 상태 확인 (STATE: 4 RUNNING).
장점: 코드로 관리, 이벤트 로그 지원. 2024년 기준 안정적.
2. NSSM (Non-Sucking Service Manager) 사용 (추천: 외부 도구, 유연)
NSSM은 Node.js 외에도 모든 EXE를 서비스화하는 무료 도구입니다. 다운로드 후 사용.
단계:
- NSSM 다운로드: https://nssm.cc/download에서 최신 버전(2.24+) ZIP 다운로드 후 압축 해제 (예: C:\nssm\win64\nssm.exe).
- 서비스 설치: 명령 프롬프트(관리자)에서.
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
- GUI 창 열림:
- 서비스 시작/설정:
C:\nssm\win64\nssm.exe start MyNodeService C:\nssm\win64\nssm.exe set MyNodeService Start SERVICE_AUTO_START // 자동 시작- 제거: nssm remove MyNodeService confirm
- 테스트: 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 기본 설치 후 서비스화는 위 방법으로 보완.
반응형
'IT관련' 카테고리의 다른 글
| Microsoft 패스키 만드는 방법: 개인 계정 단계별 가이드 (0) | 2025.11.14 |
|---|---|
| 패스키(Passkey)란 무엇인가? 비밀번호 없는 미래의 인증 기술 (0) | 2025.11.14 |
| IIS의 상대경로 설정 방법 (0) | 2025.11.10 |
| AWS 콘솔 로그인 시 패스키 사용 방법 (0) | 2025.11.08 |
| IIS에서 32비트와 64비트 애플리케이션 설정 방법 (0) | 2025.11.08 |