Comment déployer l’application Node.js avec Apache sur Ubuntu 16.04

Node.js est un environnement d’exécution JavaScript qui vous permet de développer des applications côté serveur en toute simplicité. À l’aide du gestionnaire de processus PM2, vous pouvez configurer une appli Node.js avec Apache qui fonctionne en tant que service 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.

Essayez gratuitement le serveur Cloud avec IONOS

Testez notre serveur Cloud gratuitement - Testez votre serveur Cloud chez IONOS pendant 30 jours !

REST API
Trafic illimité
Virtualisation VMware

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
Note

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

Backup Cloud IONOS

Finies les interruptions d'activité coûteuses ! Sauvegardez facilement les données de votre entreprise et bénéficiez d'un conseiller personnel.

Simple
Sûr
Intégré

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.

Note

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.