2016年の更新:
node-windows / mac / linuxシリーズは、すべてのオペレーティングシステムで共通のAPIを使用しているため、完全に関連するソリューションです。しかしながら; node-linuxはsystemv initファイルを生成します。systemdの人気が高まるにつれ、現実的にはLinuxでのオプションとしてより優れています。systemdサポートをnode-linuxに追加したい場合は、PRを歓迎します:-)
元のスレッド:
これはかなり古いスレッドですが、node-windowsはWindowsでバックグラウンドサービスを作成する別の方法を提供します。これは、大まかに、ノードスクリプトの周りにラッパーnssm
を使用するという概念に基づいていexe
ます。しかしながら; winsw.exe
代わりに使用し、構成可能なノードラッパーを提供して、障害時にプロセスが開始/停止する方法をより詳細に制御します。これらのプロセスは、他のサービスと同様に利用できます。
このモジュールは、いくつかのイベントロギングでもベイクします。
スクリプトのデーモン化は、コードを通じて行われます。例えば:
var Service = require('node-windows').Service;
// Create a new service object
var svc = new Service({
name:'Hello World',
description: 'The nodejs.org example web server.',
script: 'C:\\path\\to\\my\\node\\script.js'
});
// Listen for the "install" event, which indicates the
// process is available as a service.
svc.on('install',function(){
svc.start();
});
// Listen for the "start" event and let us know when the
// process has actually started working.
svc.on('start',function(){
console.log(svc.name+' started!\nVisit http://127.0.0.1:3000 to see it in action.');
});
// Install the script as a service.
svc.install();
このモジュールは、再起動の上限(悪いスクリプトがサーバーに影響を与えないようにする)や再起動間の時間間隔の増加などをサポートします。
node-windowsサービスは他のサービスと同じように実行されるため、すでに使用しているソフトウェアでサービスを管理/監視することが可能です。
最後に、make
依存関係はありません。言い換えれば、単純明快npm install -g node-windows
に機能します。これをインストールするには、Visual Studio、.NET、またはnode-gypのマジックは必要ありません。また、MITおよびBSDライセンスです。
完全な開示では、私はこのモジュールの作者です。これは、OPが経験した正確な苦痛を軽減するように設計されましたが、オペレーティングシステムがすでに提供している機能とより緊密に統合されています。これと同じ質問を持つ将来の視聴者に役立つと思います。