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

Rob*_*non 13 windows-services node.js

我已经看过无数关于如何使用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/');
Run Code Online (Sandbox Code Playgroud)

我使用此命令将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位可执行文件.

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

Rob*_*non 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 \"


leg*_*acy 0

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