Atualização de 2016:
A série node-windows / mac / linux usa uma API comum em todos os sistemas operacionais, portanto é uma solução absolutamente relevante. Contudo; O node-linux gera arquivos init do systemv. À medida que o systemd continua a crescer em popularidade, é realisticamente uma opção melhor no Linux. Os PR são bem-vindos se alguém quiser adicionar suporte systemd ao node-linux :-)
Tópico original:
Este é um encadeamento bastante antigo agora, mas o node-windows fornece outra maneira de criar serviços em segundo plano no Windows. É vagamente baseado no nssm
conceito de uso de um exe
wrapper em torno do script do nó. Contudo; ele usa em winsw.exe
vez disso e fornece um invólucro de nó configurável para controle mais granular sobre como o processo inicia / para em falhas. Esses processos estão disponíveis como qualquer outro serviço:
O módulo também utiliza alguns logs de eventos:
Daemonizing seu script é realizado através do código. Por exemplo:
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();
O módulo suporta coisas como limitar as reinicializações (para que scripts ruins não mantenham o servidor) e intervalos de tempo crescentes entre as reinicializações.
Como os serviços node-windows são executados como qualquer outro, é possível gerenciar / monitorar o serviço com o software que você já usa.
Finalmente, não há make
dependências. Em outras palavras, um simplesnpm install -g node-windows
funcionará. Você não precisa da mágica do Visual Studio, .NET ou node-gyp para instalar isso. Além disso, é licenciado para MIT e BSD.
Na divulgação completa, sou o autor deste módulo. Ele foi projetado para aliviar a dor exata que o OP experimentou, mas com uma integração mais estreita à funcionalidade que o Sistema Operacional já oferece. Espero que os futuros espectadores com essa mesma pergunta achem útil.