iducationducation
IndexArticlesFormationsProfilOutilsBibliothech
N°014 — 2026
Navigation
01Index02Articles03Formations04Profil05Outils06Bibliothech
N°014 — 2026
iducationducation
IndexArticlesFormationsProfilOutilsBibliothech
N°014 — 2026
Navigation
01Index02Articles03Formations04Profil05Outils06Bibliothech
N°014 — 2026
Formations
Node.js · Intermédiaire

PM2

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.

PM2Node.jsNginxsystemd
01Introduction et installation02Commandes essentielles03Fichier de configuration ecosystem04Mode cluster et load balancing05Logs et monitoring06Persistance et démarrage automatique07Déploiement en production
Chapitre 6·10 min

Persistance et démarrage automatique

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.

startup — intégrer PM2 au système init

pm2 startup

PM2 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/ubuntu

Copiez-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/ubuntu

Vérification :

sudo systemctl status pm2-ubuntu
# Active: active (enabled)

save — sauvegarder la liste des applications

startup fait démarrer le daemon PM2. Mais PM2 doit aussi savoir quelles applications relancer. C'est le rôle de save.

pm2 save

PM2 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 :

  1. Démarrez toutes vos applications
  2. Configurez-les exactement comme vous le souhaitez en production
  3. Seulement alors, exécutez pm2 save

Si vous modifiez la liste des apps après (ajout, suppression, changement de config), relancez pm2 save pour mettre à jour le snapshot.

Workflow complet sur un VPS neuf

# 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 save

Après ça, votre serveur peut rebooter autant de fois qu'il veut — l'application revient en ligne automatiquement.

Restaurer manuellement

# En cas de problème, forcer la restauration depuis le dump
pm2 resurrect

Mettre à jour PM2

Quand 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

Vérifier l'état du service systemd

# Status
sudo systemctl status pm2-$(whoami)
 
# Logs systemd du daemon PM2 lui-même
sudo journalctl -u pm2-$(whoami) -f

Si 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.

Cas avec nvm

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 node

Vos applications survivent maintenant aux redémarrages. Le chapitre final couvre le déploiement automatisé — pousser du code et PM2 met à jour le serveur.

Précédent
Logs et monitoring
Suivant
Déploiement en production

Développeur fullstack passionné. J'apprends en construisant et je documente tout — front, back, outils. Le code s'apprend mieux en public.

Naviguer

IndexTous les articlesFormationsProfilOutilsBibliothech

Ailleurs

GitHub RSS

Newsletter

Les articles, libs et découvertes. Une fois par semaine, pas plus.

© 2026 William LoreeConçu & codé à la main