HHVM (HipHop Virtual Machine) est une machine virtuelle open-source conçue pour exécuter des programmes écrits en Hack et PHP. HHVM est développé par Facebook, et ses codes sources sont hébergés sur Github; publié sous les termes de la licence PHP et Zend.
HHVM utilise le principe de la compilation JIT (juste à temps) qui permet d'atteindre des performances supérieures sans compromettre la flexibilité de développement fournie par PHP. HHVM exécute le code PHP ou Hack en bytecode HipHop intermédiaire (HHBC), puis traduit dynamiquement en code machine x86_64.
HHVM peut être installé sur la plupart des principales plates-formes Linux ; également un support expérimental sur Mac OS X 10.10 et des travaux sont en cours pour prendre en charge le système d'exploitation Windows.
HHVM propose les packages prédéfinis pour les systèmes d'exploitation Debian et Ubuntu.
Ubuntu 16.04 (Xenial)
Ubuntu 15.10 (Wily Werewolf)
Ubuntu 15.04 (Vivid)
Ubuntu 14.04 (Trusty)
Debian 8 (Jessie)
Debian 7 (Wheezy )
Vous pouvez également compiler à partir des sources pour d'autres types de distributions Linux.
Libérer :
HHVM est activement développé par Facebook et vous pouvez obtenir une version complète (version stable) toutes les huit semaines. Chaque troisième version majeure de HHVM est considérée comme une version de support à long terme (LTS). LTS est pris en charge pendant près d'un an et rétroporté avec des correctifs de bogues critiques et des correctifs de sécurité.
Si vous avez encore des questions, consultez un article de blog sur les versions LTS.
Ce guide vous aide à configurer HHVM sur Ubuntu 16.04 et Debian 8. Ce guide devrait fonctionner sur les versions précédentes d'Ubuntu telles que Ubuntu 15.10, Ubuntu 14.04 LTS, Ubuntu 15.04 et Debian 7.
Ajouter un référentiel HHVM :
Maintenant, ajoutez un référentiel HHVM sur votre machine avant de procéder à l'installation.
Debian :
sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0x5a16e7281be7a449 echo deb http://dl.hhvm.com/debian $(lsb_release -sc) main | sudo tee /etc/apt/sources.list.d/hhvm.list
Ubuntu :
sudo apt-get install software-properties-common sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0x5a16e7281be7a449 sudo add-apt-repository "deb http://dl.hhvm.com/ubuntu $(lsb_release -sc) main"PS :Pour Ubuntu, remplacez la variable "$(lsb_release -sc)" par le nom de code de votre distribution. Ex. :xénial
Installez HHVM sur Ubuntu 16.04 / Debian 8 :
Mettez à jour le cache du référentiel et passez à l'installation de HHVM, cela installera la dernière version de HHVM sur votre machine.
sudo apt-get update sudo apt-get install -y hhvm
Vérifiez la version HHVM.
$ php -v HipHop VM 3.15.0 (rel) Compiler: tags/HHVM-3.15.0-0-g92a682ebaa3c85b84857852d8621f528607fe27d Repo schema: 225d4323575bbc8a498dc809a1c41354f6bca830
Tester HHVM :
Vous pouvez simplement invoquer une commande pour démarrer HHVM. Vous pouvez contrôler le serveur HHVM en utilisant des arguments supplémentaires avec la commande "hhvm".
Créons un fichier PHP pour servir la requête via un navigateur Web sur votre répertoire de travail actuel.
vi test.php
Mettez le contenu ci-dessous dans le fichier ci-dessus.
Exécutez la commande ci-dessous.
hhvm -m server -p 8080
-m représente le mode et indique ici que HHVM s'exécute en mode serveur HTTP
-p configure le port TCP utilisé par HHVM pour écouter les requêtes HTTP.
En savoir plus sur les modes HHVM.
Naviguez dans votre navigateur Web jusqu'à l'URL ci-dessous.
http://ip-add-re-ss:8080/test.phpVous devriez voir la page ci-dessous qui confirme que HHVM fonctionne correctement.
Types de serveurs :
Le type de serveur est classé en fonction de la façon dont le HHVM sert la page pour la demande des utilisateurs ; il a un support intégré pour les types de serveurs :Proxygen et FastCGI .
ProxyGen HHVM :
Le mode Proxygen est un serveur Web complet, intégré directement dans HHVM. Il est très facile à configurer et à faire fonctionner et répond rapidement aux demandes Web. Le mode Porxygen fournit un serveur Web hautes performances équivalent à FastCGI et Nginx.
Comme je l'ai déjà dit, les paramètres de configuration sont très simples et faciles à configurer. Le fichier de configuration principal de HHVM est /etc/hhvm/server.ini .
Modifiez le fichier de configuration comme ci-dessous.
sudo vi /etc/hhvm/server.ini
Modifiez les configurations HHVM selon vos besoins.
; configures the TCP port that HHVM uses to listen to HTTP requests. hhvm.server.port = 80 ; Configures HHVM server type hhvm.server.type = proxygen ; Configures default document for the directory hhvm.server.default_document = index.php ; Enabling Logs hhvm.log.use_log_file = true hhvm.log.file = /var/log/hhvm/error.log ; Configures Error document for the directory hhvm.server.error_document404 = index.php ; Sets the default directory for HHVM webserver when it is started hhvm.server.source_root=/var/www/public
Vous pouvez exécuter ces commandes pour configurer HHVM afin qu'il démarre au démarrage et pour le démarrer en tant que service maintenant :
sudo update-rc.d hhvm defaults sudo service hhvm restart
Créez un répertoire /var/www/public qui contiendra les documents de votre site Web.
sudo mkdir -p /var/www/public
Créez un fichier de test pour vérifier que HHVM répond aux requêtes Web.
sudo vi /var/www/public/index.php
Collez le contenu ci-dessous dans le fichier ci-dessus.
Accédez au serveur Web HHVM via le navigateur de votre choix.
http://ip-add-re-ssVous obtiendrez la page PHPInfo où vous pourrez trouver toutes les informations sur PHP.
HHVM FastCGI :
Dans ce mode, HHVM se situe entre votre document Web (.php ) et serveur Web (Apache ouNginx ). FastCGI fournit une haute performance dans le service rapide des pages Web, il est très similaire à PHP-FPM. HHVM écoute soit sur un socket TCP (localhost :9000 ) ou un socket UNIX. Serveur Web (Nginx ou Apache ) écoutera sur le port 80 ou 443 les requêtes Web.
Lorsqu'une nouvelle demande arrive, le serveur Web établit une connexion à HHVM ou réutilise l'une des connexions précédemment ouvertes, à l'aide de HHVM FastCGI. Une fois la connexion établie, le serveur Web fournit à HHVM des informations telles que les en-têtes de requête, le corps et le chemin du fichier à exécuter. Maintenant, HHVM calcule les informations reçues et les renvoie au serveur Web en utilisant à nouveau FastCGI. Enfin, le serveur Web enverra une réponse au client avec les données demandées.
Apache :
Installez le serveur Apache sur votre machine à l'aide de la commande suivante.
sudo apt-get install -y apache2
L'exécution des commandes ci-dessous configurera Apache pour qu'il fonctionne avec HHVM afin de répondre aux requêtes Web.
sudo /usr/share/hhvm/install_fastcgi.sh
Par défaut, apache recherchera les pages Web dans /var/www/html répertoire pour servir les requêtes, mais il ne sait peut-être pas comment gérer .php des dossiers. Vous auriez donc besoin de dire à apache de prendre n'importe quel fichier qui se termine par .hh ou .php et l'a envoyé à HHVM via fastCGI.
Modifiez le fichier de configuration ci-dessous.
sudo vi /etc/apache2/mods-enabled/hhvm_proxy_fcgi.conf
Réglez-le comme ci-dessous.
ProxyPassMatch ^/(.+\.(hh|php)(/.*)?)$ fcgi://127.0.0.1:9000/var/www/html/$1
Redémarrez les services apache et HHVM.
sudo /etc/init.d/apache2 restart sudo /etc/init.d/hhvm restart
Nginx :
Installez le Nginx sur votre machine en utilisant la commande suivante.
sudo apt-get install -y nginx
L'exécution des commandes ci-dessous configurera Nginx pour qu'il fonctionne avec HHVM afin de répondre à la demande Web.
sudo /usr/share/hhvm/install_fastcgi.sh
Par défaut, Nginx recherchera les pages Web dans /usr/share/nginx/htm l (dépend du système d'exploitation) pour servir les requêtes, mais il ne sait peut-être pas comment gérer .php des dossiers. Vous demanderez donc à Nginx de prendre n'importe quel fichier se terminant par .hh ou .php et l'a envoyé à HHVM via fastCGI.
Modifiez le fichier de configuration ci-dessous.
sudo vi /etc/nginx/sites-available/default
Modifiez sous la ligne, ajoutez index.php à votre ligne d'index.
De :
index index.html index.htm;
À :
index index.php index.html index.htm;
Redémarrez les services apache et HHVM.
sudo /etc/init.d/nginx restart sudo /etc/init.d/hhvm restart
Pour tester le type FastCGI, créez/placez le fichier .php dans les répertoires par défaut.
Apache et Nginx Ubuntu 16.04, 15.04 / Debian 8 :
$ sudo vi /var/www/html/index.php
Collez le contenu ci-dessous dans le fichier ci-dessus.