Déploiement
Déploiement • Chapitre 11 : Configuration du serveur et mise en production

Gestion des processus avec PM2

PM2 (Process Manager 2) est le standard mondial incontournable pour faire tourner des applications Node.js en production. Profitez du redémarrage automatique en cas de crash, du mode cluster multi-cœurs et de la persistance au reboot.

🔄
Auto-Restart au Crash

Redémarre votre API en moins de 100 millisecondes si une exception non gérée survient.

🚀
Mode Cluster Multi-Cœurs

Exploite tous les cœurs CPU de votre serveur en répartissant la charge automatiquement.

💾
Persistance pm2 save

Rétablit tous vos services automatiquement en cas de reboot ou de coupure du serveur.

📊
Monitoring pm2 monit

Tableau de bord temps réel affichant la RAM, le CPU et le nombre de requêtes par seconde.

pm2-production-workflow.sh
# 1. Installer PM2 mondialement avec npm
$ sudo npm install -g pm2

# 2. Démarrer l'API en mode Cluster sur TOUS les cœurs CPU disponibles
$ pm2 start dist/server.js --name "learnweb-api" -i max

# 3. Consulter l'état de santé et les métriques des instances
$ pm2 status
┌────┬────────────────┬──────────┬──────┬───────────┬──────────┬──────────┐
│ id │ name           │ mode     │ ↺    │ status    │ cpu      │ memory   │
├────┼────────────────┼──────────┼──────┼───────────┼──────────┼──────────┤
│ 0  │ learnweb-api   │ cluster  │ 0    │ online    │ 0.1%     │ 48.2mb   │
│ 1  │ learnweb-api   │ cluster  │ 0    │ online    │ 0.1%     │ 47.9mb   │
│ 2  │ learnweb-api   │ cluster  │ 0    │ online    │ 0.2%     │ 49.1mb   │
│ 3  │ learnweb-api   │ cluster  │ 0    │ online    │ 0.1%     │ 48.6mb   │
└────┴────────────────┴──────────┴──────┴───────────┴──────────┴──────────┘

# 4. Configurer la persistance permanente au redémarrage de la machine
$ pm2 startup systemd
# Exécuter la commande sudo générée par PM2, puis :
$ pm2 save
[PM2] Freeze a process list on reboot -> Saved to /home/ubuntu/.pm2/dump.pm2

Guide Approfondi & Architecture Système

1. Pourquoi le Mode Cluster (-i max) Décuple vos Performances ?

Node.js est par nature mono-threadé :

Si votre serveur VPS dispose de 4 cœurs de processeur (vCPU) et que vous lancez node server.js, 1 seul cœur travaille à 100% pendant que les 3 autres dorment !

Avec pm2 start server.js -i max, PM2 utilise le module natif cluster de Node pour lancer 4 instances en parallèle partageant le même port 3000. Votre débit de requêtes supporté est immédiatement multiplié par 4 !

2. Rechargement Sans Couure avec pm2 reload

Lors de vos mises à jour de code :
Différence capitale :pm2 restart coupe tout d'un coup. À l'inverse, pm2 reload all redémarre les instances une par une (rolling restart). Les visiteurs en train d'acheter sur votre site ne ressentent aucune interruption !

Tableau Récapitulatif : Les Commandes Essentielles de PM2

CommandeAction RéaliséeUsage en Production
pm2 start app.js --name xDémarre et supervise l'applicationPremier lancement du projet
pm2 reload allRechargement à chaud sans coupure (0 downtime)À chaque mise à jour de code (git pull)
pm2 logs --lines 100Affiche les 100 dernières lignes de logs en directDépannage d'un bug ou d'une erreur 500
pm2 monitInterface console dynamique interactiveSurveillance des pics de charge et fuites de RAM
pm2 saveSauvegarde la liste des processus pour le bootObligatoire après tout ajout/suppression de service