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:

npm install -g pm2

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:

pm2 start app.js

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:

pm2 start app.js

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:

pm2 list

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:

pm2 restart app.js

Para detener la aplicación, usa:

pm2 stop app.js

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:

pm2 start ecosystem.config.js --env production

Usando la Línea de Comandos

También puedes definir variables de entorno directamente en la línea de comandos:

pm2 start app.js --name "app" --env NODE_ENV=production PORT=8080

Escalado de Aplicaciones

PM2 permite escalar aplicaciones en múltiples núcleos de CPU. Para escalar una aplicación, usa el comando pm2 scale:

pm2 scale app 4

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:

pm2 save

Luego, configura PM2 para que se inicie automáticamente al arrancar el sistema:

pm2 startup

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

Módulo 5: NPM y Gestión de Paquetes

Módulo 6: Framework Express.js

Módulo 7: Bases de Datos y ORMs

Módulo 8: Autenticación y Autorización

Módulo 9: Pruebas y Depuración

Módulo 10: Temas Avanzados

Módulo 11: Despliegue y DevOps

Módulo 12: Proyectos del Mundo Real

© Copyright 2024. Todos los derechos reservados