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 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:
1pm2 start app.js
Ver Estado de las Aplicaciones
Usa el comando pm2 list
para ver todas las aplicaciones en ejecución y su estado:
1pm2 list
Detener Aplicación
Usa el comando pm2 stop
para detener una aplicación específica:
1pm2 stop app.js
O puedes detenerla usando el ID de la aplicación:
1pm2 stop 0
Reiniciar Aplicación
Usa el comando pm2 restart
para reiniciar una aplicación específica:
1pm2 restart app.js
O puedes reiniciarla usando el ID de la aplicación:
1pm2 restart 0
Eliminar Aplicación
Usa el comando pm2 delete
para eliminar una aplicación específica:
1pm2 delete app.js
O puedes eliminarla usando el ID de la aplicación:
1pm2 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:
1pm2 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:
1pm2 logs app.js
O para ver los registros de todas las aplicaciones:
1pm2 logs
Monitoreo de Aplicaciones
Usa el comando pm2 monit
para monitorear en tiempo real el estado de todas las aplicaciones:
1pm2 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
:
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.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:
1pm2 startup
Luego, guarda la lista de procesos actuales:
1pm2 save
Recargar Aplicación
Si deseas recargar una aplicación sin interrumpir el servicio, usa el comando pm2 reload
:
1pm2 reload app.js
O usa el ID de la aplicación:
1pm2 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.