PM2 es un administrador de procesos de producción para aplicaciones Node.js con un enfoque en mantener las aplicaciones en línea y optimizar el rendimiento. En esta sección, aprenderás cómo instalar y configurar PM2, así como cómo utilizar sus características principales para gestionar tus aplicaciones Node.js.
¿Qué es PM2?
PM2 es una herramienta que te permite:
- Ejecutar aplicaciones Node.js en segundo plano.
- Monitorear el rendimiento y el estado de las aplicaciones.
- Reiniciar automáticamente las aplicaciones en caso de fallos.
- Escalar aplicaciones en múltiples núcleos de CPU.
- Gestionar variables de entorno y configuraciones.
Instalación de PM2
Para instalar PM2, necesitas tener Node.js y npm (Node Package Manager) instalados en tu sistema. Puedes instalar PM2 globalmente usando el siguiente comando:
Iniciando una Aplicación con PM2
Para iniciar una aplicación Node.js con PM2, usa el comando pm2 start
seguido del nombre del archivo de tu aplicación. Por ejemplo, si tu archivo de aplicación se llama app.js
, puedes iniciarlo con:
Ejemplo Práctico
Supongamos que tienes una aplicación simple en app.js
:
const http = require('http'); const server = http.createServer((req, res) => { res.writeHead(200, { 'Content-Type': 'text/plain' }); res.end('Hello, world!\n'); }); server.listen(3000, () => { console.log('Server running at http://localhost:3000/'); });
Para iniciar esta aplicación con PM2, ejecuta:
Monitoreo de Aplicaciones
PM2 proporciona varios comandos para monitorear y gestionar tus aplicaciones:
pm2 list
: Muestra una lista de todas las aplicaciones gestionadas por PM2.pm2 show <id|name>
: Muestra detalles sobre una aplicación específica.pm2 logs
: Muestra los logs de todas las aplicaciones.pm2 monit
: Abre una interfaz de monitoreo interactiva.
Ejemplo de Monitoreo
Después de iniciar tu aplicación, puedes ver la lista de aplicaciones gestionadas por PM2 con:
Esto mostrará una tabla con información sobre cada aplicación, incluyendo su ID, nombre, estado, y uso de CPU y memoria.
Reinicio y Detención de Aplicaciones
PM2 permite reiniciar y detener aplicaciones fácilmente:
pm2 restart <id|name>
: Reinicia una aplicación específica.pm2 stop <id|name>
: Detiene una aplicación específica.pm2 delete <id|name>
: Elimina una aplicación de la lista de PM2.
Ejemplo de Reinicio y Detención
Para reiniciar la aplicación app.js
, usa:
Para detener la aplicación, usa:
Gestión de Variables de Entorno
PM2 permite definir variables de entorno para tus aplicaciones. Puedes hacerlo usando un archivo de configuración JSON o directamente en la línea de comandos.
Usando un Archivo de Configuración
Crea un archivo ecosystem.config.js
con el siguiente contenido:
module.exports = { apps: [ { name: 'app', script: 'app.js', env: { NODE_ENV: 'development', PORT: 3000 }, env_production: { NODE_ENV: 'production', PORT: 8080 } } ] };
Inicia la aplicación con:
Usando la Línea de Comandos
También puedes definir variables de entorno directamente en la línea de comandos:
Escalado de Aplicaciones
PM2 permite escalar aplicaciones en múltiples núcleos de CPU. Para escalar una aplicación, usa el comando pm2 scale
:
Esto iniciará 4 instancias de la aplicación app
.
Persistencia de Procesos
Para asegurarte de que tus aplicaciones gestionadas por PM2 se reinicien automáticamente después de un reinicio del sistema, puedes guardar la lista de procesos y configuraciones actuales con:
Luego, configura PM2 para que se inicie automáticamente al arrancar el sistema:
Resumen
En esta sección, has aprendido cómo usar PM2 para gestionar tus aplicaciones Node.js. Has visto cómo instalar PM2, iniciar y monitorear aplicaciones, gestionar variables de entorno, escalar aplicaciones y asegurar la persistencia de procesos. PM2 es una herramienta poderosa que puede ayudarte a mantener tus aplicaciones en línea y optimizar su rendimiento.
En el próximo tema, aprenderás cómo desplegar aplicaciones Node.js en Heroku.
Curso de Node.js
Módulo 1: Introducción a Node.js
Módulo 2: Conceptos Básicos
Módulo 3: Sistema de Archivos y E/S
Módulo 4: HTTP y Servidores Web
- Creando un Servidor HTTP Simple
- Manejo de Solicitudes y Respuestas
- Sirviendo Archivos Estáticos
- Enrutamiento
Módulo 5: NPM y Gestión de Paquetes
- Introducción a NPM
- Instalación y Uso de Paquetes
- Creación y Publicación de Paquetes
- Versionado Semántico
Módulo 6: Framework Express.js
- Introducción a Express.js
- Configuración de una Aplicación Express
- Middleware
- Enrutamiento en Express
- Manejo de Errores
Módulo 7: Bases de Datos y ORMs
- Introducción a las Bases de Datos
- Usando MongoDB con Mongoose
- Usando Bases de Datos SQL con Sequelize
- Operaciones CRUD
Módulo 8: Autenticación y Autorización
- Introducción a la Autenticación
- Usando Passport.js
- Autenticación JWT
- Control de Acceso Basado en Roles
Módulo 9: Pruebas y Depuración
- Introducción a las Pruebas
- Pruebas Unitarias con Mocha y Chai
- Pruebas de Integración
- Depuración de Aplicaciones Node.js
Módulo 10: Temas Avanzados
- Módulo Cluster
- Hilos de Trabajo
- Optimización del Rendimiento
- Construcción de APIs RESTful
- GraphQL con Node.js
Módulo 11: Despliegue y DevOps
- Variables de Entorno
- Usando PM2 para la Gestión de Procesos
- Desplegando en Heroku
- Integración y Despliegue Continuos