[Debian 9] Mise en place de HHVM pour Nginx

HHVM, c’est une solution tierce pour booster de façon radicale vos sites web. Nombre de sites web utilisent des scripts PHP, HHVM est capable de les exécuter le plus rapidement possible.

Le but de cet article n’est pas la présentation de HHVM mais de sa mise en place sur un serveur web nginx, sur un Debian 9.4. Pour avoir des informations complémentaires sur ce système, je vous conseille très fortement de visiter le site officiel du projet : http://hhvm.com/

En quelques mots, il s’agit d’un moteur d’exécution de scripts produit par des développeurs de Facebook.  C’est ce même moteur qui propulse Facebook et comme vous le voyez, l’exécution est très rapide même dans les pages comportant de nombreux scripts plus ou moins lourds.


Téléchargement et installation de HHVM

Avant toute manipulation, il vous mettre à jour votre système, télécharger des paquets pour apt et modifier les sources de paquets de votre serveur pour prendre en compte les dépôts officiels HHVM.

sudo apt update && sudo apt upgrade && sudo apt install apt-transport-https software-properties-common dirmngr && echo deb http://dl.hhvm.com/debian jessie main | tee /etc/apt/sources.list.d/hhvm.list

Il faut aussi récupérer la clé publique du dépôt et l’ajouter dans le trousseau local via cette commande, puis ajouter le dépôt :

apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xB4112585D386EB94
add-apt-repository https://dl.hhvm.com/debian

A partir de ce moment, vous pouvez télécharger et installer le paquet sur votre serveur !
J’utilise le gestionnaire de paquets « apt ». Mettez à jour la liste de vos dépôts auparavant pour prendre en compte les modifications récentes.

apt update && apt install hhvm

L’installation et la compilation se font assez rapidement ; tout dépend de la puissance de votre serveur.
En moyenne, l’installation ne dure pas plus de quelques dizaines de secondes. Même l’installation est aussi rapide que « l’exploitation » du moteur… !

L’installation terminée, il faut lancer une dernière commande pour pré-configurer HHVM en fonction de votre serveur web – pratique ! :

cd /usr/share/hhvm/ && ./install_fastcgi.sh

Exploitation sur le serveur nginx

Puisque le paquet est installé, il faut maintenant configurer un fichier de configuration pour le serveur web nginx.
Selon la configuration de votre serveur web, vous pouvez placer le script ci-dessous directement dans une configuration d’un vhost. Toutefois, pour éviter la re-saisie à chaque fois que vous créez un vhost, il est préférable de créer un fichier de configuration unique pour HHVM.

Un fichier à la racine du dossier d’nginx a été créé, comportant la configuration d’HHVM. Je l’ai modifiée pour utiliser un socket plutôt qu’un port (ligne « fastcgi_pass »)

nano /etc/nginx/hhvm.conf

location ~ \.(hh|php)$ {
    fastcgi_keep_conn on;
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include        fastcgi_params;
}

Quelques explications

Tous les scripts PHP vont « passer dans la moulinette » d’HHVM. Pour se faire, le socket dans le dossier /var/run/ sera utilisé.
Le reste du bout de code correspond à une configuration basique pour nginx.

Dans le fichier de configuration de votre vhost sur nginx, vous devrez inclure la configuration de ce nouveau fichier précédemment créé. Dans la balise « server { } », saisissez à l’endroit que vous souhaitez cette ligne :

include /etc/nginx/hhvm.conf;

Naturellement, vous devrez changer le chemin et le nom du fichier de configuration si vous n’avez pas suivi le tutoriel à la lettre. Lorsque votre fichier de configuration est saisi, vous devez redémarrer le service nginx et démarrer HHVM.

systemctl enable hhvm && systemctl start hhvm && systemctl restart nginx

N’oubliez pas non plus de faire un « systemctl enable » pour le service – le moteur sera automatiquement lancé au démarrage de votre serveur.
Vous avez dès à présent un serveur web dopé à la sauce HHVM (made in Facebook) pour propulser tous vos CMS et autres projets web à une vitesse extraordinaire !


Pour les utilisateurs d’Apache, la configuration est similaire pour pouvoir bénéficier des services de HHVM.  Toutefois, la configuration de votre serveur web Apache doit être modifiée pour intégrer les lignes de codes – Ce n’est pas le but de cet article.

Julien H

Passionné depuis toujours par l'informatique, je transforme ma passion en expertise. J'utilise quotidiennement les outils et systèmes Microsoft. Je ne délaisse pas mon côté ouvert, notamment via l'utilisation des OS Debian et Archlinux. L'infosec m'ouvre les yeux sur les enjeux actuels et futurs de l'IT.

2 commentaires

    1. HHVM écoute sur le socket via cette ligne de configuration : « fastcgi_pass unix:/var/run/hhvm/server.sock;« .
      Tu peux, si tu le souhaites, faire écouter HHVM sur un port via cette ligne de configuration : « fastcgi_pass 127.0.0.1:9000; »
      En fait, c’est un peu le même principe de configuration comme PHP-FPM sous nginx, à la différence qu’il s’agit là d’un moteur plus puissant que PHP5.x

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

Share This
Fermer
Fermer