Как установить узел.js как служба windows?



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

743   6  

6 ответов:

опоздал на вечеринку, но узел-windows будет делать трюк тоже.

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();

FD: я автор этого модуля.

WinSer - это узел.JS дружественная обертка вокруг популярного NSSM (Non-Sucking Service Manager)

Я нашел вещь настолько полезной, что я построил еще более простую в использовании обертку вокруг нее (npm,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

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

далее, я хотел разместить узел как службу, так же, как IIS. Именно такой образ он запустится с моей машиной, запустится в фоновом режиме, перезагрузится автоматически, если он падает и так далее.

вот тут nssm, не-сосать менеджер обслуживания, входит в изображение. Этот инструмент позволяет разместить нормальный .exe как служба Windows.

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

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

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

функциональные требования:

  1. логика (приложение) работает в фоновом режиме
  2. уметь запускать / останавливать логику
  3. автоматически запускать логику при загрузке системы

эти требования могут быть удовлетворены с помощью менеджера процессов (PM) и сделать диспетчер процессов запускается при запуске системы. Два хороших ПМС, которые являются Windows-friendly являются:

чтобы запустить PM автоматически, самый простой способ-создать запланированную задачу с триггером" при запуске":

enter image description here

The process manager + Task scheduler approach я опубликовал год назад хорошо работает с некоторыми одноразовыми установками службы. Но недавно я начал проектировать систему в микро-сервисной манере, со многими небольшими службами, разговаривающими друг с другом через 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>

Comments

    Ничего не найдено.