2013-05-07 42 views
12

NSSM(http://nssm.cc/)を使用してNodeJSプロセスを開始する方法については、無数の記事があります。NSSMを使用してWindowsサービスとしてNodeJsプロセスを開始できない

だから、私は次のような単純なNodeJSファイルがあります。

var http = require('http'); 
http.createServer(function (req, res) { 
    res.writeHead(200, { 'Content-Type': 'text/html' }); 
    res.end('<p>Hello World</p>'); 
}).listen(8000); 

console.log('Server running on http://localhost:8000/'); 

を私はWindowsサービスとしてNodeJSファイルをインストールするには、このコマンドを使用しています:

「C:\プログラムファイル\ SimpleNode SimpleNode \ node.exe "C:¥Program Files¥SimpleNode¥simple.js"

サービスがインストールされています。開始時にエラーメッセージが表示され、サービスは一時停止状態です。イベントビューアで次のエラーが表示されます。

GetProcessTimes()が失敗しました。ハンドルが無効です。

これは非常に簡単です。ローカル管理者権限を持つドメインアカウントを使用しようとしました。私はいくつかの異なるポート番号を試しました。私はコマンドラインから起動すると、アプリケーションは正常に動作します。

注: これは、64ビットのWindows 2008 R2サーバーで実行されています。 NSSMとNodeの両方で64ビットの実行可能ファイルをすべて実行していることを確認しました。私はまた、両方のために32ビットの実行可能ファイルを使用しようとしました。

誰かが私に行方不明を教えてもらえますか?他の誰かがこの問題を再現できますか?

答えて

0

何らかの理由でポートにアクセスできないようです。サービスを管理者として実行するように設定してください(Windows Server 2008のサーバーマネージャー>サービス>サービス名)、何が起こるかを確認してください。

+0

いいえ、私はそれを試しました。私は試したことのいくつかを使って質問を編集します。 –

+0

私が似たような問題(windows server 2008)を持っていたときに、これはうまくいきました – legacy

-2

NSSMは通常、Node.jsで正常に動作します。これはおそらく権限の問題です。トラブルシューティングを行うにはtutorial showing how to setup Node.js with our commercial applicationを確認してください。また、問題が何であるかを示すより有用なエラーメッセージを返す可能性があるので、30日間の試用版も自由に使用してください。

+0

AlwaysOnは私にNode.exeの32ビット版を使用させました。それはAlwaysOnで動作します。私はNSSMとNodeの両方の32ビット版を持っていることを確認しましたが、それでも私には同じ問題があります。 –

16

問題が見つかりました。

問題は、simple.jsファイルへのパスに空白が含まれていることです(Good Old "Program Files")。 NSSMが正しく解釈するには、引用符をバックスラッシュでエスケープする必要があります。正しいインストールコマンドラインは次のとおりです。

"C:\プログラムファイル\ SimpleNode \ nssm.exe" SimpleNodeをインストール "C:\プログラムファイル\ SimpleNodeの\ node.exe" \ "C:\プログラムファイル\ SimpleNode \ simple.js \ "

関連する問題