Saltar al contenido

Windows: inicio automático de PM2 y aplicaciones de nodo

Hola, encontramos la solución a lo que estabas buscando, continúa leyendo y la hallarás aquí.

ACTUALIZACIÓN 16 DE FEBRERO DE 2020:

Si es importante para usted que PM2 se inicie automáticamente sin que inicie sesión en la máquina (después de reiniciar), siga mi nuevo conjunto de instrucciones en lugar de las antiguas.

Nuevas instrucciones (recomendadas):

Requisitos previos (parte n. ° 1):

Primero, he instalado NPM en una ubicación que esté disponible para todos los usuarios. Dependiendo de su (s) caso (s) de uso, puede que no sea necesario. Pero si desea cambiar la ubicación predeterminada de NPM – debe hacerlo primero (antes de continuar). Así es como lo cambia a la ubicación (en la terminal como administrador): C:NodeJSnpm:

npm config set prefix "C:\NodeJS\npm"
npm config set cache "C:\NodeJS\npm-cache"
npm config set temp "C:\NodeJS\temp"
npm config ls -l (this will list all NPM settings -> look for the 3 lines/changes marked as `overriden`)

Requisitos previos (parte 2):

  1. Agregar y configurar PM2_HOME en System environments (no entornos de usuario). Me gusta: PM2_HOME = C:NodeJSnpm
  2. Agregar C:NodeJSnpm a la variable PATH del sistema existente (entonces está seguro de que funcionará; se han informado algunos problemas que PM2_HOME no siempre funciona).
  3. Cierre todos los terminales y ábralos de nuevo (como administrador). Las ventanas de su terminal ahora estarán al tanto de los cambios de su entorno.

Requisitos previos (parte 3):

  1. npm instalar pm2 -g
  2. npm i pm2-windows-service -g
  3. npm install -g npm-check-updates

Actualmente hay un error en un módulo que el paquete pm2-windows-service usos, así que solucionemos esto también, siga los pasos a continuación:

  1. En terminal cd en: C:NodeJSnpmnode_modulespm2-windows-service
  2. ncu inquirer esto solo genera la versión existente y la más nueva disponible del inquirer módulo que necesitamos actualizar, actualmente: versión: 1.1.2 -> 7.0.4.
  3. ncu inquirer -u esto actualizará su archivo packages.json.
  4. npm install esto descargará y actualizará el inquirer módulo (tenga en cuenta si no utiliza una sintaxis de versión específica en su packages.json archivo o ha realizado cambios manualmente -> otros módulos también se actualizarán.

Instale y configure PM2 (como servicio) para que se inicie automáticamente después de reiniciar:

  1. En terminal cd en: C:NodeJSnpmnode_modulespm2-windows-service
  2. pm2-service-install -n PM2_STARTUP_SCRIPT (PM2_STARTUP_SCRIPT será el “Nombre para mostrar” del servicio de Windows. Cámbialo a lo que prefieras y pulsa ENTER.)
  3. ¿Realizar la configuración del entorno (recomendado)? Yes
  4. ¿Establecer PM2_HOME? No (No es necesario, ya lo ha configurado)
  5. ¿Establecer PM2_SERVICE_SCRIPTS (la lista de scripts de inicio para pm2)? Yes
  6. Establecer la lista de scripts / archivos de inicio (archivos de configuración json separados por punto y coma o archivos js) ENTER (cuando no se ingresa nada, por defecto usará PM2 dump.pm2 archivo – que se crea cuando ejecuta PM2 -f save, Volveré y explicaré esto más adelante).
  7. ¿Establecer PM2_SERVICE_PM2_DIR (la ubicación del pm2 global para usar con el servicio)? Yes

  8. ¿Especifique el directorio que contiene la versión pm2 que utilizará el servicio? ENTER

Servicio PM2 instalado e iniciado.

  1. Abra Servicios en Windows y cambie el servicio para que se ejecute como Administrador (o su función preferida).

Configure las aplicaciones que desea PM2 para que se inicien, cuando se apague o después de reiniciar:

  1. pm2 start myApp.js --name mySuperApp
  2. pm2 -f save
  3. reiniciar o si usa AWS (o cualquier otro proveedor de nube). Reinicie su instancia: espere 5 minutos y luego inicie sesión en la máquina y ejecute pm2 ls y verifique que su aplicación haya estado funcionando durante ~ 5 minutos (y no solo unos segundos porque acaba de iniciar sesión).

Desinstale y limpie “pm2-windows-startup” de su registro (si cambia de mi “instrucción anterior” a las nuevas):

  1. npm desinstalar pm2-windows-startup -g
  2. Borrar el PM2 key desde el registro como en la imagen de abajo:

ingrese la descripción de la imagen aquí

Instrucciones antiguas (no recomendadas):

Mi respuesta anterior a continuación sigue funcionando, pero PM2 no se inicia a menos que inicie sesión en la máquina porque está cargando PM2 desde el registro y no lo ejecuta como un servicio.

No sé por qué, pero después de varios intentos, esto funcionó (en una instancia BASE de AWS Windows 2016 recién instalada)

  1. npm instalar pm2 -g
  2. npm instalar pm2-windows-startup -g
  3. instalación de pm2-startup
  4. pm2 inicia myApp.js –name mySuperApp
  5. pm2 guardar
  6. reiniciar
  7. pm2 ls

Encontré este tutorial muy útil: https://blog.cloudboost.io/nodejs-pm2-startup-on-windows-db0906328d75

el primer enfoque usando ‘nssm’ y un archivo .bat no funcionó para mí, así que seguí el enfoque 2: “Solución2: Usando pm2-windows-service”

Sin embargo, como se menciona en otras respuestas, el pm2-windows-service tiene un error,
que resolvió esta bifurcación: https://www.npmjs.com/package/@innomizetech/pm2-windows-service

así que en lugar del paquete anterior:

npm install -g pm2-windows-service

usa el nuevo:

npm install -g @innomizetech/pm2-windows-service

aquí un breve resumen del tutorial:

Configurar pm2

  1. npm i -g pm2
  2. Copiar C:UsersUSER.pm2 a C:etc.pm2
  3. establezca un nuevo nombre de variable de sistema (no a nivel de usuario): PM2_HOME valor: c:etc.pm2

Ejecutando su aplicación con pm2

  1. ejecute su aplicación pm2. es decir: pm2 start app.js --name=MY_API .
  2. pm2 save para crear un volcado de las aplicaciones actuales en ejecución.

Aplicación de prueba

  1. para probar que todo está funcionando, intente: pm2 kill y luego pm2 resurrect (la aplicación debería estar ejecutándose, consulte con pm2 status )

Ejecutar en el arranque

ahora tenemos que realizar el comando resucitar al inicio, así que:

  1. npm install -g @innomizetech/pm2-windows-service
  2. pm2-service-install -n PM2 --unattended

Eso es.

pm2-windows-startup funciona muy bien si está de acuerdo con el hecho de que se inicia al iniciar sesión. Sin embargo, si reinicia un servidor (por ejemplo, Windows Update) no tiene suerte.

pm2-windows-service funcionó para mí, usando @innomizetech fork, pero he tenido algunos problemas, probablemente debido al usuario o su configuración, o algo más. Básicamente, el servicio iniciaría una versión anterior de la lista de procesos guardada, aunque lo intenté pm2 delete all, pm2 start ecosystem.config.js, pm2 save.

Recurrí a una solución casera muy sencilla:

  1. Crea un archivo pm2-resurrect.sh en C:, que contiene la línea única pm2 resurrect.
  2. En el Programador de tareas, agregue una nueva tarea que se ejecute al arrancar y seleccione que se ejecute independientemente de que el usuario haya iniciado sesión o no. Debe escribir la contraseña de usuario en este punto, que se guarda para ejecuciones sucesivas.
  3. Establecer el comando de tarea para ejecutar el archivo C:pm2-resurrect.sh.

En mi caso tengo Git para Windows que viene con bash, que abre el archivo y lo ejecuta. No lo probé, pero supongo que podrías tener un .cmd archivo con el mismo contenido.

Eres capaz de añadir valor a nuestra información dando tu veteranía en las notas.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags :

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *