Linux系と違ってシステムユーザーじゃないとWindowsでNode.jsアプリをデプロイして、ログオフしたらアプリもダウンされてしまいます。 システムユーザー権限でCmdを使用できますが、やり方が複雑すぎてめんどくさい。

多分、一番簡単な方法はシステムサービスを使うことだと思います。 システムサービスにアプリサービスを登録できたらシステムユーザーがコントロールしてくれます。つまり、通常のユーザーがログオフしてもアプリが立ち上げっぱなしできます。

このノートでNSSMを使用してNode.jsアプリをサービスとしてシステムサービスを登録し、 作業する.batファイルを投稿します。

1. システムサービスにアプリサービスを登録し開始する

開始.bat
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
@echo off
@echo サービスをアンインストール...
nssm stop <SERVICE_NAME>
nssm remove <SERVICE_NAME>

@echo サービスをインストール...
nssm install <SERVICE_NAME> "node"

@echo 引数を設定...
nssm set <SERVICE_NAME> AppDirectory "path\to\app"
nssm set <SERVICE_NAME> AppParameters "index.js"
nssm set <SERVICE_NAME> AppEnvironmentExtra "NODE_ENV=production"
nssm set <SERVICE_NAME> AppStdout "path\to\logs\nssm_out.log"
nssm set <SERVICE_NAME> AppStderr "path\to\logs\nssm_err.log"

echo サービスを開始...
nssm start <SERVICE_NAME>

@timeout 10

2. サービスを停止し、システムサービスから削除する

終了.bat
1
2
3
4
5
6
@echo off
@echo サービスをアンインストール...
nssm stop <SERVICE_NAME>
nssm remove <SERVICE_NAME>

@timeout 10

NSSMのコマンドラインの詳しくはHPにご参考ください。