Aktualizacja 2016:
Seria node-windows / mac / linux używa wspólnego API we wszystkich systemach operacyjnych, więc jest to absolutnie odpowiednie rozwiązanie. Jednak; node-linux generuje systemowe pliki inicjujące. Ponieważ systemd stale zyskuje na popularności, jest to w rzeczywistości lepsza opcja w systemie Linux. PR jest mile widziany, jeśli ktoś chce dodać obsługę systemową do node-linux :-)
Oryginalny wątek:
Jest to dość stary wątek, ale węzły-okna zapewniają inny sposób tworzenia usług w tle w systemie Windows. Jest luźno oparty na nssm
koncepcji użycia exe
opakowania wokół skryptu węzła. Jednak; używa winsw.exe
zamiast tego i zapewnia konfigurowalne opakowanie węzła dla bardziej szczegółowej kontroli nad sposobem uruchamiania / zatrzymywania procesu w przypadku awarii. Te procesy są dostępne jak każda inna usługa:
Moduł piecze także przy logowaniu niektórych zdarzeń:
Daemonizacja skryptu odbywa się za pomocą kodu. Na przykład:
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();
Moduł obsługuje takie elementy, jak ograniczanie restartów (więc złe skrypty nie łączą serwera) i wydłużanie odstępów czasu między restartami.
Ponieważ usługi węzłów-okien działają jak wszystkie inne, możliwe jest zarządzanie / monitorowanie usługi za pomocą dowolnego oprogramowania, którego już używasz.
Wreszcie nie ma make
zależności. Innymi słowy, proste npm install -g node-windows
będzie działać. Nie potrzebujesz Visual Studio, .NET ani magii gyp-node, aby to zainstalować. Ponadto jest na licencji MIT i BSD.
W pełnym ujawnieniu jestem autorem tego modułu. Został zaprojektowany, aby złagodzić dokładny ból, jakiego doświadczył OP, ale dzięki ściślejszej integracji z funkcjonalnością, którą system operacyjny już zapewnia. Mam nadzieję, że przyszli widzowie z tym samym pytaniem uznają je za przydatne.