Node.js est un environnement d'exécution JavaScript open source et multiplateforme qui peut être utilisé pour exécuter JavaScript en dehors du navigateur Web. Il est le plus souvent utilisé pour créer des applications Web avec des connexions bidirectionnelles en temps réel, où le client et le serveur peuvent initier une communication, ce qui leur permet d'échanger librement des données. Node.js utilise un modèle d'E/S non bloquant piloté par les événements, ce qui le rend parfait pour les applications gourmandes en données qui s'exécutent sur des appareils distribués.
Dans ce didacticiel, nous allons installer Node.js et le configurer pour qu'il s'exécute en tant que serveur principal ; ensuite, nous configurerons Apache comme serveur proxy frontal pour Node.js.
Prérequis
- Un nouveau VPS CentOS 8 sur la plate-forme cloud d'Atlantic.net.
- Un mot de passe root configuré sur votre serveur.
Étape 1 - Créer un serveur cloud Atlantic.Net
Tout d'abord, connectez-vous à votre serveur Atlantic.Net Cloud. Créez un nouveau serveur en choisissant CentOS 8 comme système d'exploitation avec au moins 1 Go de RAM. Connectez-vous à votre serveur cloud via SSH et connectez-vous à l'aide des informations d'identification mises en évidence en haut de la page.
Une fois que vous êtes connecté à votre serveur CentOS 8, exécutez la commande suivante pour mettre à jour votre système de base avec les derniers packages disponibles.
dnf update -y
Étape 2 - Installer Node.js
Vous pouvez installer le référentiel Node.js à l'aide de la commande suivante :
curl -sL https://rpm.nodesource.com/setup_12.x | bash -
Une fois le référentiel installé, vous pouvez installer Node.js en exécutant simplement la commande suivante :
dnf install nodejs -y
Une fois l'installation terminée, vous pouvez vérifier la version installée de Node.js avec la commande suivante :
node -v
Vous devriez obtenir le résultat suivant :
v12.16.2
Vous pouvez également vérifier la version de NPM avec la commande suivante :
npm -v
Vous devriez obtenir le résultat suivant :
6.14.4
Étape 3 – Créer un exemple d'application Node.js
Commençons par créer un répertoire pour contenir l'application Node.js :
mkdir project
Ensuite, changez le répertoire pour projeter et créez un exemple d'application Node.js avec la commande suivante :
cd project nano app.js
Ajoutez le contenu suivant :
var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Welcome to Node.js Server'); }).listen(8080, "127.0.0.1"); console.log('Server running at http://127.0.0.1:8080/');
Enregistrez et fermez le fichier lorsque vous avez terminé.
Votre application Node.js est maintenant prête à servir sur le port 8080. Ensuite, démarrez l'application avec la commande suivante :
node app.js
Vous devriez obtenir le résultat suivant :
Server running at http://127.0.0.1:8080/
La sortie ci-dessus indique que votre application Node.js fonctionne correctement.
Ensuite, appuyez sur CTRL + C pour arrêter l'application.
Étape 4 - Installer et configurer PM2 pour gérer l'application Node.js
PM2 est un gestionnaire de processus pour l'application Node.js. Il vous permet de maintenir l'application Node.js en vie pour toujours, de gérer Node.js, de recharger Node.js sans temps d'arrêt et de faciliter les tâches d'administration système courantes.
Vous pouvez l'installer à l'aide du NPM comme indiqué ci-dessous :
npm i -g pm2
Après avoir installé PM2, modifiez le répertoire du projet et démarrez l'application Node.js avec PM2 comme indiqué ci-dessous :
pm2 start app.js
Une fois l'application démarrée avec succès, vous devriez obtenir le résultat suivant :
------------- __/\\\\\\\\\\\\\____/\\\\____________/\\\\____/\\\\\\\\\_____ _\/\\\/////////\\\_\/\\\\\\________/\\\\\\__/\\\///////\\\___ _\/\\\_______\/\\\_\/\\\//\\\____/\\\//\\\_\///______\//\\\__ _\/\\\\\\\\\\\\\/__\/\\\\///\\\/\\\/_\/\\\___________/\\\/___ _\/\\\/////////____\/\\\__\///\\\/___\/\\\________/\\\//_____ _\/\\\_____________\/\\\____\///_____\/\\\_____/\\\//________ _\/\\\_____________\/\\\_____________\/\\\___/\\\/___________ _\/\\\_____________\/\\\_____________\/\\\__/\\\\\\\\\\\\\\\_ _\///______________\///______________\///__\///////////////__ Runtime Edition PM2 is a Production Process Manager for Node.js applications with a built-in Load Balancer. Start and Daemonize any application: $ pm2 start app.js Load Balance 4 instances of api.js: $ pm2 start api.js -i 4 Monitor in production: $ pm2 monitor Make pm2 auto-boot at server restart: $ pm2 startup To go further checkout: http://pm2.io/ ------------- [PM2] Spawning PM2 daemon with pm2_home=/root/.pm2 [PM2] PM2 Successfully daemonized [PM2] Starting /root/project/app.js in fork_mode (1 instance) [PM2] Done. ┌─────┬────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐ │ id │ name │ namespace │ version │ mode │ pid │ uptime │ ↺ │ status │ cpu │ mem │ user │ watching │ ├─────┼────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤ │ 0 │ app │ default │ N/A │ fork │ 1437 │ 0s │ 0 │ online │ 0% │ 31.1mb │ root │ disabled │ └─────┴────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘
Ensuite, activez l'application Node.js pour qu'elle démarre au démarrage avec la commande suivante :
pm2 startup
Cette commande créera un fichier de service systemd pour l'application Node.js et lui permettra de démarrer après le redémarrage du système, comme indiqué ci-dessous :
[PM2] Init System found: systemd Platform systemd Template [Unit] Description=PM2 process manager Documentation=https://pm2.keymetrics.io/ After=network.target [Service] Type=forking User=root LimitNOFILE=infinity LimitNPROC=infinity LimitCORE=infinity Environment=PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin Environment=PM2_HOME=/root/.pm2 PIDFile=/root/.pm2/pm2.pid Restart=on-failure ExecStart=/usr/lib/node_modules/pm2/bin/pm2 resurrect ExecReload=/usr/lib/node_modules/pm2/bin/pm2 reload all ExecStop=/usr/lib/node_modules/pm2/bin/pm2 kill [Install] WantedBy=multi-user.target Target path /etc/systemd/system/pm2-root.service Command list [ 'systemctl enable pm2-root' ] [PM2] Writing init configuration in /etc/systemd/system/pm2-root.service [PM2] Making script booting at startup... [PM2] [-] Executing: systemctl enable pm2-root... Created symlink /etc/systemd/system/multi-user.target.wants/pm2-root.service → /etc/systemd/system/pm2-root.service. [PM2] [v] Command successfully executed. +---------------------------------------+ [PM2] Freeze a process list on reboot via: $ pm2 save [PM2] Remove init script via: $ pm2 unstartup systemd
Vous pouvez également lister votre application active avec la commande suivante :
pm2 list
Vous devriez obtenir le résultat suivant :
┌─────┬────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐ │ id │ name │ namespace │ version │ mode │ pid │ uptime │ ↺ │ status │ cpu │ mem │ user │ watching │ ├─────┼────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤ │ 0 │ app │ default │ N/A │ fork │ 1437 │ 104s │ 0 │ online │ 0.1% │ 39.7mb │ root │ disabled │ └─────┴────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘
Étape 5 : Configurer Apache en tant que proxy frontal pour Node.js
Ensuite, vous devrez installer et configurer le serveur Web Apache en tant que serveur frontal pour accéder à l'application Node.js.
Tout d'abord, installez le serveur Web Apache avec la commande suivante :
dnf install httpd -y
Ensuite, créez un fichier de configuration d'hôte virtuel Apache pour l'application Node.js avec la commande suivante :
nano /etc/httpd/conf.d/example.conf
Ajoutez les lignes suivantes :
<VirtualHost *:80> ServerAdmin [email protected] ServerName node.example.com ErrorLog /var/log/httpd/error.log CustomLog /var/log/httpd/access.log combined ProxyRequests On ProxyPass / http://localhost:8080 ProxyPassReverse / http://localhost:8080 </VirtualHost>
Enregistrez et fermez le fichier lorsque vous avez terminé. Ensuite, démarrez le serveur Web Apache et autorisez-le à démarrer au redémarrage avec la commande suivante :
systemctl start httpd systemctl enable httpd
Étape 6 - Accéder à l'application Node.js
À ce stade, le serveur Web Apache est configuré pour accéder à l'application Node.js. Ensuite, ouvrez votre navigateur Web et saisissez l'URL http://node.example.com. Vous serez redirigé vers la page de l'application Node.js comme indiqué ci-dessous :
Conclusion
Toutes nos félicitations! Vous avez déployé avec succès l'application Node.js avec Apache en tant que serveur frontal. Vous pouvez maintenant commencer à créer votre application Node.js pour l'environnement de production - essayez-la sur l'hébergement VPS d'Atlantic.Net !