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.
PM2 garde vos apps en vie, mais le daemon PM2 lui-même s'arrête quand le serveur redémarre. Sans configuration supplémentaire, après un reboot ou une coupure de courant, toutes vos applications sont hors ligne jusqu'à votre intervention manuelle.
Deux commandes règlent ça définitivement.
pm2 startupPM2 détecte le système init de votre serveur (systemd sur Ubuntu/Debian, launchd sur macOS, etc.) et génère la commande exacte à exécuter. Il affiche quelque chose comme :
[PM2] Init System found: systemd
[PM2] To setup the Startup Script, copy/paste the following command:
sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u ubuntu --hp /home/ubuntuCopiez-collez cette commande et exécutez-la avec sudo. PM2 crée un service systemd qui démarre le daemon PM2 automatiquement.
sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u ubuntu --hp /home/ubuntuVérification :
sudo systemctl status pm2-ubuntu
# Active: active (enabled)startup fait démarrer le daemon PM2. Mais PM2 doit aussi savoir quelles applications relancer. C'est le rôle de save.
pm2 savePM2 sérialise la liste complète des applications actives dans ~/.pm2/dump.pm2. Au prochain démarrage du serveur, le daemon PM2 lit ce fichier et relance toutes les apps dans leur état d'avant le reboot.
Ordre critique :
pm2 saveSi vous modifiez la liste des apps après (ajout, suppression, changement de config), relancez pm2 save pour mettre à jour le snapshot.
# 1. Installer Node.js et PM2
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt-get install -y nodejs
npm install -g pm2
# 2. Déployer et démarrer votre application
cd /var/www/api
npm ci --only=production
pm2 start ecosystem.config.js --env production
# 3. Vérifier que tout tourne
pm2 list
pm2 logs api --lines 20
# 4. Configurer le démarrage automatique
pm2 startup
# Exécuter la commande générée...
# 5. Sauvegarder
pm2 saveAprès ça, votre serveur peut rebooter autant de fois qu'il veut — l'application revient en ligne automatiquement.
# En cas de problème, forcer la restauration depuis le dump
pm2 resurrectQuand vous mettez à jour PM2, le service systemd pointe vers le nouvel exécutable. Après une mise à jour :
npm install -g pm2
pm2 update # met à jour le daemon en mémoire
pm2 startup # régénère le script systemd si nécessaire
pm2 save # resauvegarder# Status
sudo systemctl status pm2-$(whoami)
# Logs systemd du daemon PM2 lui-même
sudo journalctl -u pm2-$(whoami) -fSi le service est inactive après un reboot alors que pm2 startup avait été configuré, vérifiez que l'utilisateur qui a lancé la commande startup est le même que celui qui exécute PM2.
Si Node.js est installé via nvm, le path vers node change selon la version active. pm2 startup capture le path au moment de l'exécution. Si vous changez de version Node ensuite, le service systemd pointe vers l'ancienne version.
Solution : utiliser un path fixe pour node via nvm, ou installer Node.js via le package manager système plutôt que nvm sur les serveurs de production.
# Vérifier quel node est utilisé par PM2
pm2 env 0 | grep nodeVos applications survivent maintenant aux redémarrages. Le chapitre final couvre le déploiement automatisé — pousser du code et PM2 met à jour le serveur.