Ⅰ. NSSM 이란?
"Non-Sucking Service Manager"의 약자로, 윈도우 환경에서 일반 애플리케이션(실행 파일, 배치 파일 등)을 윈도우 서비스로 손쉽게 등록하고 관리할 수 있게 해주는 오픈소스 도구입니다. NSSM을 사용하면 서버 프로그램, 콘솔 앱, 백그라운드 작업 등을 윈도우 서비스로 실행할 수 있어, 시스템 부팅 시 자동 시작이나 장애 발생 시 자동 재시작 등 다양한 관리 기능을 활용할 수 있습니다.
Ⅱ. NSSM 필요한 이유
Windows에서는 일반적으로 서비스 형태로 동작하지 않는 프로그램은 부팅 시 자동 실행되거나 충돌 후 재시작되지 않습니다. nssm은 문제점에 대해 조치 할 수 있습니다.
ⅰ) .exe로 배포된 서버 애플리케이션
ⅱ) Node.js, Python, Java 애플리케이션
ⅲ) 백업, 모니터링, 스크립트 런처 등
Ⅲ. NSSM 주요 특징 및 기능
ⅰ) 일반 프로그램을 서비스로 등록: GUI 또는 명령행을 통해 쉽게 서비스로 등록할 수 있습니다.
ⅱ) 자동 재시작: 서비스가 비정상적으로 종료되면 자동으로 재시작할 수 있습니다.
ⅲ) 입출력 리디렉션: 서비스의 표준 출력/에러 로그를 파일이나 이벤트 로그로 저장할 수 있어, 문제 진단이 편리합니다.
ⅳ) 환경 변수, 작업 디렉터리 등 다양한 설정: 서비스 실행에 필요한 환경을 세밀하게 설정할 수 있습니다.
ⅴ) 서비스 관리 자동화: GUI와 CLI 모두 지원하여, 배포 자동화나 스크립트 관리에 활용할 수 있습니다.
ⅵ) 종속성 및 재시작 정책: 서비스의 종속성 설정, 재시작 간격 및 횟수 등 세부 정책을 지정할 수 있습니다
Ⅳ. NSSM 사용 방법
ⅰ) 다운로드
■ 공식 사이트: https://nssm.cc/download
■ GitHub: https://github.com/kohsuke/nssm
ⅱ) 서비스 등록 방법 (GUI)
nssm.exe install [서비스이름] |
실행 시 GUI 창이 뜨며 아래 항목들을 입력:
필드 예시 Application Path C:\MyApp\myapp.exe Startup Directory C:\MyApp Arguments (필요 시 추가) Log on Local System, 또는 특정 사용자 계정 설정 가능 I/O 탭 stdout과 stderr 리디렉션 파일 지정 가능 → OK 클릭하면 서비스 등록 완료 |
ⅲ) 명령어로 서비스 등록 (CLI)
nssm.exe install MyServiceName "C:\MyApp\myapp.exe" --arg1 --arg2 |
ⅳ) 서비스 시작/중지
net start MyServiceName net stop MyServiceName |
ⅴ) 서비스 삭제
nssm.exe remove MyServiceName confirm |
ⅵ) 로그 설정 예시
nssm.exe install MyAppService GUI에서 I/O 탭으로 이동하여: Redirect stdout: C:\Logs\myapp_stdout.log Redirect stderr: C:\Logs\myapp_stderr.log → 프로그램이 출력하는 콘솔 로그가 서비스 실행 중에도 저장됩니다. |
Ⅴ. NSSM 사용 사례
사례 | 설명 |
Prometheus, Grafana, Fluentd 등 | 윈도우 환경에서 .exe로 서비스 등록 |
Python FastAPI 앱 | uvicorn main:app 명령을 서비스로 등록 |
Java JAR 실행 | java -jar myapp.jar 명령을 서비스화 |
Node.js 앱 | node app.js를 백그라운드에서 유지 실행 |
Ⅵ. NSSM 장점
ⅰ) 일반 실행 파일이나 스크립트도 윈도우 서비스로 손쉽게 등록 가능
(별도의 서비스용 프로그램이 아니어도 서비스로 실행 가능).
ⅱ) 서비스가 비정상 종료되면 자동으로 재시작
(애플리케이션이 죽었을 때 신속하게 복구).
ⅲ) 서비스의 표준 출력, 표준 에러를 파일이나 이벤트 로그로 저장 가능
(문제 진단과 유지보수에 유리).
ⅳ) GUI와 CLI 모두 지원하여, 초보자도 쉽게 설정 및 관리 가능.
ⅴ) 서비스 실행 환경(환경 변수, 작업 디렉터리, 우선순위, CPU affinity 등) 세밀하게 설정 가능.
ⅵ) 서비스 종료 시 다양한 방식(Graceful/강제 종료)으로 안전하게 프로세스 관리.
ⅶ) 설치 및 제거가 간편하고, 설정 변경이 직관적.
ⅷ) 공개 소프트웨어로, 라이선스 제한 없이 자유롭게 사용 가능.
ⅸ) 스크립트, 콘솔 앱 등 다양한 유형의 프로그램을 서비스로 운영할 때 최적
'시스템(Windows)' 카테고리의 다른 글
Windows 작업 관리자(Task Manager) 에 대해 알아보겠습니다. (0) | 2025.05.28 |
---|---|
파이썬(python) 에 대해 알아보겠습니다. (1) | 2025.05.27 |
.NET Framework 4.7을 제거하거나 손상되었을 경우 조치 방법에 대해 알아보겠습니다. (0) | 2025.05.14 |
SAM(Security Account Manager)에 대해 알아보겠습니다. (0) | 2025.05.13 |
윈도우 운영체제에서 사용자 그룹에 대해 알아보겠습니다. (1) | 2025.05.12 |