Обновление 2016 года: в
серии node-windows / mac / linux используется общий API для всех операционных систем, поэтому это абсолютно актуальное решение. Однако; node-linux создает системные файлы инициализации. Поскольку популярность systemd продолжает расти, это действительно лучший вариант для Linux. PR приветствуется, если кто-то хочет добавить поддержку systemd в node-linux :-)
Оригинальная тема:
Сейчас это довольно старый поток, но ноды-окна предоставляют еще один способ создания фоновых сервисов в Windows. Это свободно основано на nssm
концепции использования exe
оболочки вокруг скрипта вашего узла. Однако; он использует winsw.exe
вместо этого и предоставляет настраиваемую оболочку узла для более детального контроля над тем, как процесс запускается / останавливается при сбоях. Эти процессы доступны как любой другой сервис:
Модуль также запекает в некоторых журналах событий:
Демонизация вашего скрипта осуществляется с помощью кода. Например:
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();
Модуль поддерживает такие вещи, как закрытие перезапусков (чтобы плохие скрипты не мешали вашему серверу) и увеличение временных интервалов между перезапусками
Поскольку службы узлов Windows работают, как и любые другие, можно управлять / контролировать службу с помощью любого программного обеспечения, которое вы уже используете.
Наконец, нет никаких make
зависимостей. Другими словами, просто npm install -g node-windows
будет работать. Вам не нужна Visual Studio, .NET или магия нод-гипса, чтобы установить это. Кроме того, это MIT и BSD лицензированы.
В полном раскрытии я являюсь автором этого модуля. Он был разработан для облегчения боли, которую испытал ОП, но с более тесной интеграцией в функциональность, которую уже обеспечивает операционная система. Я надеюсь, что будущие зрители с таким же вопросом найдут его полезным.