概要と基本概念
nssmはWindows向けのサービスラッパーであり、通常の実行可能ファイルをシステムサービスとして登録するためのツールです。このツールを使用することで、任意のアプリケーションを起動時に自動実行されるサービスとして構成できます。類似のツールにはMicrosoft製のsrvanyがありますが、nssmの方が操作性に優れ、機能も豊富です。
主な特徴:
- コンソールアプリケーションやGUIアプリケーションをサービス化可能
- シンプルなインストール手順と容易な設定変更
- 監視機能によりプロセスが異常終了した際に自動再起動
公式サイト:https://nssm.cc/
セットアップと基本操作
ダウンロードと準備
公式サイト https://nssm.cc/download から最新版を取得します。
システムアーキテクチャに応じて適切なバージョン(32bitまたは64bit)を選択して展開します。
サービス登録プロセス
管理者権限でコマンドプロンプトを開き、nssm.exeが存在するディレクトリに移動します。
以下のコマンドを実行して設定インターフェースを起動します:
nssm install
主要設定項目
- 実行パス:対象となる実行ファイルの完全パス
- 作業ディレクトリ:アプリケーションの実行コンテキストディレクトリ
- 引数:実行時のパラメータ
- サービス名:Windowsサービスマネージャーに表示される識別子
設定完了後、「Install Service」ボタンをクリックしてサービス登録を完了します。
基本操作コマンド
nssm install [service_name] # サービス作成と設定画面表示
nssm start [service_name] # サービス開始
nssm stop [service_name] # サービス停止
nssm restart [service_name] # サービス再起動
nssm remove [service_name] # サービス削除
nssm edit [service_name] # 設定編集画面表示
nssm set [service_name] [parameter] [value] # パラメータ設定
sc delete [service_name] # Windows標準のサービス削除コマンド
実践例:Webアプリケーションをサービス化
対象アプリケーション
.NET 6ベースのWebアプリケーションをサービスとして登録するケースを説明します。
通常の起動コマンド:
dotnet MyWebApp.dll --urls=http://*:9999/ --port=9999
サービス登録手順
以下の情報を設定します:
実行パス:C:\Program Files\dotnet\dotnet.exe
作業ディレクトリ:D:\Projects\MyWebApp\bin\Release\net6.0
引数:MyWebApp.dll --urls=http://*:9999/ --port=9999
サービス名:mywebapp9999
サービス管理操作
起動操作
D:\tools\nssm\win64>nssm start mywebapp9999
mywebapp9999: START: 処理が正常に完了しました。
停止操作
D:\tools\nssm\win64>nssm stop mywebapp9999
mywebapp9999: STOP: 処理が正常に完了しました。
再起動操作
サービスの状態に関わらず再起動を実行します:
D:\tools\nssm\win64>nssm restart mywebapp9999
mywebapp9999: STOP: サービスは開始されていません。
mywebapp9999: START: 処理が正常に完了しました。
D:\tools\nssm\win64>nssm restart mywebapp9999
mywebapp9999: STOP: 処理が正常に完了しました。
mywebapp9999: START: 処理が正常に完了しました。
設定変更
サービス名以外のパラメータを編集する場合:
D:\tools\nssm\win64>nssm edit mywebapp9999
サービス削除
確認プロンプト付きでサービスを完全に削除します:
D:\tools\nssm\win64>nssm remove mywebapp9999
Service "mywebapp9999" removed successfully!