Comment déployer l’application Node.js avec Apache sur Ubuntu 16.04
Exécuter des scripts Node.js en tant que services
Bien que les scripts Node.js open source en Javascript puissent être exécutés depuis l’écran de ligne de commande, exécuter les scripts en tant que services à l’aide du gestionnaire de processus PM2 confère aux scripts un ensemble de comportements plus robuste. Lorsqu’ils sont ainsi exécutés en tant que services, les scripts se relanceront automatiquement si le serveur est réinitialisé ou si le script échoue.
PM2 est un gestionnaire de processus pour Node.js, disposant d’un large éventail de fonctionnalités que vous pouvez utiliser pour contrôler et gérer vos scripts Node.js. Rendez-vous sur le site officiel de PM2 pour plus d’informations sur l’utilisation de PM2.
Configuration requise
- Un serveur Cloud qui exécute Linux (Ubuntu 16.04).
- Un nom de domaine en état de marche qui renvoie au serveur.
- Un serveur Web Apache en état de marche, installé et en cours d’exécution.
Grâce à un crédit de départ, vous pouvez tester gratuitement le serveur Cloud de IONOS pendant 1 mois (ou jusqu’à épuisement du crédit) et découvrir la combinaison parfaite entre performance et sécurité !
Installer Node.js
Mettez à jour les packs de votre serveur et installez curl à l’aide des commandes suivantes :
sudo apt-get update
sudo apt-get install curl
Téléchargez le dépôt personnel de paquet logiciel (PPA pour Personal Package Archives) de Node.js. Ce dernier contient une version de Node.js plus récente que les dépôts Ubuntu :
curl -sL https://deb.nodesource.com/setup_6.x -o nodesource_setup.sh
Exécutez la commande nodesource_setup.sh pour ajouter le PPA au cache de paquet de votre serveur :
sudo bash nodesource_setup.sh
Ce script mettra automatiquement à jour le serveur. Il n’y a aucunement besoin d’exécuter apt-get update une seconde fois.
Installez ensuite Node.js :
sudo apt-get install nodejs
Ceci installera également npm automatiquement.
Pour finir, installez le pack build-essential pour npm :
sudo apt-get install build-essential
Créer un exemple d’application Node.js
Pour cet exemple, on va commencer par créer un répertoire séparé dans la racine des documents de votre site Internet pour héberger des applications Node.js :
sudo mkdir /var/www/html/nodejs
Créez le fichier hello.js dans ce répertoire :
sudo nano /var/www/html/nodejs/hello.js
Ajoutez l’exemple de contenu suivant au fichier :
#!/usr/bin/env nodejs
var http = require('http');
http.createServer(function (request, response) {
response.writeHead(200, {'Content-Type': 'text/plain'});
response.end('Hello World! Node.js is working correctly.\n');
}).listen(8080);
console.log('Server running at http://127.0.0.1:8080/');
Sauvegardez et quittez le fichier et rendez le fichier exécutable :
sudo chmod 755 hello.js
Installer PM2
Utilisez npm afin d’installer PM2 à l’aide de la commande :
sudo npm install -g pm2
Lancez l’exemple de script hello.js que vous venez de créer à l’aide de la commande :
sudo pm2 start hello.js
À la racine, ajoutez PM2 aux scripts de démarrage, de sorte qu’il se relance automatiquement si le serveur est redémarré :
sudo pm2 startup systemd
- Sauvegarde automatique et restauration facile
- Gestion et planification intuitives
- Protection contre les menaces basée sur l'IA
Configurer Apache
Pour accéder au script Node.js, les modules Apache proxy et proxy_http doivent être installés à l’aide des commandes :
sudo a2enmod proxy
sudo a2enmod proxy_http
Une fois l’installation achevée, redémarrez Apache afin que les modifications prennent effet :
sudo service apache2 restart
Vous devrez ensuite ajuster les configurations du proxy Apache. Les directives suivantes doivent être insérées dans le bloc de commande VirtualHost dans le fichier de configuration principal Apache.
Par convention, ce fichier de configuration Apache se trouve en général dans : /etc/apache2/sites-available/example.com.conf sous Ubuntu.
L’emplacement et l’intitulé du fichier de configuration Apache d’un site peuvent varier.
Éditez ce fichier à l’aide de l’éditeur de votre choix, par exemple en utilisant la commande :
sudo nano /etc/apache2/sites-available/example.com.conf
Faites défiler le fichier jusqu’à ce que vous trouviez le bloc de commande VirtualHost, lequel ressemblera à :
<virtualhost *:80></virtualhost>
ServerName example.com
<directory " var www example.com html"></directory>
AllowOverride All
Ajoutez ce qui suit au bloc de commande VirtualHost :
ProxyRequests Off
ProxyPreserveHost On
ProxyVia Full
<proxy *></proxy>
Require all granted
<location nodejs></location>
ProxyPass http://127.0.0.1:8080
ProxyPassReverse http://127.0.0.1:8080
Assurez-vous d’ajouter ces lignes devant tout bloc de commande Directory. Par exemple :
<virtualhost *:80></virtualhost>
ServerName example.com
ProxyRequests Off
ProxyPreserveHost On
ProxyVia Full
<proxy *></proxy>
Require all granted
<location nodejs></location>
ProxyPass http://127.0.0.1:8080
ProxyPassReverse http://127.0.0.1:8080
<directory " var www example.com html"></directory>
AllowOverride All
Enregistrez et quittez le fichier, puis redémarrez Apache afin que les modifications prennent effet :
sudo services apache2 restart`
Après avoir relancé Apache, Node.js devrait être opérationnel. Vous pouvez tester l’application en la visionnant dans un navigateur. Vous devriez voir le message suivant depuis le fichier de test que vous avez créé plus tôt :
Hello World! Node.js is working correctly.