WinserでNode.jsのサーバーをサービス化してみる
Node.jsで作ったアプリをWindows上でサービスとして動作させる方法を調べてみました。
サービスにすることで、通常の常駐アプリなどとは異なり、PC起動後ユーザーとしてログインする前でも、アプリを動作させたりすることができます。
Windows環境向けでは、Winserってライブラリが使われることが多いようです。
ってことで、Winserを試してみました。
Winserとは
Node.jsのアプリをWin環境でサービス化して動作させるためのライブラリです。
https://www.npmjs.com/package/winser
このWinserというライブラリでは、内部でnssmというアプリを使用しています。
これは、任意のexeをサービスとして動作させるためのアプリです。
https://nssm.cc/
なので、Winserを使ってサービス化すると、以下のようにnssmのプロセスも一緒に立ち上がります。
Winserのインストール
まずは、プロジェクトのルートから、以下のコマンドでインストールします。
npm install winser --save
各種npmスクリプトの用意
winserのコマンドを簡単に呼び出せるように、package.jsonのscriptに以下のような項目を追加しておきます。
installService | サービスの登録 |
uninstallService | サービス登録解除 |
package.json
{ "name": "WinserTest", "version": "0.0.0", "description": "WinserTest", "main": "server.js", "dependencies": { "winser": "^1.0.0" }, "scripts": { "start": "node server.js", "installService": "winser -i -a", "uninstallService": "winser -r -x" } }
ちなみに、-a, -xのオプションをそれぞれつけていますが、これらを付けておくことで、サービス登録と同時にサービスの実行を開始したり、サービス登録解除と同時にサービス自体の実行を停止したり、ということができます。