PM2 es un gestor de procesos para tu propio servidor Cloud VPS o Servidor Dedicado autogestionado por ti, que te puede ayudar a administrar y mantener tu App Node.js o Python, entre otros, capaz de soportar cantidades enormes de tráfico con un consumo de recursos optimizado para grandes volúmenes y con herramientas que facilitan la administración de tus Apps desde una interfaz web.
Entre otras cosas PM2 te permitirá:
- Iniciar, reiniciar, recargar, detener o eliminar una App de Node.js, Python, Golang, etc.
- Detectar y aplicar cambios de tu App automáticamente
- Monitorear y diagnosticar tu App vía terminal o interfaz web (verificar estado, consumos, logs, métricas, etc.)
- Reiniciar automáticamente tu App si se bloquea o se detiene por un error inesperado
- Ejecutar tu App en modo alta disponibilidad (HA) o clúster (con balanceo de carga entre procesos)
- Administrar múltiples aplicaciones multi-plataforma en una misma interfaz
Si bien esta guía está oriendata a PM2 para utilizar con NodeJS, PM2 también puede ser utilizado para Apps hechas en Python y Go o Golang, entre otros.
No se recomienda el uso de PM2 en servicios de hosting o en apps pequeñas, debido a que consume una cantidad elevada de recursos de base, o incluso consumir más que tu propia app de Node.js.
Si tienes un servicio de Cloud VPS o Servidor Dedicado gestionado por WNPower, te sugerimos utilizar Node.js o Python desde tu panel de control cPanel, ya que se ejecutará de una manera mucho más nativa para aprovechar al máximo los recursos de tu propio servidor.
Instalar PM2
Para poder instalar PM2 primero necesitarás tener una cuenta de Cloud Hosting o superior y tener instalado NodeJS (en su última versión LTS estable) y NPM en tu cuenta de hosting. Aquí te explicamos cómo: Cómo instalar Node.js
Luego deberás ejecutar los siguiente comandos desde la terminal para instalar PM2 de forma global, para utilizarlo en cualquier App de NodeJS de tu hosting:
mkdir ~/lib
Y luego:
npm install -g pm2
Iniciar y detener tu App NodeJS con PM2
En lugar de ejecutar "node" para iniciar tu app, deberás iniciarla mediante "pm2".
Para iniciar tu App NodeJS, ingresa a la carpeta donde se encuentre tu aplicación y ejecuta lo siguiente (reemplaza "my_app.js" por el archivo principal de tu app):
pm2 start my_app.js
Si le agregas al final el parámetro --watch, PM2 observará y reiniciará automáticamente tu App cuando detecte cualquier cambio en los archivos (por ejemplo, ante un update de código)
Para detener tu app, ejecuta lo siguiente (reemplaza "test_app" por el nombre de tu app):
pm2 stop test_app
Estado de tu App (Consola o Terminal)
Para obtener una lista de los procesos actuales, con su información resumida, ejecuta el siguiente comando:
pm2 list
También puedes abrir el monitor basado en terminal, en el cual encontrarás información más detallada y actualizada en tiempo real desde la terminal:
pm2 monit
Nota: Si al ejecutar "pm2 list" recibes un error "spawn node EAGAIN", deberás actualizar PM2 ejecutando en consola los siguientes comandos:
npm install pm2@latest -g
pm2 update
Estado de tu App (Interfaz Web)
Esta es una forma más cómoda y completa de monitorear tus Apps vía interfaz web:
- Crea una cuenta gratuita en https://app.pm2.io/
- En el asistente nos pedirá crear un "Bucket" que será quien guardará todas las métricas de nuestra App.
- Al terminar el asistente, nos dará un resumen en pantalla de lo necesario para linkear nuestra App NodeJS. De esta pantalla deberemos copiar y ejecutar el comando "pm2 link":
- ¡Listo! Cuando inicies tu App la podrás ver en este maravilloso panel de control web para NodeJS.
Ver Logs de tu App
El siguiente comando mostrará los últimos registros de log de tu app en consola o terminal y quedará activo mostrando los nuevos mensajes que aparezcan (puedes salir presionando "Ctrl+C").
pm2 logs
para ver registros más antiguos puedes usar como parámetro --lines
Debug de tu App con PM2
Cómo hacer debug de aplicaciones que corren en PM2
Levantar tu aplicación NodeJS+PM2 por si sola usando CRON
Para asegurarte de que tu App NodeJS se mantega iniciada a pesar de actualizaciones y reinicios del servidor de hosting donde se encuentra alojada, crea la siguiente tarea programada CRON cada 15 o 30 minutos en tu cPanel:
PATH=$PATH:$HOME/bin:$HOME/nodejs/bin; export PATH; /usr/bin/pgrep 'PM2' -u "$(whoami)" >/dev/null || (cd ~/CarpetaApp/; pm2 start NombreApp.js --watch)
Recuerda reemplazar "CarpetaApp" por la carpeta de tu App y "NombreApp.js" por el archivo de inicio que le corresponda.
Si tienes un servicio gestionado por WNPower de Cloud VPS o Servidor Dedicado, recuerda abrir un ticket para que previamente activemos en tu consola la compatibilidad con NodeJS/PM2.
Comentarios
0 comentarios
Inicie sesión para dejar un comentario.