Como manejar procesos nodejs con PM2

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.

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

Bueno PM2 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. 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 desc

pm2_description

pm2 monit

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

Repositorio y documentación del Projecto

Share on Google+Share on LinkedInShare on RedditShare on TumblrTweet about this on TwitterShare on Facebook
  • Luis Alberto Romero Calderon

    Primero