17

我在 Node.js 中创建了一个简单的 http 服务器。

我想让它在我的 Windows 2008 机器上永久运行,这样,如果计算机重新启动,它会自动重新启动。

所以我用这个命令把它变成了一个服务:

C:\Users\Administrator>sc create translate binPath= "node D:\Apps\translate\machine-learning-server\servertranslate.js" DisplayName= "Translation Server"

然后开始:

C:\Users\Administrator>sc start translate

并收到以下错误消息:

[SC] StartService FAILED 1053:

The service did not respond to the start or control request in a timely fashion.

当我从命令行(不是作为服务)启动它时,该程序运行正常。

让计算机重新启动时自动重新启动的 node.js Web 服务器的最简单方法是什么?

4

7 回答 7

16

过去,我使用 NSSM 在 Windows 上将 Node.js 应用程序作为服务运行。它工作得很好,并且可以配置为在发生崩溃时自动重新启动您的应用程序。

http://nssm.cc/usage

nssm install YourService "C:\Program Files\Node.js\node.exe" "C:\something\something.js"
于 2013-07-14T16:42:39.077 回答
7

我记得,Service 运行时环境与在命令 shell 下运行某些东西不同。特别是,服务需要响应来自系统的消息以指示其运行状态,如您所见 :-)

这一定是一个已解决的问题,虽然......

果然: https ://npmjs.org/package/windows-service

窗口服务

将 Node.JS 程序作为本机 Windows 服务运行。

npm 安装窗口服务

于 2013-07-14T16:06:16.953 回答
4

用这个,真的很简单 https://github.com/coreybutler/node-windows

在您的项目上创建两个 js 文件。并将它们运行为

节点 your_service.js 节点 your_service_remove.js

安装:

 /**
 * Created by sabbir on 08/18/2015.
 */
//ref: https://github.com/coreybutler/node-windows
var Service = require('node-windows').Service;

// Create a new service object
var svc = new Service({
  name:'nodeDemoApp',
  description: 'The nodejs.org example web server.',
  script: 'D:\\NodeJS\\demoWeb\\bin\\www'
});

// Listen for the "install" event, which indicates the
// process is available as a service.
svc.on('install',function(){
  svc.start();
});

svc.install();

对于卸载:

var Service = require('node-windows').Service;

// Create a new service object
var svc = new Service({
  name:'nodeDemoApp',
  script: require('path').join(__dirname,'bin\\www')
});

// Listen for the "uninstall" event so we know when it's done.
svc.on('uninstall',function(){
  console.log('Uninstall complete.');
  console.log('The service exists: ',svc.exists);
});

// Uninstall the service.
svc.uninstall();
于 2015-08-18T11:42:15.090 回答
2

猜测一下,我会说该服务不知道在哪里可以找到节点二进制文件。您可能已经更新了配置文件的 PATH 变量。我的建议是始终硬编码服务脚本中的完整路径。

于 2014-04-29T18:23:49.183 回答
2

正如其他问题中提到的那样,我想在这里分享一个(因为它还没有被引用)一个名为WinSer的 node.js 模块,它包装了 NSSM,它的使用非常简单,也许有一天它会对某人有所帮助。

:)

于 2015-07-08T18:38:50.640 回答
1

查看某些东西的下载量总是一个好主意。

PM2似乎赢了,而且很容易。

https://medium.com/@harshamw/deploying-a-node-js-application-in-iis-using-a-reverse-proxy-process-management-using-pm2-3d59b83d7f76

然后,您需要使用https://www.npmjs.com/package/pm2-windows-service在重新启动时将其作为 Windows 服务启动。

于 2021-02-13T04:53:43.527 回答
1

你可以试试包qckwinsvc。首先全局安装:

npm install -g qckwinsvc

然后从cmd:

qckwinsvc
prompt: Service name: [...]
prompt: Service description: [...]
prompt: Node script path: [/path/to/.js file]

要卸载:

qckwinsvc --uninstall

于 2017-10-18T07:49:00.707 回答