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:
Iniciar una Aplicació amb PM2
Un cop PM2 està instal·lat, podem iniciar una aplicació Node.js amb la següent comanda:
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:
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:
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:
Exercicis Pràctics
Exercici 1: Iniciar i Monitoritzar una Aplicació
-
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/'); });
-
Inicia l'aplicació amb PM2:
pm2 start app.js
-
Llista els processos per verificar que l'aplicació està en execució:
pm2 list
-
Monitoritza l'aplicació en temps real:
pm2 monit
Exercici 2: Configuració i Desplegament
-
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', }, }, ], };
-
Inicia l'aplicació utilitzant el fitxer de configuració:
pm2 start ecosystem.config.js
-
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
- Introducció a Express.js
- Configuració d'una Aplicació Express
- Middleware
- Routing en Express
- Gestió d'Errors
Mòdul 7: Bases de Dades i ORMs
- Introducció a les Bases de Dades
- Utilitzar MongoDB amb Mongoose
- Utilitzar Bases de Dades SQL amb Sequelize
- Operacions CRUD
Mòdul 8: Autenticació i Autorització
Mòdul 9: Proves i Depuració
- Introducció a les Proves
- Proves Unitàries amb Mocha i Chai
- Proves d'Integració
- Depuració d'Aplicacions Node.js
Mòdul 10: Temes Avançats
Mòdul 11: Desplegament i DevOps
- Variables d'Entorn
- Utilitzar PM2 per a la Gestió de Processos
- Desplegar a Heroku
- Integració i Desplegament Continu