Как установить узел.js как служба windows?
Я скачал узел.js исполняемый файл. Как я могу запустить этот исполняемый файл в качестве службы windows?
Я не могу использовать стандартный узел.JS installer, так как мне нужно запустить несколько версий узла.Яш одновременно.
6 ответов:
опоздал на вечеринку, но узел-windows будет делать трюк тоже.
Он также имеет встроенный системный журнал.
есть 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
Я не обращаюсь к вопросу напрямую, но предоставляю альтернативу, которая также может удовлетворить ваши требования в большем узле.Яш моды.
функциональные требования:
- логика (приложение) работает в фоновом режиме
- уметь запускать / останавливать логику
- автоматически запускать логику при загрузке системы
эти требования могут быть удовлетворены с помощью менеджера процессов (PM) и сделать диспетчер процессов запускается при запуске системы. Два хороших ПМС, которые являются Windows-friendly являются:
чтобы запустить PM автоматически, самый простой способ-создать запланированную задачу с триггером" при запуске":
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