GNU/Linux >> Tutoriels Linux >  >> Linux

Comment configurer Apache en tant que serveur proxy frontal pour Node.js CentOS 8

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 !


Linux
  1. Comment installer le serveur proxy Squid sur CentOS 7

  2. Comment configurer un serveur OpenVPN sur CentOS 7

  3. Comment configurer des hôtes virtuels Apache sur CentOS

  4. Configurer le serveur DHCP sur CentOS 8 - Comment faire ?

  5. Comment configurer VSFTPD sur CentOS 8

Comment configurer SSH sur CentOS et RHEL

Comment configurer un serveur TeamSpeak sur CentOS 7

Comment configurer un serveur dédié Mount &Blade:Warband sur CentOS

Comment configurer un serveur Minecraft sur CentOS 7

Comment créer un proxy HTTP à l'aide de Squid sur CentOS 8

Comment installer NGINX en tant que proxy inverse pour Apache sur Ubuntu 18.04