2016 Güncellemesi:
node-windows / mac / linux serisi tüm işletim sistemlerinde ortak bir API kullanır, bu yüzden kesinlikle ilgili bir çözümdür. Ancak; node-linux systemv init dosyalarını oluşturur. Systemd popülaritesi arttıkça, Linux'ta gerçekçi olarak daha iyi bir seçenektir. Birisi node-linux'a systemd desteği eklemek isterse PR'nin hoş geldiniz :-)
Orijinal Konu:
Bu şimdi oldukça eski bir iş parçacığıdır, ancak düğüm pencereleri Windows'ta arka plan hizmetleri oluşturmak için başka bir yol sağlar. Düğüm betiğinizin etrafında nssm
bir exe
sarıcı kullanma kavramına gevşekçe dayanır . Ancak; bunun winsw.exe
yerine kullanır ve işlemin hatalarda nasıl başladığı / durduğuna ilişkin daha ayrıntılı denetim için yapılandırılabilir bir düğüm sarmalayıcı sağlar. Bu işlemler diğer hizmetler gibi kullanılabilir:
Modül ayrıca bazı olay kayıtlarında da pişirme yapar:
Senaryonuzun Daemonize kod ile yapılır. Örneğin:
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();
Modül, yeniden başlatmaların kapatılması (kötü komut dosyaları sunucunuzu hortumlamıyor) ve yeniden başlatmalar arasında artan zaman aralıkları gibi şeyleri destekler.
Düğüm pencereleri hizmetleri başkaları gibi çalıştığından, zaten kullandığınız yazılımlarla hizmeti yönetmek / izlemek mümkündür.
Son olarak, make
bağımlılıklar yoktur . Başka bir deyişle, açık bir npm install -g node-windows
şekilde çalışacaktır. Bunu yüklemek için Visual Studio, .NET veya node-gyp sihri gerekmez. Ayrıca, MIT ve BSD lisanslıdır.
Tam açıklamada, bu modülün yazarıyım. OP'nin yaşadığı acıyı hafifletmek için tasarlanmıştır, ancak İşletim Sistemi'nin zaten sağladığı işlevselliğe daha sıkı entegrasyon ile. Umarım bu aynı soruyla gelecekteki izleyiciler bunu yararlı bulur.