코샵
끄적끄적 코딩 공방
코샵

인기 글

  • 분류 전체보기 (479) N
    • MongoDB (4)
    • 일기장 (4)
    • Unity (138)
      • Tip (41)
      • Project (1)
      • Design Pattern (8)
      • Firebase (6)
      • Asset (2)
    • 파이썬 (127)
      • Basic (40)
      • OpenCV (8)
      • Pandas (15)
      • PyQT (3)
      • SBC(Single Board Computer) (1)
      • 크롤링 (14)
      • Fast API (29)
      • Package (6)
    • Linux (4)
    • C# (97)
      • Algorithm (11)
      • Window (7)
    • TypeScript (48) N
      • CSS (10) N
    • Git (11)
    • SQL (5)
    • Flutter (10)
      • Tip (1)
    • System (1)
    • BaekJoon (6)
    • Portfolio (2)
    • MacOS (1)
    • 유틸리티 (1)
    • 서비스 (6)
    • 자동화 (3)
    • Hobby (10)
      • 물생활 (10)
      • 식집사 (0)
전체 방문자
오늘
어제

최근 댓글

최근 글

반응형
hELLO · Designed By 정상우.
코샵

끄적끄적 코딩 공방

윈도우 서비스 관리 도구, NSSM 가이드
자동화

윈도우 서비스 관리 도구, NSSM 가이드

2025. 4. 12. 12:44
반응형

윈도우 환경에서 애플리케이션을 서비스로 등록하여 컴퓨터가 부팅될 때 자동으로 실행되게 하고 싶다면, NSSM(Non-Sucking Service Manager)이 최적의 선택입니다. 일반 실행 파일이나 스크립트를 윈도우 서비스로 변환하고 관리할 수 있는 이 강력한 도구의 사용법을 상세히 알아보겠습니다.

NSSM이란 무엇인가?

NSSM은 "Non-Sucking Service Manager"의 약자로, 윈도우에서 일반 애플리케이션을 서비스로 변환하여 실행할 수 있게 해주는 오픈소스 도구입니다. 기본 윈도우 서비스 관리자와 달리, 다양한 설정 옵션과 직관적인 인터페이스를 제공하며 크래시 자동 복구 기능까지 갖추고 있습니다.

NSSM의 주요 특징

  • 콘솔 애플리케이션을 윈도우 서비스로 변환
  • 서비스 시작/중지/재시작 기능
  • 서비스 충돌 시 자동 재시작
  • 상세한 로그 관리
  • 서비스 종속성 설정
  • 환경 변수 및 작업 디렉터리 구성
  • 다양한 입출력 리디렉션 옵션

NSSM 설치하기

방법 1: 공식 웹사이트에서 다운로드

  1. NSSM 공식 웹사이트에서 최신 버전(현재 2.24)을 다운로드합니다.
  2. 다운로드한 ZIP 파일을 원하는 위치에 압축 해제합니다.
  3. 시스템 아키텍처에 맞는 버전(32비트 또는 64비트)의 실행 파일을 사용합니다.

방법 2: Chocolatey 패키지 관리자 사용

Chocolatey가 설치되어 있다면, 다음 명령어로 간단히 설치할 수 있습니다:

choco install nssm

설치 확인

명령 프롬프트(관리자 권한)에서 다음 명령어를 실행하여 NSSM이 제대로 설치되었는지 확인합니다:

nssm --version

새 서비스 생성하기

NSSM을 사용하여 서비스를 만드는 방법은 GUI 모드와 명령줄 모드 두 가지가 있습니다.

GUI 모드로 서비스 생성

  1. 관리자 권한으로 명령 프롬프트를 실행합니다.
  2. 다음 명령어를 입력합니다:
nssm install
  1. NSSM 설치 대화상자가 나타납니다:

  1. 다음 필드를 차례로 입력합니다:
    • Service name: 서비스 이름 (예: MyNodeApp)
    • Path: 실행 파일 경로 (예: C:\Program Files\nodejs\node.exe)
    • Startup directory: 작업 디렉터리 (예: C:\MyNodeApp)
    • Arguments: 명령줄 인수 (예: app.js)
  2. 필요에 따라 다른 탭에서 추가 설정을 구성합니다:
    • Details: 서비스 표시 이름, 설명, 시작 유형 등
    • Log on: 서비스 실행 계정 설정
    • I/O: 표준 입출력 리디렉션
    • File rotation: 로그 파일 순환 설정
    • Environment: 환경 변수 설정
    • Dependencies: 서비스 종속성 설정
    • Process: 프로세스 우선순위 및 CPU 선호도 설정
    • Shutdown: 종료 관련 옵션 설정
    • Exit actions: 종료 시 실행할 작업 설정
  3. "Install service" 버튼을 클릭하여 서비스를 생성합니다.

명령줄로 서비스 생성

GUI 없이 직접 명령줄로 서비스를 생성할 수도 있습니다:

nssm install MyNodeApp "C:\Program Files\nodejs\node.exe" "C:\MyNodeApp\app.js"

기본 설정 이외에 추가 매개변수를 설정하려면:

nssm set MyNodeApp AppDirectory "C:\MyNodeApp"
nssm set MyNodeApp AppStdout "C:\MyNodeApp\logs\output.log"
nssm set MyNodeApp AppStderr "C:\MyNodeApp\logs\error.log"
nssm set MyNodeApp Description "My Node.js Application Service"
nssm set MyNodeApp Start SERVICE_AUTO_START

서비스 관리하기

서비스 상태 관리

NSSM이나 Windows 서비스 관리자를 통해 서비스를 제어할 수 있습니다.

NSSM 명령어 사용

# 서비스 시작
nssm start MyNodeApp

# 서비스 중지
nssm stop MyNodeApp

# 서비스 재시작
nssm restart MyNodeApp

# 서비스 상태 확인
nssm status MyNodeApp

Windows 서비스 관리자 사용

  1. Win + R 키를 누르고 services.msc를 입력하여 서비스 관리자를 엽니다.
  2. 등록한 서비스를 찾아 마우스 오른쪽 버튼으로 클릭하여 '시작', '중지', '다시 시작' 등의 작업을 수행할 수 있습니다.

서비스 구성 수정

이미 설치된 서비스의 설정을 GUI로 수정하려면:

nssm edit MyNodeApp

명령줄에서 개별 설정을 수정하려면:

nssm set MyNodeApp AppParameters "--production --port=3000"

서비스 제거

더 이상 필요하지 않은 서비스를 제거하는 방법:

# 확인 없이 제거
nssm remove MyNodeApp confirm

# 대화 상자로 확인 후 제거
nssm remove MyNodeApp

고급 설정 옵션

로그 파일 리디렉션

서비스 출력을 로그 파일로 리디렉션하여 문제 해결에 활용할 수 있습니다:

nssm set MyNodeApp AppStdout "C:\MyNodeApp\logs\output.log"
nssm set MyNodeApp AppStderr "C:\MyNodeApp\logs\error.log"

로그 파일 순환(rotation) 설정:

# 파일 크기가 1MB를 초과하면 순환
nssm set MyNodeApp AppRotateFiles 1
nssm set MyNodeApp AppRotateBytes 1048576

# 최대 로그 파일 수 설정 (0은 무제한)
nssm set MyNodeApp AppRotateOnline 1
nssm set MyNodeApp AppRotateSeconds 86400

자동 재시작 설정

애플리케이션 충돌 시 자동으로 재시작하도록 설정:

# 프로세스 종료 시 재시작 (항상)
nssm set MyNodeApp AppRestartDelay 5000

특정 종료 코드에 대해서만 재시작:

# 종료 코드 1, 255에 대해서만 재시작
nssm set MyNodeApp AppThrottle 5000
nssm set MyNodeApp AppExit Default Restart
nssm set MyNodeApp AppExit 0 Exit

환경 변수 설정

애플리케이션에 필요한 환경 변수를 설정할 수 있습니다:

nssm set MyNodeApp AppEnvironmentExtra "NODE_ENV=production
PORT=3000
DB_HOST=localhost
DB_USER=admin"

서비스 종속성 설정

다른 서비스가 먼저 시작된 후에 실행되도록 종속성을 설정:

# MySQL 서비스에 종속
nssm set MyNodeApp DependOnService MySQL

여러 종속성을 설정하려면:

nssm set MyNodeApp DependOnService "MySQL PostgreSQL"

실제 활용 예제

예제 1: Node.js 애플리케이션 서비스

Node.js 애플리케이션을 윈도우 부팅 시 자동으로 실행되는 서비스로 등록:

# 서비스 생성
nssm install MyNodeApp "C:\Program Files\nodejs\node.exe" "C:\MyNodeApp\server.js"

# 작업 디렉터리 설정
nssm set MyNodeApp AppDirectory "C:\MyNodeApp"

# 환경 변수 설정
nssm set MyNodeApp AppEnvironmentExtra "NODE_ENV=production
PORT=3000"

# 로그 파일 설정
nssm set MyNodeApp AppStdout "C:\MyNodeApp\logs\output.log"
nssm set MyNodeApp AppStderr "C:\MyNodeApp\logs\error.log"
nssm set MyNodeApp AppRotateFiles 1
nssm set MyNodeApp AppRotateBytes 1048576

# 자동 재시작 설정
nssm set MyNodeApp AppRestartDelay 10000

# 서비스 설명 추가
nssm set MyNodeApp Description "Node.js 웹 애플리케이션 서비스"

# 서비스 시작
nssm start MyNodeApp

예제 2: Python 스크립트 서비스화

Python 스크립트를 윈도우 서비스로 등록:

# 서비스 생성
nssm install PythonService "C:\Python39\python.exe" "C:\Scripts\myservice.py"

# 작업 디렉터리 설정
nssm set PythonService AppDirectory "C:\Scripts"

# 로그 파일 설정
nssm set PythonService AppStdout "C:\Scripts\logs\output.log"
nssm set PythonService AppStderr "C:\Scripts\logs\error.log"

# 서비스 시작 유형 설정 (지연된 자동 시작)
nssm set PythonService Start SERVICE_DELAYED_AUTO_START

# 서비스 시작
nssm start PythonService

예제 3: 배치 파일 서비스화

배치 파일을 서비스로 등록하여 정기적인 작업 실행:

# 서비스 생성
nssm install BatchService "C:\Windows\System32\cmd.exe" "/c C:\Scripts\daily-backup.bat"

# 작업 디렉터리 설정
nssm set BatchService AppDirectory "C:\Scripts"

# 로그 설정
nssm set BatchService AppStdout "C:\Scripts\logs\batch-output.log"
nssm set BatchService AppStderr "C:\Scripts\logs\batch-error.log"

# 서비스 시작
nssm start BatchService

문제 해결 및 팁

서비스가 시작되지 않는 경우

  1. 로그 파일 확인
  2. type "C:\MyNodeApp\logs\error.log"
  3. 이벤트 뷰어 확인
    • Win + R → eventvwr.msc → Windows 로그 → 애플리케이션
  4. 직접 실행 테스트
  5. "C:\Program Files\nodejs\node.exe" "C:\MyNodeApp\app.js"
  6. 권한 문제 확인
    • 서비스 계정이 필요한 파일과 디렉터리에 접근 권한이 있는지 확인

성능 최적화 팁

  1. CPU 선호도 설정:
  2. nssm set MyNodeApp AppPriority NORMAL_PRIORITY_CLASS
  3. 메모리 사용량이 높은 서비스의 경우 자동 재시작 고려:
  4. nssm set MyNodeApp AppThrottle 3600000
  5. 종료 시간 설정 (기본값보다 길게):
  6. nssm set MyNodeApp AppStopMethodConsole 15000

보안 관련 팁

  1. 최소 권한 원칙 적용 - 서비스 계정 설정:
  2. nssm set MyNodeApp ObjectName ".\ServiceUser" "Password"
  3. 중요한 비밀번호나 API 키는 환경 변수 대신 보안 저장소 활용
  4. 서비스 파일과 로그에 적절한 접근 제한 설정

NSSM 명령어 전체 참조

명령어 설명 사용 예

install 새 서비스 설치 nssm install ServiceName
remove 서비스 제거 nssm remove ServiceName confirm
start 서비스 시작 nssm start ServiceName
stop 서비스 중지 nssm stop ServiceName
restart 서비스 재시작 nssm restart ServiceName
status 서비스 상태 확인 nssm status ServiceName
edit 서비스 설정 편집 nssm edit ServiceName
get 서비스 매개변수 조회 nssm get ServiceName AppDirectory
set 서비스 매개변수 설정 nssm set ServiceName AppDirectory C:\App
reset 매개변수 기본값으로 재설정 nssm reset ServiceName AppDirectory

결론

NSSM은 윈도우 환경에서 애플리케이션을 서비스로 관리하는 강력하고 유연한 도구입니다. 이 글에서 살펴본 것처럼, 간단한 명령어로 다양한 종류의 애플리케이션을 신뢰성 있는 윈도우 서비스로 변환할 수 있습니다.

특히 서버 애플리케이션, 백그라운드 작업, 모니터링 스크립트 등을 운영하는 환경에서 NSSM은 시스템 관리자와 개발자에게 필수적인 도구입니다. 자동 재시작, 로그 관리, 종속성 설정 등의 고급 기능을 통해 서비스의 안정성과 가용성을 크게 향상시킬 수 있습니다.

이 가이드를 통해 NSSM의 기본 사용법부터 고급 설정까지 충분히 이해하셨기를 바랍니다. 윈도우 서버 환경에서 더 안정적이고 관리하기 쉬운 서비스를 구축하는 데 NSSM이 큰 도움이 될 것입니다.

저작자표시 비영리 변경금지 (새창열림)

'자동화' 카테고리의 다른 글

네이버 스마트스토어 리뷰 크롤링 프로그램  (2) 2024.09.20
쿠팡 상품 리뷰 크롤링 프로그램  (3) 2024.09.09
    '자동화' 카테고리의 다른 글
    • 네이버 스마트스토어 리뷰 크롤링 프로그램
    • 쿠팡 상품 리뷰 크롤링 프로그램
    코샵
    코샵
    나의 코딩 일기장

    티스토리툴바