Guía Detallada del Uso de PM2: La Herramienta de Gestión de Procesos para Aplicaciones Node.js

PM2 es una herramienta de gestión de procesos diseñada específicamente para aplicaciones Node.js, con el objetivo de simplificar la implementación y administración de aplicaciones. Proporciona funcionalidades de inicio, detención, reinicio y monitoreo de aplicaciones, además de características avanzadas como reinicio automático, balanceo de carga y administración de registros. A continuación, se presenta una guía detallada sobre PM2 y su uso.

Funcionalidades Principales

  1. Gestión de Procesos: Iniciar, detener, reiniciar y eliminar aplicaciones.
  2. Monitoreo: Monitoreo en tiempo real del estado de las aplicaciones, uso de CPU y memoria.
  3. Administración de Registros: Visualización y gestión de los registros de las aplicaciones.
  4. Balanceo de Carga: Implementación de balanceo de carga mediante el modo clúster.
  5. Reinicio Automático: Reinicio automático de aplicaciones en caso de fallos o errores.
  6. Scripts de Inicio: Inicio automático de aplicaciones al arrancar el sistema.
  7. Gestión de Configuraciones: Gestión de múltiples aplicaciones mediante archivos de configuración JSON.

Instalación de PM2

Para usar PM2, primero necesitas instalarlo. Puedes hacerlo a través de npm:

Terminal window
1
npm install -g pm2

Uso Básico

Iniciar Aplicación

Para iniciar una aplicación, simplemente usa el comando pm2 start y especifica el archivo de entrada de la aplicación:

Terminal window
1
pm2 start app.js

Ver Estado de las Aplicaciones

Usa el comando pm2 list para ver todas las aplicaciones en ejecución y su estado:

Terminal window
1
pm2 list

Detener Aplicación

Usa el comando pm2 stop para detener una aplicación específica:

Terminal window
1
pm2 stop app.js

O puedes detenerla usando el ID de la aplicación:

Terminal window
1
pm2 stop 0

Reiniciar Aplicación

Usa el comando pm2 restart para reiniciar una aplicación específica:

Terminal window
1
pm2 restart app.js

O puedes reiniciarla usando el ID de la aplicación:

Terminal window
1
pm2 restart 0

Eliminar Aplicación

Usa el comando pm2 delete para eliminar una aplicación específica:

Terminal window
1
pm2 delete app.js

O puedes eliminarla usando el ID de la aplicación:

Terminal window
1
pm2 delete 0

Uso Avanzado

Iniciar Múltiples Instancias (Modo Clúster)

Usa la opción -i para iniciar múltiples instancias y aprovechar todos los núcleos de la CPU:

Terminal window
1
pm2 start app.js -i max

max inicia tantas instancias como núcleos de CPU tengas. También puedes especificar un número concreto de instancias, por ejemplo, -i 4 inicia 4 instancias.

Gestión de Registros

Para ver los registros de una aplicación específica:

Terminal window
1
pm2 logs app.js

O para ver los registros de todas las aplicaciones:

Terminal window
1
pm2 logs

Monitoreo de Aplicaciones

Usa el comando pm2 monit para monitorear en tiempo real el estado de todas las aplicaciones:

Terminal window
1
pm2 monit

Uso de Archivos de Configuración JSON

PM2 permite gestionar aplicaciones mediante archivos de configuración JSON. Primero, crea un archivo ecosystem.config.js:

1
module.exports = {
2
apps: [
3
{
4
name: "app",
5
script: "./app.js",
6
instances: "max",
7
exec_mode: "cluster",
8
watch: true,
9
env: {
10
NODE_ENV: "development",
11
},
12
env_production: {
13
NODE_ENV: "production",
14
},
15
},
16
],
17
};

Luego, usa el comando pm2 start para iniciar las aplicaciones definidas en el archivo de configuración:

Terminal window
1
pm2 start ecosystem.config.js

Configurar Inicio Automático al Arrancar el Sistema

PM2 puede configurarse para iniciar aplicaciones automáticamente al arrancar el sistema. Primero, genera el script de inicio:

Terminal window
1
pm2 startup

Luego, guarda la lista de procesos actuales:

Terminal window
1
pm2 save

Recargar Aplicación

Si deseas recargar una aplicación sin interrumpir el servicio, usa el comando pm2 reload:

Terminal window
1
pm2 reload app.js

O usa el ID de la aplicación:

Terminal window
1
pm2 reload 0

Resumen de Comandos Comunes

  • Iniciar aplicación: pm2 start <app>
  • Detener aplicación: pm2 stop <app>
  • Reiniciar aplicación: pm2 restart <app>
  • Eliminar aplicación: pm2 delete <app>
  • Ver lista de aplicaciones: pm2 list
  • Ver registros de aplicación: pm2 logs <app>
  • Monitoreo en tiempo real: pm2 monit
  • Configurar inicio automático: pm2 startup, pm2 save

Con estas funcionalidades, PM2 proporciona una solución completa para gestionar el ciclo de vida de las aplicaciones Node.js, simplificando la administración de aplicaciones desde el desarrollo hasta la implementación en producción, mejorando la estabilidad y fiabilidad de las mismas.