Actualización de 2016:
la serie node-windows / mac / linux utiliza una API común en todos los sistemas operativos, por lo que es una solución absolutamente relevante. Sin embargo; node-linux genera archivos systemv init. A medida que systemd continúa creciendo en popularidad, en realidad es una mejor opción en Linux. Los RP son bienvenidos si alguien quiere agregar soporte systemd a node-linux :-)
Hilo original:
Este es un hilo bastante antiguo ahora, pero node-windows proporciona otra forma de crear servicios en segundo plano en Windows. Se basa libremente en el nssm
concepto de usar un exe
contenedor alrededor de su script de nodo. Sin embargo; en su winsw.exe
lugar, utiliza y proporciona un contenedor de nodo configurable para un control más granular sobre cómo se inicia / detiene el proceso en caso de fallas. Estos procesos están disponibles como cualquier otro servicio:
El módulo también se hornea en algunos registros de eventos:
Daemonizar su script se logra a través del código. Por ejemplo:
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();
El módulo admite cosas como reinicios de límite (para que los scripts incorrectos no mangueen su servidor) e intervalos de tiempo crecientes entre reinicios.
Dado que los servicios de nodo-Windows se ejecutan como cualquier otro, es posible administrar / monitorear el servicio con cualquier software que ya use.
Finalmente, no hay make
dependencias. En otras palabras, un sencillonpm install -g node-windows
funcionará. No necesita Visual Studio, .NET o node-gyp magic para instalar esto. Además, tiene licencia MIT y BSD.
En total divulgación, soy el autor de este módulo. Fue diseñado para aliviar el dolor exacto que experimentó el OP, pero con una integración más estrecha en la funcionalidad que el sistema operativo ya proporciona. Espero que los futuros espectadores con esta misma pregunta lo encuentren útil.