Guía Detallada del Uso de PM2: La Herramienta de Gestión de Procesos para Aplicaciones Node.js
- 549Palabras
- 3Minutos
- 25 Jul, 2024
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
- Gestión de Procesos: Iniciar, detener, reiniciar y eliminar aplicaciones.
- Monitoreo: Monitoreo en tiempo real del estado de las aplicaciones, uso de CPU y memoria.
- Administración de Registros: Visualización y gestión de los registros de las aplicaciones.
- Balanceo de Carga: Implementación de balanceo de carga mediante el modo clúster.
- Reinicio Automático: Reinicio automático de aplicaciones en caso de fallos o errores.
- Scripts de Inicio: Inicio automático de aplicaciones al arrancar el sistema.
- 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:
1npm install -g pm2Uso 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:
1pm2 start app.jsVer Estado de las Aplicaciones
Usa el comando pm2 list para ver todas las aplicaciones en ejecución y su estado:
1pm2 listDetener Aplicación
Usa el comando pm2 stop para detener una aplicación específica:
1pm2 stop app.jsO puedes detenerla usando el ID de la aplicación:
1pm2 stop 0Reiniciar Aplicación
Usa el comando pm2 restart para reiniciar una aplicación específica:
1pm2 restart app.jsO puedes reiniciarla usando el ID de la aplicación:
1pm2 restart 0Eliminar Aplicación
Usa el comando pm2 delete para eliminar una aplicación específica:
1pm2 delete app.jsO puedes eliminarla usando el ID de la aplicación:
1pm2 delete 0Uso 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:
1pm2 start app.js -i maxmax 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:
1pm2 logs app.jsO para ver los registros de todas las aplicaciones:
1pm2 logsMonitoreo de Aplicaciones
Usa el comando pm2 monit para monitorear en tiempo real el estado de todas las aplicaciones:
1pm2 monitUso de Archivos de Configuración JSON
PM2 permite gestionar aplicaciones mediante archivos de configuración JSON. Primero, crea un archivo ecosystem.config.js:
1module.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:
1pm2 start ecosystem.config.jsConfigurar 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:
1pm2 startupLuego, guarda la lista de procesos actuales:
1pm2 saveRecargar Aplicación
Si deseas recargar una aplicación sin interrumpir el servicio, usa el comando pm2 reload:
1pm2 reload app.jsO usa el ID de la aplicación:
1pm2 reload 0Resumen 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.