Hapi.js est un framework Node.js riche, robuste et puissant conçu pour créer des applications Web dans l'écosystème Node.js. Sa conception simple facilite la prise en main. Hapi utilise de nombreuses fonctionnalités JavaScript ES6 les plus récentes, telles que les promesses ES6. Pour ceux d'entre vous qui ont déjà utilisé Express, Hapi vous permet d'essayer quelque chose de nouveau et de découvrir toutes les dernières fonctionnalités JavaScript.
Dans ce tutoriel, notre objectif sera de configurer une page Web de base Hapi.js, hébergée depuis notre Vultr VPS, sur Ubuntu 16.04 LTS. Pour ceux qui ont un domaine pour leur site, nous utiliserons un proxy inverse pour lier notre domaine à notre site Web. Enfin, nous apprendrons à le gérer avec un gestionnaire de processus. Maintenant que nous avons éliminé cela, commençons.
Installation de Node.js
Nous devrons installer Node.js. Pour ce faire sur Ubuntu 16.04 LTS, suivez ces instructions.
Ajout du référentiel
Nous devrons ajouter le référentiel NodeSource APT, qui contient la dernière version LTS de Node.js.
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs
Nous téléchargeons un script que nous utiliserons pour ajouter le référentiel à notre liste de sources, ainsi que pour installer Node.js à partir du référentiel NodeSource.
Installation des outils de construction
En plus d'installer Node.js lui-même, nous devrons également installer certains outils de construction nécessaires, qui vous aideront à créer tous les modules que nous pourrions avoir besoin d'installer.
sudo apt-get install -y build-essential
Cela télécharge et installe simplement les outils de construction à partir du référentiel.
Configuration du répertoire d'application
Il est recommandé de désigner un dossier que nous utiliserons pour notre application, qui contiendra toutes les données de notre application, telles que les fichiers de configuration et les scripts de démarrage. Créez un dossier en le nommant comme vous le souhaitez. Pour les besoins de ce didacticiel, je suppose que vous l'avez nommé site
.
mkdir site
Une fois que vous avez créé le dossier, nous pouvons maintenant le changer. Assurez-vous que vous êtes dans le répertoire que vous venez de créer, démarrez l'assistant de package NPM.
npm init
Il vous demandera de saisir quelques éléments différents, tels que le nom de votre application, le fichier de démarrage, la licence, etc. La plupart des champs que vous pouvez laisser par défaut, à l'exception des champs les plus évidents, tels que le nom de votre application. Au final, cela ressemblera à ceci:
{
"name": "site",
"version": "1.0.0",
"description": "Hapi.js site",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "rich",
"license": "MIT"
}
Une fois que vous êtes satisfait du résultat, cliquez ENTERpour enregistrer le fichier.
Installation de Hapi.js
Maintenant que votre répertoire a été construit avec succès, nous pouvons maintenant procéder à l'installation de Hapi.js. Comme mentionné précédemment, nous utiliserons NPM pour télécharger Hapi.js, ainsi que ses dépendances, pour notre projet. Dans le répertoire du projet, exécutez ce qui suit.
npm install hapi.js
Cela télécharge Hapi.js depuis NPM et l'installe dans notre répertoire de projet. Dans le même temps, toutes les dépendances sur lesquelles Hapi.js peut s'appuyer sont également téléchargées pour notre commodité.
Configuration de notre exemple d'application
Il est maintenant temps de configurer notre fichier d'application de base Hapi.js. Il contiendra tout notre code pour l'application. Plus loin sur la route, nous pouvons développer notre code d'application et y ajouter d'autres choses, comme bon nous semble.
Ensuite, nous allons créer notre fichier de démarrage. Reportez-vous à la main
section de votre package.json
fichier pour déterminer exactement comment nommer le fichier. Puisque j'ai utilisé le schéma de nommage par défaut, notre fichier sera appelé index.js
.
nano index.js
Une fois que vous êtes à l'intérieur de l'éditeur de texte nano, créez votre code d'application de base, comme ça.
const Hapi=require('hapi');
const server=Hapi.server({
host:'localhost',
port: 3000
});
server.route({
method:'GET',
path:'/',
handler:((request,h)) => {
return 'Sample Hapi.js Application';
}
});
async function start() {
try {
await server.start();
} catch (err) {
console.log(err);
process.exit(1);
}
console.log(`Our server is running! ${server.info.uri}`);
};
start();
Tout d'abord, nous importons le module Hapi. Ensuite, nous initialisons notre constructeur de serveur, qui contient l'hôte sur lequel nous voulons exécuter le serveur, ainsi que le port, qui est 3000
destiné à ce didacticiel. Ensuite, nous avons mis en place un routeur de base, ce qui indique que chaque fois que quelqu'un visite le site, il sera accueilli par un simple message. Pour couronner le tout, nous avons une fonction asynchrone, pour démarrer notre serveur, qui se connectera à la console que notre serveur exécute. Lorsque vous avez terminé, enregistrez et fermez le fichier ( CTRL+ X)
Maintenant que notre fichier principal est configuré, nous sommes prêts à démarrer notre application.
node index.js
Si vous voyez " Our server is running!
" dans la console, le serveur a démarré correctement.
Installer Nginx
Étant donné que Nginx est disponible dans les référentiels Ubuntu par défaut, l'installation est simple. Mettez simplement à jour vos listes de paquets et installez-le.
sudo apt update
sudo apt install nginx -y
Après avoir actualisé les listes de packages, Nginx et ses dépendances seront installés.
Pour que Nginx inverse le proxy de notre application, nous devons créer un fichier de configuration. Ce fichier de configuration contiendra des informations sur notre application, que Nginx utilisera pour le proxy inverse.
Supprimez la configuration par défaut créée par Nginx, car nous la remplacerons par la nôtre plus tard.
sudo rm /etc/nginx/sites-enabled/default
Créez un nouveau fichier dans le sites-available
dossier. Quant à la dénomination, nous pouvons nous en tenir simplement site
, pour plus de simplicité.
sudo nano /etc/nginx/sites-available/site
Dans le fichier, collez ce qui suit et enregistrez.
server {
listen 80;
location / {
proxy_set_header X-Real-IP
$remote_addr;
proxy_set_header
X-Forwarded-For
$proxy_add_x_forwarded_for;
proxy_set_header Host
$http_host;
proxy_set_header
X-NginX-Proxy true; proxy_pass
http://127.0.0.1:3000/;
proxy_redirect off;
proxy_http_version 1.1;
proxy_set_header Upgrade
$http_upgrade;
proxy_set_header Connection
"upgrade";
proxy_redirect off;
proxy_set_header
X-Forwarded-Proto $scheme;
}
}
Dans ce fichier, nous disons à Nginx d'écouter sur le port 80
. Nous définissons également le relais proxy sur l' localhost
adresse et le port 3000
, qui est le même port que notre application Hapi.
Vous pouvez maintenant revenir au répertoire de votre application et démarrer le site. Une fois le site démarré, naviguez simplement vers http://yourdomain.com
ou http://yourip
, et vous verrez le texte " Hello World
".
Installer PM2
PM2 peut être trouvé dans le référentiel NPM, et vous pouvez l'installer globalement pour être accessible de n'importe où, comme ça.
sudo npm install pm2 -g
Le -g
drapeau à la fin indique que nous voulons installer le module dans le dossier global modules, ce qui nous permettra de l'utiliser en dehors de notre répertoire de projet. Ceci est utilisé pour que notre projet se comporte comme une application système normale.
Démarrer notre application avec PM2
Une fois que vous avez installé PM2, revenez au répertoire de votre projet. La syntaxe pour démarrer notre application sera légèrement différente maintenant. C'est ainsi que nous procéderons avec PM2.
pm2 start index.js --name site
Nous utilisons la fonction de démarrage PM2, qui crée essentiellement un profil pour notre application, sous le nom site
. Après avoir exécuté cette commande, votre site Web démarrera, mais vous remarquerez que les journaux ne s'afficheront pas. C'est parce que la façon dont nous voyons les journaux est maintenant différente.
pm2 logs site
Vous pouvez même spécifier le nombre de lignes de journaux que vous souhaitez voir, avec l' --lines
argument.
Conclusion
Vous avez réussi à configurer un serveur Web Hapi.js, à effectuer un proxy inverse avec Nginx et à apprendre à mieux le gérer avec PM2. Avec ces connaissances, vous pouvez développer ce didacticiel et créer une application Hapi.js très avancée. Pour en savoir plus sur les possibilités de Hapi, visitez leur documentation officielle . Si vous souhaitez en savoir plus sur les possibilités de PM2, consultez leur guide de démarrage rapide .