PM2 és un gestor de processos per a aplicacions Node.js que permet mantenir les aplicacions en execució contínua, gestionar múltiples aplicacions, monitoritzar el rendiment i molt més. En aquesta secció, aprendrem com instal·lar i utilitzar PM2 per gestionar les nostres aplicacions Node.js.

Continguts

Introducció a PM2

PM2 és una eina poderosa per a la gestió de processos en aplicacions Node.js. Les seves principals característiques inclouen:

  • Gestió de processos: Iniciar, aturar, reiniciar i eliminar processos fàcilment.
  • Monitorització: Proporciona informació detallada sobre l'estat dels processos, ús de CPU i memòria.
  • Clustering: Permet escalar aplicacions en múltiples nuclis de CPU.
  • Desplegament: Facilita el desplegament continu de les aplicacions.

Instal·lació de PM2

Per instal·lar PM2, necessitem tenir Node.js i npm instal·lats. Podem instal·lar PM2 globalment utilitzant npm:

npm install -g pm2

Iniciar una Aplicació amb PM2

Un cop PM2 està instal·lat, podem iniciar una aplicació Node.js amb la següent comanda:

pm2 start app.js

On app.js és el fitxer principal de la nostra aplicació. PM2 iniciarà l'aplicació i la mantindrà en execució contínua.

Exemple Pràctic

Suposem que tenim una aplicació 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/');
});

Podem iniciar aquesta aplicació amb PM2:

pm2 start app.js

Monitorització i Gestió de Processos

PM2 proporciona diverses comandes per gestionar i monitoritzar els processos:

  • Llistar processos: Mostra tots els processos gestionats per PM2.

    pm2 list
    
  • Aturar un procés: Atura un procés específic.

    pm2 stop <id|name>
    
  • Reiniciar un procés: Reinicia un procés específic.

    pm2 restart <id|name>
    
  • Eliminar un procés: Elimina un procés de la llista de PM2.

    pm2 delete <id|name>
    
  • Monitoritzar processos: Proporciona informació en temps real sobre els processos.

    pm2 monit
    

Configuració de PM2

PM2 permet configurar les aplicacions mitjançant fitxers de configuració JSON o YAML. Un exemple de fitxer de configuració JSON (ecosystem.config.js) podria ser:

module.exports = {
  apps: [
    {
      name: 'my-app',
      script: 'app.js',
      instances: 2,
      exec_mode: 'cluster',
      env: {
        NODE_ENV: 'development',
      },
      env_production: {
        NODE_ENV: 'production',
      },
    },
  ],
};

Podem iniciar les aplicacions definides en aquest fitxer amb la següent comanda:

pm2 start ecosystem.config.js

Desplegament amb PM2

PM2 també facilita el desplegament d'aplicacions amb la funcionalitat de deploy. Un exemple de configuració de desplegament (ecosystem.config.js) podria ser:

module.exports = {
  apps: [
    {
      name: 'my-app',
      script: 'app.js',
    },
  ],
  deploy: {
    production: {
      user: 'node',
      host: 'my-server.com',
      ref: 'origin/master',
      repo: '[email protected]:repo.git',
      path: '/var/www/my-app',
      'post-deploy': 'npm install && pm2 reload ecosystem.config.js --env production',
    },
  },
};

Podem desplegar l'aplicació amb la següent comanda:

pm2 deploy ecosystem.config.js production

Exercicis Pràctics

Exercici 1: Iniciar i Monitoritzar una Aplicació

  1. Crea un fitxer app.js amb el següent contingut:

    const http = require('http');
    
    const server = http.createServer((req, res) => {
      res.writeHead(200, { 'Content-Type': 'text/plain' });
      res.end('Hello, PM2!\n');
    });
    
    server.listen(3000, () => {
      console.log('Server running at http://localhost:3000/');
    });
    
  2. Inicia l'aplicació amb PM2:

    pm2 start app.js
    
  3. Llista els processos per verificar que l'aplicació està en execució:

    pm2 list
    
  4. Monitoritza l'aplicació en temps real:

    pm2 monit
    

Exercici 2: Configuració i Desplegament

  1. Crea un fitxer ecosystem.config.js amb la següent configuració:

    module.exports = {
      apps: [
        {
          name: 'my-app',
          script: 'app.js',
          instances: 2,
          exec_mode: 'cluster',
          env: {
            NODE_ENV: 'development',
          },
          env_production: {
            NODE_ENV: 'production',
          },
        },
      ],
    };
    
  2. Inicia l'aplicació utilitzant el fitxer de configuració:

    pm2 start ecosystem.config.js
    
  3. Verifica que l'aplicació està en execució amb múltiples instàncies:

    pm2 list
    

Conclusió

En aquesta secció, hem après com utilitzar PM2 per gestionar processos en aplicacions Node.js. Hem vist com instal·lar PM2, iniciar aplicacions, monitoritzar processos i configurar PM2 per a desplegaments. PM2 és una eina essencial per a qualsevol desenvolupador Node.js que vulgui assegurar-se que les seves aplicacions funcionen de manera eficient i contínua.

Curs de Node.js

Mòdul 1: Introducció a Node.js

Mòdul 2: Conceptes Bàsics

Mòdul 3: Sistema de Fitxers i I/O

Mòdul 4: HTTP i Servidors Web

Mòdul 5: NPM i Gestió de Paquets

Mòdul 6: Framework Express.js

Mòdul 7: Bases de Dades i ORMs

Mòdul 8: Autenticació i Autorització

Mòdul 9: Proves i Depuració

Mòdul 10: Temes Avançats

Mòdul 11: Desplegament i DevOps

Mòdul 12: Projectes del Món Real

© Copyright 2024. Tots els drets reservats