PM2 : installation sur Ubuntu
PM2 est un gestionnaire de processus pour Node.js : il lance les applications en arrière-plan, les redémarre en cas de plantage, répartit la charge sur plusieurs processus (mode cluster) et centralise les journaux. Les exemples utilisent des noms génériques (api, /srv/monapp).
Prérequis : Node.js
Section intitulée « Prérequis : Node.js »PM2 est un paquet npm : Node.js doit être installé (voir Node.js : installation et Node.js : gérer les versions).
node --versionnpm --versionInstaller
Section intitulée « Installer »npm install -g pm2pm2 --versionAvec Node.js installé par apt ou snap, l’installation globale demande des droits d’écriture : configurer un dossier global dans le répertoire de l’utilisateur plutôt que d’utiliser sudo npm :
mkdir -p ~/.npm-globalnpm config set prefix ~/.npm-globalecho 'export PATH="$HOME/.npm-global/bin:$PATH"' >> ~/.bashrcsource ~/.bashrcnpm install -g pm2Avec nvm, aucune précaution : le dossier global appartient déjà à l’utilisateur.
Dossier de travail
Section intitulée « Dossier de travail »PM2 stocke son état dans le dossier de l’utilisateur :
| Chemin | Rôle |
|---|---|
~/.pm2/ |
Dossier de PM2 |
~/.pm2/logs/ |
Journaux des applications (<nom>-out.log, <nom>-error.log) |
~/.pm2/dump.pm2 |
Liste des processus enregistrée par pm2 save |
~/.pm2/pm2.log |
Journal du démon PM2 |
Le premier appel d’une commande pm2 démarre un démon en arrière-plan : c’est lui qui supervise les applications, indépendamment du terminal.
Vérifier
Section intitulée « Vérifier »pm2 ping # le démon répondpm2 listMettre à jour
Section intitulée « Mettre à jour »npm install -g pm2@latestpm2 update # redémarre le démon en conservant les processusAprès une mise à jour de Node.js (changement de version majeure), réinstaller PM2 dans cette version, puis exécuter pm2 update.
Désinstaller
Section intitulée « Désinstaller »pm2 delete allpm2 kill # arrête le démonnpm uninstall -g pm2rm -rf ~/.pm2PM2 ou systemd ?
Section intitulée « PM2 ou systemd ? »| PM2 | systemd | |
|---|---|---|
| Langage | Node.js (et autres via un interpréteur) | Tous |
| Redémarrage après plantage | Oui | Oui |
| Mode cluster, rechargement sans coupure | Oui (intégré) | Non |
| Journaux | Fichiers dans ~/.pm2/logs/ |
journald |
Isolation (ProtectSystem, etc.) |
Non | Oui |
| Installation | npm |
Préinstallé |
PM2 convient quand le mode cluster et le rechargement sans coupure sont utiles. Pour un service simple, systemd suffit et offre plus d’isolation (voir Node.js : mise en production et systemd : écrire un service). Les deux peuvent se combiner : systemd démarre PM2 au boot (voir Démarrage automatique).
Dépannage
Section intitulée « Dépannage »| Symptôme | Piste |
|---|---|
pm2: command not found |
Dossier global npm absent du PATH (npm config get prefix) |
EACCES: permission denied à l’installation |
Dossier global appartenant à root : configurer ~/.npm-global |
pm2 ne voit plus les processus après un changement d’utilisateur |
L’état est propre à chaque utilisateur (~/.pm2) |
| Démon bloqué | pm2 kill puis pm2 resurrect |
Ubuntu 24.04 et 26.04 : différences à connaître
Section intitulée « Ubuntu 24.04 et 26.04 : différences à connaître »PM2 est indépendant de la version d’Ubuntu : son comportement dépend de la version de Node.js et de PM2. Sur 26.04, sudo est fourni par sudo-rs ; la commande générée par pm2 startup fonctionne sans changement.
Pour aller plus loin
Section intitulée « Pour aller plus loin »- Documentation : pm2.keymetrics.io/docs
- Suite : Premiers pas