PM2Node.jsDeploy7 min de lectura

Deploy con PM2 (Node.js)

Desplegá aplicaciones Node.js en producción con PM2 para gestión de procesos y reinicio automático.


PM2 es un process manager para Node.js que mantiene tu aplicación corriendo 24/7, la reinicia si se cae y gestiona logs automáticamente.

Paso 1 — Instalar PM2

bash
npm install -g pm2

Paso 2 — Iniciar tu aplicación

bash
cd /home/deploy/mi-app
pm2 start app.js --name "mi-app"

Para aplicaciones con npm start:

bash
pm2 start npm --name "mi-app" -- start

Para aplicaciones TypeScript:

bash
pm2 start dist/index.js --name "mi-app"

Paso 3 — Configurar ecosystem file

Creá ecosystem.config.js en la raíz del proyecto:

javascript
module.exports = {
  apps: [{
    name: 'mi-app',
    script: './dist/index.js',
    instances: 'max',
    exec_mode: 'cluster',
    env: {
      NODE_ENV: 'production',
      PORT: 3000
    },
    max_memory_restart: '500M',
    log_date_format: 'YYYY-MM-DD HH:mm:ss',
  }]
};

Iniciá con el ecosystem:

bash
pm2 start ecosystem.config.js

Paso 4 — Configurar inicio automático

Para que PM2 arranque con el sistema:

bash
pm2 startup

Ejecutá el comando que te muestra (con sudo). Después guardá la lista actual:

bash
pm2 save

Paso 5 — Comandos de gestión

bash
pm2 list                  # Ver procesos
pm2 logs mi-app           # Ver logs en vivo
pm2 monit                 # Monitor interactivo
pm2 restart mi-app        # Reiniciar
pm2 reload mi-app         # Reload sin downtime (cluster)
pm2 stop mi-app           # Detener
pm2 delete mi-app         # Eliminar del listado

Paso 6 — Deploy con zero-downtime

bash
git pull origin main
npm install --production
npm run build
pm2 reload mi-app

Monitoreo

bash
pm2 status
pm2 logs --lines 100
pm2 env 0                 # Variables de entorno del proceso 0

¿Te resultó útil esta guía?