Desplegar aplicación NodeJs con PM2
En el siguiente tutorial vamos a aprender cómo utilizar el gestor de procesos PM2
¿Qué es PM2?
PM2 es una aplicación que permite gestionar el despliegue de aplicaciones NodeJs y Python y su control en tiempo real. Es gratuito y de código abierto y dispone de un equilibrador de carga.
Reinicia automáticamente cualquier proceso que esté gestionando si deja de funcionar.
Las aplicaciones desplegadas con PM2 aplican los cambios en caliente, es decir, detecta los cambios realizados y los aplica automáticamente sin necesidad de reiniciar la aplicación.
¿Qué podemos hacer con PM2?
- Iniciar, parar o reiniciar el despliegue de una aplicación NodeJs
- Monitorizar estado, consumos y logs de cada aplicación desplegada
- Despliegue en modo cluster
- Gestionar varias aplicaciones desde un mismo lugar
Requisitos
Para poder instalar PM2 es necesario tener instalado NodeJs y el gestor de paquetes NPM
Ver Instalar NodeJs y NPM en Windows 10
Ver Instalar NodeJs y NPM en Ubuntu
Instalación de PM2
Desde la consola podemos instalar fácilmente PM2 con el siguiente comando
npm i -g pm2
Para comprobar que todo ha ido bien y ver la versión instalada
pm2 -v
Debería verse algo como
Actualización de PM2
Para actualizar a la última versión usaremos lo siguiente
pm2 update
Iniciar aplicación NodeJs
Para desplegar una aplicación tenemos que ir a su ruta y ejecutar el comando
pm2 start nombreAplicacion.js
Debería mostrar el estado
Iniciar en modo Cluster
La aplicación se iniciará en modo de alta disponibilidad (HA) co clúster, lo que incluirá balanceos de carga entre los demás procesos iniciados.
Para inciar la aplicación en modo cluster ejecutamos
pm2 start nombreAplicacion.js -i 2
Listar estados de aplicaciones
Para el estado de todas las aplicaciones desplegadas con pm2
pm2 list
Debería mostrar las 2 aplicaciones que tenemos actualmente desplegadas. La aplicación con id 0 (pruebaNodeJs) y la de id 1 (pruebaNodeJs2)
Reiniciar aplicación
Para reiniciar una aplicación usaremos el siguiente comando
pm2 restart pruebaNodeJs
También podemos indicar el id una vez que ya está en la lista.
pm2 restart 0
Logs
Para ver la información de los logs de PM2 podemos hacerlo con el siguiente comando. Nos mostrará los logs en tiempo real. Para parar pulsaremos Ctrl + c
pm2 logs
Para eliminar todos los logs usaremos lo siguiente
pm2 flush
Monitorizar estados
Para monitorizar el estado de todas las aplicaciones desplegadas
pm2 monit
Veremos un dashboard como el siguiente donde podremos ver lo que está pasando en cada una de las aplicaciones desplegadas
Si queremos cerrar el dashboard pulsaremos Ctrl + C
Más información
Para obtener un poco más de información sobre una aplicación desplegada haremos lo siguiente. En este caso tenemos que utilizar el id
pm2 show 0
Veremos algo como lo siguiente
Más comandos de PM2
Eliminar un proceso. Se debe indicar la id del proceso
pm2 delete 0
Eliminar todos los procesos
pm2 delete all
Parar un proceso. Se debe indicar la id del proceso
pm2 stop 0
Parar todos los procesos
pm2 stop all
Reiciciar un proceso. Se debe indicar la id del proceso
pm2 restart 0
Reiniciar todos los procesos
pm2 restart all