visual studio proyecto nodejs node crear node.js windows-services

node.js - proyecto - node js visual studio 2017



¿Cómo instalar node.js como servicio de Windows? (6)

El enfoque de administrador de procesos + programador de tareas que publiqué hace un año funciona bien con algunas instalaciones de servicios únicos. Pero recientemente comencé a diseñar el sistema en una forma de micro servicio, con muchos pequeños servicios que se comunican entre sí a través de IPC. Por lo tanto, la configuración manual de cada servicio se ha vuelto insoportable.

Con el objetivo de instalar servicios sin configuración manual, creé serman , una herramienta de línea de comandos (instalar con npm i -g serman ) para instalar un ejecutable como servicio. Todo lo que necesita para escribir (y solo escribir una vez) es un archivo de configuración de servicio simple junto con su ejecutable. correr

serman install <path_to_config_file>

instalará el servicio. stdout y stderr están todos registrados. Para obtener más información, eche un vistazo al serman .

Un archivo de configuración en funcionamiento es muy simple, como se demuestra a continuación. Pero también tiene muchas funciones útiles, como <env> y <persistent_env> continuación.

<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>

He descargado el ejecutable node.js ¿Cómo puedo ejecutar ese ejecutable como servicio de Windows? No puedo usar el instalador estándar node.js, ya que necesito ejecutar varias versiones de node.js simultáneamente.


Encontré la cosa tan útil que construí un envoltorio aún más fácil de usar a su alrededor ( npm , github ).

Instalarlo:

npm install -g qckwinsvc

Instalando su servicio:

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

Desinstalando tu servicio:

qckwinsvc --uninstall

prompt: Service name: [name of your service] prompt: Node script path: [path of your node script] Service stopped Service uninstalled


No estoy respondiendo la pregunta directamente, sino que estoy brindando una alternativa que también podría cumplir con sus requisitos de una manera más nómada para la moda.

Funcionalmente los requisitos son:

  1. Tener la lógica (aplicación) ejecutándose en segundo plano
  2. Ser capaz de iniciar / detener la lógica
  3. Inicia automáticamente la lógica cuando el sistema arranca

Estos requisitos se pueden cumplir utilizando un administrador de procesos (PM) y haciendo que el administrador de procesos se inicie al iniciar el sistema. Dos buenos PM que son amigables para Windows son:

Para que el PM se inicie automáticamente, la forma más sencilla es crear una tarea programada con un desencadenante "Al inicio":


Tarde a la fiesta, pero node-windows también harán el truco.

También tiene incorporado el registro del sistema.

Hay una API para crear scripts a partir de código, es decir,

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: soy el autor de este módulo.



De este blog

Luego, quería alojar el nodo como un servicio, al igual que IIS. De esta manera, se iniciará con mi máquina, se ejecutará en segundo plano, se reiniciará automáticamente si se bloquea y así sucesivamente.

Aquí es donde nssm , el administrador de servicios no chupador, entra en escena. Esta herramienta le permite alojar un .exe normal como un servicio de Windows.

Estos son los comandos que utilicé para configurar una instancia de su aplicación de nodo como un servicio, abra su cmd como administrador y escriba los siguientes comandos:

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