Node.js HTTP-сервер как служба Windows
Я создал простой http-сервер в Node.js.
Я хотел, чтобы он запускался на моем компьютере под управлением Windows 2008, так что, если компьютер перезагружается, он автоматически перезагружается.
Итак, я сделал это с помощью этой команды:
C:\Users\Administrator>sc create translate binPath= "node D:\Apps\translate\machine-learning-server\servertranslate.js" DisplayName= "Translation Server"
Затем запустили его с помощью
C:\Users\Administrator>sc start translate
и получил следующее сообщение об ошибке:
[SC] StartService FAILED 1053:
The service did not respond to the start or control request in a timely fashion.
Программа работает нормально, когда я запускаю ее из командной строки (а не как сервис).
Каков самый простой способ иметь веб-сервер Node.js, который автоматически перезагружается при перезагрузке компьютера?
Ответы
Ответ 1
В прошлом я использовал NSSM для запуска приложений Node.js в качестве служб в Windows. Он работает достаточно хорошо и может быть настроен на автоматическое перезапуск приложения в случае сбоя.
http://nssm.cc/usage
nssm install YourService "C:\Program Files\Node.js\node.exe" "C:\something\something.js"
Ответ 2
Насколько я помню, среда выполнения службы не совпадает с запуском чего-либо в командной оболочке. В частности, Сервисы должны отвечать на сообщения из системы, чтобы указать их статус работы, как вы видели: -)
Это должна быть проблема, хотя...
Конечно же:
https://npmjs.org/package/windows-service
Окна-сервис
Запустите программы Node.JS как собственные службы Windows.
npm install windows-service
Ответ 3
Как упоминалось в других вопросах об этом, я хотел бы поделиться здесь (потому что он еще не упоминался) node.js-модуль, называемый WinSer, который обертывает NSSM, и его использование очень просто, возможно, кому-то это помогает.
:)
Ответ 4
Используйте этот, очень простой
https://github.com/coreybutler/node-windows
Создайте два js файла в вашем проекте. И запустите их как
node your_service.js node your_service_remove.js
Для установки:
/**
* Created by sabbir on 08/18/2015.
*/
//ref: https://github.com/coreybutler/node-windows
var Service = require('node-windows').Service;
// Create a new service object
var svc = new Service({
name:'nodeDemoApp',
description: 'The nodejs.org example web server.',
script: 'D:\\NodeJS\\demoWeb\\bin\\www'
});
// Listen for the "install" event, which indicates the
// process is available as a service.
svc.on('install',function(){
svc.start();
});
svc.install();
Для удаления:
var Service = require('node-windows').Service;
// Create a new service object
var svc = new Service({
name:'nodeDemoApp',
script: require('path').join(__dirname,'bin\\www')
});
// Listen for the "uninstall" event so we know when it done.
svc.on('uninstall',function(){
console.log('Uninstall complete.');
console.log('The service exists: ',svc.exists);
});
// Uninstall the service.
svc.uninstall();
Ответ 5
В предположении, я бы сказал, что служба не знает, где найти двоичный файл node. Вероятно, вы обновили переменную PATH вашего профиля. Моя рекомендация состоит в том, чтобы ВСЕГДА печатать полный путь в сценариях службы.
Ответ 6
Вы можете попробовать пакет qckwinsvc. Сначала установите его глобально:
npm install -g qckwinsvc
И затем из cmd:
qckwinsvc
prompt: Service name: [...]
prompt: Service description: [...]
prompt: Node script path: [/path/to/.js file]
Чтобы удалить:
qckwinsvc --uninstall