Node.js HTTP-сервер как служба Windows - программирование
Подтвердить что ты не робот

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, который автоматически перезагружается при перезагрузке компьютера?

4b9b3361

Ответ 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