Gérer, monitorer et déployer des applications Node.js en production avec PM2 — process manager, clusters, logs, déploiement automatisé et survie aux redémarrages.
Quelques commandes PM2 couvrent 90% du travail quotidien. Ce chapitre les couvre toutes, avec les cas d'usage concrets derrière chacune.
pm2 list
# ou
pm2 ls
# ou
pm2 statusLes trois font la même chose — afficher le tableau de bord de toutes les applications gérées par PM2. Colonnes importantes :
fork (1 instance) ou cluster (N instances)online, stopped, erroredSi la colonne ↺ grimpe rapidement, votre app crashe en boucle. pm2 logs pour diagnostiquer.
# Nom personnalisé
pm2 start app.js --name api
# Surveiller les fichiers et redémarrer sur changement (dev uniquement)
pm2 start app.js --watch
# Variables d'environnement en ligne
pm2 start app.js --env production
# Node.js arguments
pm2 start app.js -- --port 3000 --debug
# Avec une commande interpréteur personnalisée
pm2 start "npm run start" --name frontend--watch est pratique en développement mais dangereux en production — la moindre modification de fichier log redémarre l'app.
# Arrêter (le processus existe encore dans la liste PM2, status: stopped)
pm2 stop api
pm2 stop 0 # par ID
# Redémarrer
pm2 restart api
# Rechargement sans coupure (mode cluster uniquement)
pm2 reload api
# Supprimer de la liste PM2 (stop + remove)
pm2 delete api
pm2 delete allLa différence entre restart et reload est importante. restart tue le processus et en démarre un nouveau — il y a un instant où personne ne répond aux requêtes. reload redémarre les instances une par une en mode cluster, garantissant qu'il y a toujours au moins une instance disponible. En production avec du trafic, utilisez reload.
# Logs en temps réel (stdout + stderr, toutes apps)
pm2 logs
# Logs d'une app spécifique
pm2 logs api
# Dernières N lignes
pm2 logs api --lines 100
# Logs d'erreur uniquement
pm2 logs api --err
# Vider les logs
pm2 flush apiPar défaut, PM2 stocke les logs dans ~/.pm2/logs/ :
~/.pm2/logs/api-out.log — stdout~/.pm2/logs/api-error.log — stderrLes logs s'accumulent indéfiniment sans rotation. On règle ça au chapitre 5.
pm2 monitInterface terminal interactive avec CPU, mémoire, logs en direct et métadonnées pour chaque application. Utile pour diagnostiquer une fuite mémoire ou un pic CPU.
pm2 show api
# ou
pm2 describe apiAffiche tout : PID, uptime, nombre de restarts, chemins des logs, variables d'environnement, configuration complète.
# Redémarrer si la mémoire dépasse 500 Mo
pm2 start app.js --max-memory-restart 500M
# Redémarrer à intervalles réguliers (cron)
pm2 start app.js --cron-restart "0 2 * * *"--max-memory-restart est une sécurité utile pour les apps avec des fuites mémoire connues — pas une solution, mais ça évite que le serveur swappe jusqu'à l'OOM kill.
# Tout arrêter
pm2 stop all
# Tout redémarrer
pm2 restart all
# Tout recharger (cluster)
pm2 reload allVous maîtrisez les commandes du quotidien. Le chapitre suivant introduit le fichier de configuration — la bonne façon de gérer plusieurs applications et environnements.