我已经看过无数关于如何使用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位可执行文件。
谁能告诉我我失踪了什么?其他人可以复制这个问题吗?
答案 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天的试用版,因为它可能会返回一条更有用的错误消息,指出问题所在。