Aller au contenu

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

PM2 est un paquet npm : Node.js doit être installé (voir Node.js : installation et Node.js : gérer les versions).

Fenêtre de terminal
node --version
npm --version
Fenêtre de terminal
npm install -g pm2
pm2 --version

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

Fenêtre de terminal
mkdir -p ~/.npm-global
npm config set prefix ~/.npm-global
echo 'export PATH="$HOME/.npm-global/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
npm install -g pm2

Avec nvm, aucune précaution : le dossier global appartient déjà à l’utilisateur.

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.

Fenêtre de terminal
pm2 ping # le démon répond
pm2 list
Fenêtre de terminal
npm install -g pm2@latest
pm2 update # redémarre le démon en conservant les processus

Après une mise à jour de Node.js (changement de version majeure), réinstaller PM2 dans cette version, puis exécuter pm2 update.

Fenêtre de terminal
pm2 delete all
pm2 kill # arrête le démon
npm uninstall -g pm2
rm -rf ~/.pm2
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).

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.