PM2 : un gestionnaire de processus de production pour les applications NodeJS

PM2, gestionnaire de processus NodeJS, permet de garder vos applications stables, surveillées et redémarrées automatiquement 24h/24, sans interruption.
PM2 : un gestionnaire de processus de production pour les applications NodeJS
Share

Déployer une application NodeJS en production ne se résume pas à lancer un simple node server.js dans un terminal et à croiser les doigts pour que tout se passe bien. Dès que votre application commence à recevoir du trafic réel, vous devez vous poser une question essentielle: comment la garder en ligne en continu, la redémarrer en cas de crash et la superviser facilement sur le long terme

C’est précisément là que PM2 entre en jeu. PM2 est un gestionnaire de processus dédié aux applications NodeJS, pensé pour la production. Il vous permet de lancer, surveiller, redémarrer et organiser vos applications comme de vrais services, que vous soyez sur Linux, Windows ou macOS. Dans cet article, on va voir ensemble pourquoi PM2 est devenu un incontournable, comment l’installer, l’utiliser au quotidien et comment le comparer à des solutions comme forever.

Comprendre PM2 et son rôle en production

Avant de taper la moindre commande, il est utile de comprendre ce que fait réellement PM2 et pourquoi il est si utilisé dans l’écosystème NodeJS.

Qu’est-ce que PM2

PM2 est un gestionnaire de processus pour NodeJS. Concrètement, il sert d’intermédiaire entre votre système d’exploitation et vos applications Node. Au lieu de lancer directement vos scripts avec node, vous les lancez avec pm2. PM2 se charge ensuite de les garder en vie, de les redémarrer automatiquement en cas de crash, de les relancer après un redémarrage de la machine et de vous offrir une vue d’ensemble sur toutes vos applications en cours d’exécution.

L’objectif est simple: faire en sorte que vos services NodeJS se comportent comme de vrais services de production, robustes et supervisés, sans que vous ayez à surveiller vos terminaux en permanence.

Pourquoi un gestionnaire de processus est indispensable

Sans PM2, si votre processus Node plante, votre application tombe et ne revient pas tant que quelqu’un ne relance pas la commande manuellement. Cela peut être acceptable en développement, mais en production, c’est tout simplement impensable.

PM2 apporte plusieurs réponses à ce problème

  • Redémarrage automatique en cas de crash
  • Gestion centralisée de plusieurs applications NodeJS
  • Suivi de l’état des processus sur une seule interface
  • Possibilité de relancer les apps automatiquement au démarrage du serveur

En résumé, PM2 vous aide à transformer une simple commande Node en un service fiable.

Les principaux atouts de PM2 pour NodeJS

PM2 ne se contente pas de lancer vos scripts NodeJS. Il propose tout un ensemble de fonctionnalités très utiles

  • Supervision en temps réel de vos processus
  • Gestion facile du cycle de vie des applications démarrage, arrêt, redémarrage, suppression
  • Mode cluster pour tirer parti de plusieurs cœurs CPU
  • Gestion des logs pour centraliser la sortie standard et les erreurs
  • Sauvegarde de la configuration pour retrouver vos processus après un redémarrage

Même si vous ne commencez qu’avec quelques commandes simples, PM2 peut vous accompagner longtemps à mesure que votre architecture se complexifie.

Installer PM2 sur votre environnement NodeJS

La première étape pour profiter de PM2 consiste à l’installer globalement sur votre machine.

Pré-requis avant d’installer PM2

Avant tout, vous devez disposer de NodeJS et de npm sur votre machine. Si ce n’est pas encore le cas, installez-les via le site officiel de NodeJS ou votre gestionnaire de paquets habituel. Une fois Node et npm en place, vous pouvez ajouter PM2 très facilement.

Commande d’installation de PM2

Pour installer PM2 globalement, il suffit de lancer la commande suivante dans votre terminal :

sudo npm install pm2 -g

Sur certaines plateformes ou environnements de développement, vous pouvez éventuellement vous passer de sudo si votre configuration npm est adaptée. L’option -g indique simplement que PM2 doit être installé de manière globale, ce qui vous permet de l’appeler depuis n’importe quel dossier.

Une fois l’installation terminée, vous pouvez vérifier que PM2 est bien opérationnel en tapant :

pm2 -v

Si une version s’affiche, vous êtes prêt à gérer vos applications NodeJS avec PM2.

Démarrer votre première application avec PM2

Maintenant que PM2 est installé, passons à ce que vous voulez vraiment faire: lancer une application NodeJS en production.

Lancer un script NodeJS avec PM2

Supposons que vous ayez un fichier server.js qui lance votre serveur HTTP. Sans PM2, vous le démarreriez avec :

node server.js


Avec PM2, la commande équivalente est :

pm2 start server.js

À partir de ce moment, PM2 prend le relais. Même si vous fermez votre terminal, l’application continue de tourner en arrière-plan. C’est déjà un énorme avantage pour une machine de production.

Donner un nom lisible à vos processus PM2

Par défaut, PM2 attribue un identifiant et un nom dérivé du fichier à votre processus. Pour s’y retrouver facilement, surtout quand on a plusieurs services NodeJS, il est très pratique de donner un nom explicite à chaque application.

Par exemple :

pm2 start server.js --name "mon-serveur"

Avec cette commande, PM2 enregistre une instance nommée mon-serveur. Ce nom sera utilisé dans toutes les commandes de gestion, ce qui rend vos opérations beaucoup plus intuitives.

Gérer le cycle de vie de vos processus avec PM2

L’un des grands points forts de PM2 est la simplicité avec laquelle vous pouvez contrôler vos applications une fois qu’elles sont lancées.

Redémarrer une instance avec PM2

Après une mise à jour de votre code, vous aurez souvent besoin de redémarrer votre application sans forcément la supprimer. PM2 rend cette opération très simple.

Si vous voulez redémarrer toutes les applications gérées par PM2 :

pm2 restart all


Pour redémarrer uniquement votre serveur nommé mon-serveur :

pm2 restart mon-serveur

Le mot-clé PM2 ici est redémarrer rapidement, sans avoir à tuer manuellement le processus puis relancer la commande node.

Arrêter proprement une instance

Vous avez besoin de couper temporairement un service pour maintenance ou pour un test PM2 permet d’arrêter proprement vos processus :

pm2 stop mon-serveur

Vous pouvez aussi utiliser l’identifiant numérique de l’instance, mais un nom clair reste généralement plus pratique. La commande pm2 stop se contente d’arrêter le processus. Il reste toutefois dans la liste PM2, prêt à être relancé plus tard.

Supprimer un processus de la liste PM2

Si vous n’avez plus besoin d’une application dans PM2, vous pouvez la supprimer entièrement de la liste de gestion. Cela n’efface évidemment pas vos fichiers, mais PM2 ne la considérera plus comme un service à gérer.

pm2 delete mon-serveur

Vous pouvez à nouveau utiliser le nom du processus ou son identifiant. Cette commande PM2 est utile pour garder votre liste de services propre et lisible.

Lister les processus gérés par PM2

Au fur et à mesure que vous ajoutez des applications, il devient vite indispensable d’avoir une vue d’ensemble. PM2 fournit une commande très pratique pour cela :

pm2 list

Cette commande affiche un tableau avec toutes vos applications NodeJS gérées par PM2, leur état en cours, leur consommation de mémoire, leur nombre de redémarrages et d’autres informations utiles. C’est un peu votre tableau de bord minimal de production pour NodeJS.

Aller plus loin avec PM2 en production

Les commandes précédentes couvrent l’essentiel pour commencer avec PM2. Mais le gestionnaire de processus PM2 offre bien plus que le simple lancement d’applications.

Lancer PM2 au démarrage du système

Si vous voulez que vos applications NodeJS se relancent automatiquement quand votre serveur redémarre, PM2 peut générer une configuration adaptée au système d’init de votre machine. Vous pouvez par exemple utiliser la commande :

pm2 startup
pm2 save

La première commande prépare le script de démarrage, la seconde enregistre l’état actuel de vos processus pour qu’ils soient restaurés au prochain reboot. Grâce à PM2, vos services NodeJS redeviennent opérationnels sans intervention manuelle.

Utiliser le mode cluster de PM2

Un autre avantage de PM2 est son mode cluster. Plutôt que de lancer une seule instance de votre serveur Node sur un seul cœur CPU, PM2 peut en lancer plusieurs en parallèle pour mieux exploiter la machine.

Par exemple :

pm2 start server.js -i max --name "mon-serveur-cluster"

L’option -i max indique à PM2 de lancer autant d’instances que de cœurs disponibles. Le gestionnaire de processus PM2 se charge ensuite de répartir les requêtes entre ces instances, ce qui améliore la capacité de traitement et la résilience.

Superviser les logs avec PM2

En production, les logs sont précieux pour comprendre ce qui se passe réellement dans vos applications. PM2 centralise la sortie standard et les erreurs de vos processus, ce qui vous évite de gérer les fichiers à la main.

Pour voir les logs en direct :

pm2 logs mon-serveur

Vous pouvez ainsi suivre l’activité de vos applications NodeJS et repérer rapidement les erreurs.

PM2 face aux alternatives comme forever

PM2 n’est pas le seul outil qui permet de garder une application NodeJS en vie. Un autre outil populaire est forever. Alors pourquoi tant de développeurs préfèrent PM2

Forever permet effectivement de lancer des scripts NodeJS en continu et de les relancer en cas de crash. En revanche, l’outil reste plus limité que PM2 sur plusieurs points

  • Pas de tableau de bord aussi complet que le pm2 list
  • Gestion moins avancée des clusters
  • Moins d’outils intégrés pour la supervision et les logs
  • Moins de commandes pratiques pour gérer le cycle de vie des applications

Autrement dit, forever est une solution viable pour des besoins simples, mais PM2 s’impose généralement dès que l’on parle de production sérieuse, de multiples services et de supervision à long terme.

Bonnes pratiques pour utiliser PM2 en environnement de production

Pour tirer pleinement parti de PM2, quelques bonnes pratiques peuvent faire la différence.

Utiliser des noms explicites pour vos processus PM2

Évitez les noms génériques comme app ou server. Préférez des noms comme api-backend, front-ssr, websocket-gateway. Cela rend vos commandes PM2 plus claires et votre pm2 list beaucoup plus lisible.

Sauvegarder régulièrement votre configuration PM2

Après avoir ajouté ou modifié des processus, pensez à enregistrer votre configuration avec

pm2 save

Ainsi, PM2 saura exactement quelles applications relancer après un redémarrage du serveur.

Surveiller la consommation de ressources

L’interface de PM2 vous donne une idée de la consommation mémoire et du statut de chaque application. Si vous voyez un processus redémarrer en boucle ou consommer beaucoup de mémoire, cela peut être le signal d’un problème dans votre code ou votre configuration. PM2 devient alors un outil de diagnostic précieux.

Éviter de tout faire en root

Même si l’on voit souvent sudo devant la commande d’installation, il n’est pas forcément nécessaire de lancer toutes vos commandes PM2 en super utilisateur. Adaptez votre configuration pour éviter d’exécuter vos applications NodeJS avec plus de privilèges que nécessaire.

Conclusion

PM2 s’est imposé comme un outil incontournable pour déployer et maintenir des applications NodeJS en production. Grâce à PM2, vous pouvez lancer, superviser, redémarrer et organiser vos services avec une grande simplicité, tout en gagnant en sérénité.

Au lieu de surveiller des terminaux ouverts ou de relancer manuellement vos scripts après chaque incident, vous confiez la gestion à un véritable gestionnaire de processus. Que vous débutiez avec un simple server.js ou que vous orchestriez plusieurs services en cluster, PM2 vous accompagne à chaque étape.

Si vous utilisez déjà NodeJS en production et que vous ne vous êtes pas encore penché sur PM2, c’est probablement le bon moment pour l’adopter. Une fois que vous aurez goûté au confort d’un environnement géré par PM2, vous aurez du mal à revenir en arrière.

Raspberry Pi : comment concevoir un bot qui dicte la météo chaque jour ?

Raspberry Pi : comment concevoir un bot qui dicte la météo chaque jour ?

Prev
Comment créer une adresse Gmail ?

Comment créer une adresse Gmail ?

Next
Mises à jour, aucun spam.
Mises à jour, aucun spam.
Mises à jour, aucun spam.
Restez dans la boucle
Mises à jour, aucun spam.
On partage nos mises à jour régulièrement — avec vous.
Une newsletter, des insights geeks… et zéro blabla inutile.