Как установить node.js в качестве службы Windows?

Я скачалNode.js исполняемый файл. Как я могу запустить этот исполняемый файл в качестве службы Windows? Я не могу использовать стандартный установщик node.js, так как мне нужно запускать несколько версий node.js одновременно.

Ответы на вопрос(6)

Решение Вопроса

Поздно на вечеринку, ноузел-окно тоже сделает свое дело.

enter image description here

Он также имеет встроенную систему регистрации.

enter image description here

Существует API для создания скриптов из кода, т.е.

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\\helloworld.js'
});

// Listen for the "install" event, which indicates the
// process is available as a service.
svc.on('install',function(){
  svc.start();
});

svc.install();

Ф.Д .: Я автор этого модуля.

 11 нояб. 2014 г., 07:47
@ Корей, как я могу бежатьJXCore Пакет как услуга с использованием этого модуля?
 18 сент. 2014 г., 19:15
во-вторых, это "потрясающе". Я просто следовал вашим инструкциям readme, и это работало прямо из коробки - очень редко! Единственное, что вы можете добавить в readme: как запустить созданный js-скрипт в CLI: i.e. & gt; узел set_up_win_service.js ...
 20 янв. 2015 г., 21:18
@Corey У меня есть простое приложение Http Node, но оно, похоже, не работает, используя этот сервис. Он устанавливается и запускается нормально, но сразу останавливается. Любая помощь будет с благодарностью, сэр! Средство просмотра событий не показывает ошибок, но выдает предупреждение: дочерний процесс [50732 - C: \ Program Files \ nodejs \ node.exe --harmony & quot; C: \ Users \ bmechkov \ AppData \ Roaming \ npm \ node_modules \ node-windows \ Lib \ wrapper.js & Quot; -f & quot; C: \ dev \ Node \ abs_tips \ server.js & quot; -l & quot; NODE ABS TIPS & quot; -g 0,25 -w 1 -r 3 -a n] заканчивается 0
 21 февр. 2015 г., 23:29
@Mechkov - Завершение с 0 означает успешный выход. Можете ли вы успешно запустить скрипт без окон узлов?
 12 нояб. 2014 г., 14:17
@Madhur - теоретически это может сработать, но я не планирую и не планирую его тестировать. В node-windows используется файл wrapper.js, который отвечает за мониторинг / перезапуск. Это только запускает скрипт узла как дочерний процесс. Также возможно конфигурировать путь к исполняемому файлу (то есть jx вместо узла). Итак, теоретически, вы, вероятно, могли бы сделать это, но я понятия не имею, с какими изюминками вы можете столкнуться.

диспетчер процессов + планировщик задач Я опубликовал год назад, хорошо работает с некоторыми одноразовыми установками обслуживания. Но недавно я начал проектировать систему в виде микросервисов, и многие мелкие сервисы общались друг с другом через IPC. Поэтому ручная настройка каждого сервиса стала невыносимой.

Для цели установки служб без ручной настройки я создалСерман, инструмент командной строки (установить сnpm i -g serman) установить исполняемый файл как сервис. Все, что вам нужно написать (и написать только один раз) - это простой файл конфигурации службы вместе с вашим исполняемым файлом. Бежать

serman install <path_to_config_file>

установит сервис.stdout а такжеstderr все вошли. Для получения дополнительной информации, посмотрите навеб-сайт проекта.

Рабочий файл конфигурации очень прост, как показано ниже. Но он также имеет много полезных функций, таких как<env> а также<persistent_env> ниже.

<service>
  <id>hello</id>
  <name>hello</name>
  <description>This service runs the hello application</description>

  <executable>node.exe</executable>

  <!-- 
       {{dir}} will be expanded to the containing directory of your 
       config file, which is normally where your executable locates 
   -->
  <arguments>"{{dir}}\hello.js"</arguments>

  <logmode>rotate</logmode>

  <!-- OPTIONAL FEATURE:
       NODE_ENV=production will be an environment variable 
       available to your application, but not visible outside 
       of your application
   -->
  <env name="NODE_ENV" value="production"/>

  <!-- OPTIONAL FEATURE:
       FOO_SERVICE_PORT=8989 will be persisted as an environment
       variable machine-wide.
   -->
  <persistent_env name="FOO_SERVICE_PORT" value="8989" />
</service>

Я не обращаюсь непосредственно к этому вопросу, но предоставляю альтернативу, которая также могла бы удовлетворить ваше требование более узким способом.

Функционально требования следующие:

Have the logic (app) running in the background Be able to start/stop the logic Automatically start the logic when system boots up

Этим требованиям можно удовлетворить, используя диспетчер процессов (PM) и заставляя диспетчер процессов запускаться при запуске системы. Два хороших PM, которые подходят для Windows:

PM2 forever

Чтобы запустить PM автоматически, самым простым способом является создание запланированной задачи с & quot; При запуске & quot; спусковой крючок:

enter image description here

 23 авг. 2017 г., 15:46
@Steampowered, как дать путь PM2_Home?
 11 мая 2016 г., 17:02
Если вы попытаетесь начатьpm2 при запуске пакетного сценария обязательно включите переменные среды, иначе он не будет работать. Обсуждено здесь:github.com/Unitech/pm2/issues/1079

Из этого блога

Next up, I wanted to host node as a service, just like IIS. This way it’d start up with my machine, run in the background, restart automatically if it crashes and so forth.

This is where nssm, the non-sucking service manager, enters the picture. This tool lets you host a normal .exe as a Windows service.

Here are the commands I used to setup an instance of the your node application as a service, open your cmd like administrator and type following commands:

nssm.exe install service_name c:\your_nodejs_directory\node.exe c:\your_application_directory\server.js
net start service_name

Winser это дружественная оболочка node.js для популярныхNSSM (Менеджер не сосущих услуг)

 29 янв. 2018 г., 12:50
@ J & # xFC; rgenSteinblock - это как раз то, что я сказал: отстойно размещенное приложение, а не сам менеджер сервисов
 20 дек. 2017 г., 09:58
не нравится NSSM, потому что он предполагает, что он не является сосущим, потому что он обрабатывает сбой размещенного приложения, так что на самом деле это всасывание размещенного приложения. Не нравится вообще обвинять Microsoft только потому, что это Microsoft.
 29 янв. 2018 г., 12:04
@FelicePollano NSSM предполагает, что это не-Sucking, потому что оно контролирует размещенное приложение, в отличие от других решений, таких как srvany, которые оставляют сервис в рабочем состоянии, даже если завершенный процесс умирает.
 30 янв. 2018 г., 14:47
@FelicePollano выход из размещенного приложения не означает что-то плохое. Суть в том, что NSSM отражает (или может отражать, если настроен должным образом) реальное состояние сервиса, поэтому сервис можно отслеживать, а не просто предполагать, что он работает, как другие менеджеры сервисов (как пользователь, которого я могу убить размещенный процесс, и srvary все равно покажет сервис в запущенном состоянии).

Я нашел эту вещь настолько полезной, что создал еще более простую в использовании обертку (НПМ, GitHub).

Устанавливаем это:

npm install -g qckwinsvc

Установка вашего сервиса:

qckwinsvc

prompt: Service name: [name for your service]
prompt: Service description: [description for it]
prompt: Node script path: [path of your node script]
Service installed

Деинсталляция вашего сервиса:

qckwinsvc --uninstall

prompt: Service name: [name of your service]
prompt: Node script path: [path of your node script]
Service stopped
Service uninstalled
 16 апр. 2018 г., 22:01
Спасибо, очень просто! quarky, у меня все работает (win 10 64 bit)
 21 февр. 2018 г., 09:11
Не работает для меня. ОС Win 10 64bit.
 13 авг. 2018 г., 16:58
Спасибо, прост в использовании, работает с моей win 10 64 бит.
 12 сент. 2018 г., 22:35
& # x201C; npm ERR! asyncWrite не является функцией & # x201D; & # x201C; npm ERR! pna.nextTick не является функцией & # x201D;

Ваш ответ на вопрос