13

我看过无数关于如何使用 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"

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

GetProcessTimes() 失败:句柄无效。

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

更多注意事项:这是在 64 位 Windows 2008 R2 服务器上运行的。我确保我正在运行 NSSM 和 Node.js 的所有 64 位可执行文件。我也尝试过对两者都使用 32 位可执行文件。

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

4

3 回答 3

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\"

于 2013-05-09T18:10:18.563 回答
0

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

于 2013-05-07T20:55:11.120 回答
-2

NSSM 通常适用于 Node.js,因此这可能是权限问题。查看本教程,了解如何使用我们的商业应用程序设置 Node.js 以进行故障排除。您也可以随意使用 30 天试用版,因为它可能会返回更有用的错误消息,指出问题所在。

于 2013-05-07T21:43:33.750 回答