使用NSSM启动NodeJs进程作为Windows服务不起作用

时间:2013-05-07 19:48:18

标签: node.js windows-services

我已经看过无数关于如何使用NSSM(http://nssm.cc/)来启动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/');

我正在使用此命令将NodeJS文件安装为Windows服务:

  

“C:\ Program Files \ SimpleNode \ nssm.exe”安装SimpleNode“C:\ Program Files \ SimpleNode \ node.exe”“C:\ Program Files \ SimpleNode \ simple.js”

已安装该服务。当我启动它时,我收到一条错误消息,服务处于Paused状态,我在事件查看器中看到以下错误:

  

GetProcessTimes()失败:句柄无效。

这应该很简单。我尝试使用具有本地管理员权限的域帐户。我尝试了几个不同的端口号。当我从命令行启动它时,该应用程序正常工作。

更多说明: 这是在64位Windows 2008 R2服务器上运行。我确保我为NSSM和Node运行所有64位可执行文件。我也尝试过使用32位可执行文件。

谁能告诉我我失踪了什么?其他人可以复制这个问题吗?

3 个答案:

答案 0 :(得分:16)

发现了这个问题。

问题是simple.js文件的路径中有一个空格(Good Old“Program Files”)。您必须使用反斜杠转义引号,以便NSSM正确解释它。正确的安装命令行是:

  

“C:\ Program Files \ SimpleNode \ nssm.exe”安装SimpleNode“C:\ Program Files \ SimpleNode \ node.exe”\“C:\ Program Files \ SimpleNode \ simple.js \”

答案 1 :(得分:0)

听起来您出于某种原因无法访问端口。尝试将服务设置为以管理员身份运行(服务器管理器&gt;服务&gt; Windows服务器2008上的服务名称),看看会发生什么。

答案 2 :(得分:-2)

NSSM通常可以与Node.js一起使用,因此这可能是一个权限问题。请查看此tutorial showing how to setup Node.js with our commercial application进行问题排查。并且可以随意使用30天的试用版,因为它可能会返回一条更有用的错误消息,指出问题所在。