Aggiornamento 2016:
la serie node-windows / mac / linux utilizza un'API comune su tutti i sistemi operativi, quindi è assolutamente una soluzione rilevante. Però; node-linux genera file init systemv. Poiché systemd continua a crescere in popolarità, è realisticamente un'opzione migliore su Linux. Il PR è il benvenuto se qualcuno vuole aggiungere il supporto di systemd a node-linux :-)
Discussione originale:
Questo è un thread piuttosto vecchio ora, ma node-windows offre un altro modo per creare servizi in background su Windows. È vagamente basato sul nssm
concetto di utilizzare un exe
wrapper attorno allo script del nodo. Però; utilizza winsw.exe
invece e fornisce un wrapper di nodo configurabile per un controllo più granulare sull'avvio / arresto del processo in caso di errori. Questi processi sono disponibili come qualsiasi altro servizio:
Il modulo esegue anche la registrazione di alcuni eventi:
La demonizzazione dello script viene eseguita tramite codice. Per esempio:
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();
Il modulo supporta cose come il riavvio dei limiti (quindi gli script errati non fanno il tubo sul server) e aumentano gli intervalli di tempo tra i riavvii.
Poiché i servizi nodo-windows funzionano come qualsiasi altro, è possibile gestire / monitorare il servizio con qualsiasi software già in uso.
Infine, non ci sono make
dipendenze. In altre parole, un semplice npm install -g node-windows
funzionerà. Non è necessario Visual Studio, .NET o node-gyp magic per installarlo. Inoltre, ha la licenza MIT e BSD.
In piena divulgazione, sono l'autore di questo modulo. È stato progettato per alleviare l'esatta sofferenza dell'OP, ma con una più stretta integrazione nella funzionalità già fornita dal sistema operativo. Spero che i futuri spettatori con questa stessa domanda lo trovino utile.