Stratégie Digitale
Cet article part du principe que l’installation détaillée dans : Installation d’un VPS Multisite WordPress a été réalisée. Du moins jusqu’à l’installation d’Apache.
Ainsi les pré-requis sont :
L’objectif est de pouvoir, en parallèle d’une installation multisite WordPress, installer NodeJS pour déployer une application, quelle qu’elle soit, sur notre serveur VPS. Les étapes détaillées ci-dessous couvriront donc :
Cet article fait appel à plusieurs documentations externes, notamment pour tout ce qui concerne l’installation basique d’Express et la mise en route d’un simple serveur.
Pour en savoir plus : A propos de NodeJS
L’installation de NodeJS sur un serveur VPS se fait via le Package Manager une fois connecté via SSH.
su
apt-get update
apt-get install nodejs npm
Une fois NodeJS et NPM installés, nous allons pouvoir créer une application NodeJS simple avec un serveur Express en Localhost.
La création d’une nouvelle application avec installation d’Express est suffisament documentée sur le site d’Express.
mkdir test-vps
cd test-vps
npm init
npm install express
Et nous allons directement utiliser le code « Hello World » fourni par Express sur cette page.
nano app.js
const express = require('express')
const app = express()
const port = 3000
app.get('/', (req, res) => {
res.send('Hello World!')
})
app.listen(port, () => {
console.log(`Example app listening at http://localhost:${port}`)
})
Une fois ces étapes effectuées, nous pouvons lancer notre serveur basique via la commande :
node app.js
et théoriquement y accéder sur le localhost du VPS (port 3000) via la commande :
curl localhost:3000
Mais le serveur Express (et notre application NodeJS) est pour l’instant uniquement accessible en local sur le VPS.
Les étapes suivantes vont nous permettre de lancer indépendemment, et automatiquement au démarrage de notre VPS, notre application NodeJS.
PM2 est un gestionnaire de processus pour NodeJS que nous utiliserons pour faciliter le démarrage de notre application NodeJS.
Nous allons donc commencer par terminer notre application NodeJS précedemment lancée et installer PM2 via NPM avec la commande :
npm install -g pm2
Pour lancer notre application NodeJS, et l’ajouter à la liste de nos processus dans PM2, on lance ensuite la commande :
pm2 start /chemin_vers_notre_application_nodejs/test-vps/app.js
PM2 va désormais se charger de gérer automatiquement notre serveur Express. Ce dernier est désormais à nouveau lancé et accessible sur localhost:3000
Pour finir, en cas de redémarrage de notre VPS, il serait intéressant que notre application NodeJS soit relancée automatiquement – pour ce faire, il suffit d’ajouter PM2 à la liste des services qui s’executent au démarrage d’Ubuntu, et PM2 se chargera par lui-même de lancer l’ensemble des processus qui lui sont attribués.
pm2 startup systemd
Notre application NodeJS est maintenant accessible et automatiquement démarrée via PM2. Pour finir, nous allons maintenant utiliser le proxy Apache pour rendre notre application accessible depuis Internet.
Avant toute chose nous allons activer deux modules Apache et le redémarrer :
a2enmod proxy
a2enmod proxy_http
service apache2 restart
Ces deux modules vont permettre l’activation de la passerelle pour les requêtes HTTP(S) reçues et de permettre la redirection que nous allons effectuer dans les étapes suivantes.
Nous allons maintenant configurer le Virtual Host pour effectuer la redirection et l’activer. Pour ce faire, nous allons créer notre fichier conf :
nano /etc/apache2/sites-available/node.guillaumelemoine.eu.conf
Dans lequel nous allons ajouter les lignes suivantes en veillant à remplacer les termes en gras (votre nom de domaine et/ou sous-domaine qui permettra d’accéder à l’application via internet – il faudra également prendre soin de rediriger ce domaine/sous-domaine vers le serveur VPS voir ici pour la création et redirection de sous-domaines) :
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName guillaumelemoine.eu
ServerAlias node.guillaumelemoine.eu
ProxyRequests Off
ProxyPreserveHost On
ProxyPass / http://localhost:3000/
ProxyPassReverse / http://localhost:3000/
</VirtualHost>
Nous allons ensuite activer notre fichier conf Apache et redémarrer le serveur Apache.
a2ensite node.guillaumelemoine.eu
service apache2 restart
Notre Application NodeJS/Express « Hello World » est désormais accessible par Internet :
Ces étapes pourront ainsi être appliquées pour tout type d’application NodeJS gérées par votre serveur VPS.