24
30

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

winserを使用してnode.jsアプリをWindowsサービスに登録・実行する

Last updated at Posted at 2016-08-17

winserを使用してnode.jsアプリをWindowsサービスに登録・実行する

koa で作成したWebアプリをWindowsサービスとして実行したかったので winser というモジュールを使用してみました。

概要

  • winser を使用すると、node.jsのアプリを Windows Service に登録できる
  • winserは NSSM をラッピングしている
  • npm script にインストール・アンインストールのコマンドを登録する
  • package.jsonname がサービス名として使用される
  • インストール後はWindowsの SC コマンドを使用してサービスを起動・停止する
  • 登録したサービスを実行すると npm start に登録した内容が実行される

詳細

1. winserのインストール

普通に npm install winser でOK。

2. package.jsonの修正

  1. name をWindowsサービスに登録したい名前にする
  2. npm start でアプリが実行されるように修正する
  3. npm run install-servicewinser を使用してサービスをインストールするよう修正する
  4. npm run uninstall-servicewinser を使用してサービスをアンインストールするよう修正する
{
  "name": "hoge-service",
  "version": "1.0.0",
  "description": "Hogehoge Front-End Service",
  "main": "app.js",
  "scripts": {
    "start": "node.exe app.js",
    "test": "gulp",
    "install-service": "winser -i -a",
    "uninstall-service": "winser -r -x"
  },
  :
}

各オプションの意味は、以下のとおり。

  • -i : サービスのインストール
  • -a : サービス登録後に自動的に実行する
  • -r : サービスの削除
  • -x : サービス削除前に停止する

winser の README にあるように、 postinstall にインストールコマンドを指定すれば、 npm install 完了後に続けてサービス登録するようにできますが、今回は本番環境でのみサービス登録したかったので、明示的にコマンドを叩くようにしました。

3. サービス登録

2. package.jsonの修正 で登録した install-service を実行してインストールを行います。

実際にサービス実行されるとき、 npm start の内容が実行されます。
Local System の権限で動くので、システム環境変数で node.exePATH が通るように設定しておく必要があります。

  • コマンドプロンプトを 管理者として実行 します。
  • npm run install-service でインストールが実行されます。
C:\App\workspace\web-app>npm run install-service

> hoge-service@1.0.0 install-service C:\App\workspace\web-app
> winser -i -a

Use start command "node.exe app.js".
The program "hoge-service" was installed as a service.
The service for "hoge-service" was started.

4. サービス削除

  • コマンドプロンプトを 管理者として実行 します。
  • npm run uninstall-service でインストールが実行されます。
C:\App\workspace\web-app>npm run uninstall-service

> hoge-service@1.0.0 uninstall-service C:\App\workspace\web-app
> winser -r -x

The service for "hoge-service" was removed.

参考

24
30
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
24
30

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?