2016更新:
node-windows / mac / linux系列在所有操作系统上使用通用的API,因此绝对是一个相关的解决方案。然而; node-linux生成systemv初始化文件。随着systemd的持续流行,实际上它是Linux上更好的选择。如果有人想向node-linux添加systemd支持,则PR表示欢迎:-)
原始线程:
现在这是一个相当老的线程,但是节点窗口提供了另一种在Windows上创建后台服务的方法。它大致基于在节点脚本周围nssm
使用exe
包装器的概念。然而; 它winsw.exe
改为使用它,并提供可配置的节点包装,以更精细地控制流程在故障发生时如何启动/停止。这些过程与其他服务一样可用:
该模块还包含一些事件日志记录:
守护脚本是通过代码完成的。例如:
var Service = require('node-windows').Service;
// Create a new service object
var svc = new Service({
name:'Hello World',
description: 'The nodejs.org example web server.',
script: 'C:\\path\\to\\my\\node\\script.js'
});
// Listen for the "install" event, which indicates the
// process is available as a service.
svc.on('install',function(){
svc.start();
});
// Listen for the "start" event and let us know when the
// process has actually started working.
svc.on('start',function(){
console.log(svc.name+' started!\nVisit http://127.0.0.1:3000 to see it in action.');
});
// Install the script as a service.
svc.install();
该模块支持诸如限制重新启动的上限(这样,错误的脚本不会使您的服务器瘫痪)以及重新启动之间的时间间隔越来越长。
由于节点Windows服务的运行方式与其他服务一样,因此可以使用您已经使用的任何软件来管理/监视该服务。
最后,没有make
依赖关系。换句话说,简单npm install -g node-windows
易用。您不需要安装Visual Studio,.NET或node-gyp魔术。此外,它还获得了MIT和BSD的许可。
我完全是本模块的作者。它旨在减轻OP所遭受的确切痛苦,但与操作系统已提供的功能之间的紧密集成。我希望将来有同样问题的观众也能从中受益。