PM2 – Manejo de procesos Nodejs

Subir procesos y bajar procesos en un sistema linux puede ser suficiente para poner en ejecución un server nodejs y es cool en algunos casos se siente bien ejecutar kill PID para detener procesos pero luego de un tiempo no es tan cool, asi que las personas cool del area crearon PM2 para nuestro uso.

 

Esto «podria» ser suficiente para subir/ejecutar un server nodejs.


node server.js > stdout.txt 2> stderr.txt &

Pero que tal si con solo ejecutar

pm2 start server.js --name ServidorUno

Esta es una alternativa a tener que manejar a mano esto de los servidores NodeJS y es una alternativa mas a Node for Ever que es mejor que la primera pero se queda algo corta en comparación con PM2, nos brinda la opción de poder crear balanceadores de carga a nuestra aplicación sin alterar nuestro código el por si solo realiza todo el trabajo sucio detrás de escenas.

Entre sus Principales características podrían destacarse las siguientes:

-Capacidad de manejar un sin numero de apps. ( Ver el estado de distintas apps )
-Capacidad de monitoreo de memoria y cps de nuestros procesos.
-Manejo de logs. ( Cosas que imprimimos en nuestros procesos son mostrados ahi )
-Balanceo de cargas ya mencionado.
-Iniciar tus aplicaciones una vez el servidores se inicia.
-Capacidad de «watch your code» si tu codigo cambia.

este reiniciara el proceso, bien util a la hora de hacer pases sin tener down time.

Ejemplos de iniciar aplicaciones:

La forma de iniciar las aplicación tambien las registrara en la interface de pm2, por lo que solo se iniciara una sola vez de esta forma, luego seria pm2 start [id]|[name]

#ejemplo simple de como iniciar un proceso.
pm2 start server.js 

#iniciara el servidor con 3 procesos
pm2 start server.js -i 3

#inicia el servidor con el máximo numero de procesos posibles
pm2 start server.js -i max

#darle un nombre al proceso ( Esto es para manejarlo por nombre y olvidar el pid )
pm2 start server.js --name HelloServer

#pasar parámetros al iniciar el servidor
pm2 start server.js --node-args="--param=val -d"

#iniciar aplicación observada ( observa cambios en el file system )
pm2 start server.js --watch

Manejo de una aplicacion


pm2 start server.js --name=server-uno

pm2 restart server-uno

#eliminara server-uno de la interface de pm2
pm2 delete server-uno 

#eliminara a todas las aplicaciones ya registradas
pm2 delete all

Comandos de utilidad

#creara un init-script y se ejecutara cada vez que el servidor inicie.
pm2 startup [ubuntu|centos|systemd]

#mostrara todas las aplicaciones registradas
pm2 list

#recargara una aplicación
pm2 reload api

#mostrara los logs de todas las aplicaciones ya corriendo.
pm2 logs

#mostrara logs de la aplicación
pm2 logs appName
#guardara todos los cambios realizados con pm2 ( inicio de aplicación y demás configuraciones )
pm2 save

pm2 list

pm2_list

PM2 Proceso Lista

pm2 desc

pm2_description

PM2 Proceso Detalle

pm2 monit

pm2_monitoring

PM2 Process List

si este projecto les gusto les recomiendo este para un entorno de desarollo Nodemon super facil de usar.

Repositorio y documentación del Projecto