Comment installer PM2 pour exécuter des applications Node.js sur un serveur de production
PM2 est un gestionnaire de processus de production open source gratuit, avancé, efficace et multiplateforme pour Node.js avec un équilibreur de charge intégré. Il fonctionne sous Linux, MacOS ainsi que Windows. Il prend en charge la surveillance des applications, la gestion efficace des micro-services/processus, l'exécution d'applications en mode cluster, le démarrage et l'arrêt progressifs des applications.
Il maintient vos applications « vivantes pour toujours » avec des redémarrages automatiques et peut être activé pour démarrer au démarrage du système, permettant ainsi une haute disponibilité (HA). configurations ou architectures.
Notamment, PM2 vous permet d'exécuter vos applications en mode cluster sans apporter de modifications à votre code (cela dépend également du nombre de cœurs de processeur sur votre serveur). Il vous permet également de gérer facilement les journaux d’applications, et bien plus encore.
De plus, il prend également en charge de manière incroyable les principaux frameworks Node.js tels que Express, Adonis Js, Sails. , Hapi et bien plus encore, sans qu'il soit nécessaire de modifier le code. PM2 est utilisé par des sociétés telles que IBM, Microsoft, PayPal, et bien d'autres encore.
Dans cet article, nous expliquerons comment installer et utiliser PM2 pour exécuter des applications Nodejs sur un serveur de production Linux. Nous allons créer une application pour démontrer certaines des fonctionnalités fondamentales de PM2 afin que vous puissiez commencer à l'utiliser.
Étape 1 : Installer Nodejs et NPM sous Linux
1. Pour installer la version la plus récente de Node.js et NPM, vous devez d'abord activer le référentiel officiel NodeSource sous votre distribution Linux, puis installer Packages Node.js et NPM comme indiqué.
Sur Debian/Ubuntu
---------- Install Node.js v11.x ----------
curl -sL https://deb.nodesource.com/setup_11.x | sudo -E bash -
sudo apt-get install -y nodejs
---------- Install Node.js v10.x ----------
curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
sudo apt-get install -y nodejs
Sur CentOS/RHEL et Fedora
---------- Install Node.js v11.x ----------
curl -sL https://rpm.nodesource.com/setup_11.x | bash -
---------- Install Node.js v10.x ----------
curl -sL https://rpm.nodesource.com/setup_10.x | bash -
Étape 2 : Créer une application Nodejs
2. Maintenant, créons une application de test (nous supposerons qu'elle a un côté client et un côté administrateur qui partagent la même base de données), les microservices s'exécuteront sur les ports 3000, et 3001 respectivement.
$ sudo mkdir -p /var/www/html/app
sudo mkdir -p /var/www/html/adminside
sudo vim /var/www/html/app/server.js
sudo vim /var/www/html/adminside/server.js
Ensuite, copiez et collez les morceaux de code suivants dans les fichiers server.js
(remplacez 192.168.43.31 par l'adresse IP de votre serveur).
##mainapp code
const http = require('http');
const hostname = '192.168.43.31';
const port = 3000;
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('This is the Main App!\n');
});
server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
});
##adminside code
const http = require('http');
const hostname = '192.168.43.31';
const port = 3001;
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('This is the Admin Side!\n');
});
server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
});
Enregistrez le fichier et quittez.
Étape 3 : Installer PM2 Product Process Manager sous Linux
3. La dernière version stable de PM2 peut être installée via NPM comme indiqué.
$ sudo npm i -g pm2
4. Une fois PM2 installé, vous pouvez démarrer vos applications de nœud à l'aide des commandes suivantes.
$ sudo node /var/www/html/app/server.js
sudo node /var/www/html/adminside/server.js
Notez que, dans un environnement de production, vous devez les démarrer en utilisant PM2, comme indiqué (vous n'aurez peut-être pas besoin de la commande sudo si votre application est stockée dans un emplacement où un utilisateur normal dispose d'autorisations de lecture et d'écriture).
$ sudo pm2 start /var/www/html/app/server.js
sudo pm2 start /var/www/html/adminside/server.js
Étape 4 : Comment utiliser et gérer PM2 sous Linux
5. Pour démarrer une application en mode cluster en utilisant le flag -i
pour spécifier le nombre d'instances, par exemple.
$ sudo pm2 start /var/www/html/app/server.js -i 4
sudo pm2 scale 0 8 #scale cluster app to 8 processes
6. Pour répertorier toutes vos applications de nœuds (processus/microservices), exécutez la commande suivante.
$ sudo pm2 list
7. Pour surveiller les journaux, les métriques personnalisées et traiter les informations de tous les processus en exécutant la commande suivante.
$ sudo pm2 monit
8. Pour afficher les détails d'un seul processus de nœud, comme indiqué, à l'aide de l'ID ou du nom du processus.
$ sudo pm2 show 0
Étape 5 : Comment gérer les applications de nœud à l'aide de PM2 sous Linux
9. Ce qui suit est une liste de certaines commandes de gestion de processus courantes (uniques ou toutes) dont vous devez prendre note.
$ sudo pm2 stop all #stop all apps
sudo pm2 stop 0 #stop process with ID 0
sudo pm2 restart all #restart all apps
sudo pm2 reset 0 #reset all counters
sudo pm2 delete all #kill and remove all apps
sudo pm2 delete 1 #kill and delete app with ID 1
10. Pour gérer les journaux d'application, utilisez les commandes suivantes.
$ sudo pm2 logs #view logs for all processes
sudo pm2 logs 1 #view logs for app 1
sudo pm2 logs --json #view logs for all processes in JSON format
sudo pm2 flush #flush all logs
11. Pour gérer le processus PM2, utilisez les commandes suivantes.
$ sudo pm2 startup #enable PM2 to start at system boot
sudo pm2 startup systemd #or explicitly specify systemd as startup system
sudo pm2 save #save current process list on reboot
sudo pm2 unstartup #disable PM2 from starting at system boot
sudo pm2 update #update PM2 package
Étape 6 : accéder aux applications de nœud à partir du navigateur Web
12. Pour accéder à toutes vos applications de nœud à partir d'un navigateur Web distant, vous devez d'abord ouvrir les ports suivants sur le pare-feu de votre système, pour autoriser les connexions client aux applications, comme indiqué.
-------- Debian and Ubuntu --------
sudo ufw allow 3000/tcp
sudo ufw allow 3001/tcp
sudo ufw reload
-------- RHEL and CentOS --------
firewall-cmd --permanent --add-port=3000/tcp
firewall-cmd --permanent --add-port=3001/tcp
firewall-cmd --reload
13. Accédez ensuite à vos applications à partir d'un navigateur Web avec ces URL :
http://198.168.43.31:3000
http://198.168.43.31:3001
Enfin et surtout, PM2 est un système de modules simple et intégré pour étendre ses capacités de base. Certains modules incluent pm2-logrotate, pm2-webshell, pm2-server-monit, et plus encore : vous pouvez également créer et utiliser vos propres modules.
Pour plus d'informations, accédez au référentiel PM2 GitHub : https://github.com/Unitech/PM2/.
C'est tout ! PM2 est un gestionnaire de processus de production avancé et efficace pour Node.js avec un équilibreur de charge intégré. Dans cet article, nous avons montré comment installer et utiliser PM2 pour gérer les applications Nodejs sous Linux. Si vous avez des questions, envoyez-les via le formulaire de commentaires ci-dessous.