Cómo instalar HHVM en Ubuntu con Apache

En Desarrollo, Tutoriales y Guías, Webmasters por

Hace ya tiempo que quería hablaros de Hip Hop Virtual Machine más conocido por su abreviatura HHVM. No se trata de ningún grupo de música sino de una máquina virtual diseñada por Facebook para su propio uso pero que han liberado el código para que todos podamos usarla.

Cómo instalar HHVM en Ubuntu con Apache

HHVM da soporte a PHP y a Hack, siendo este último un nuevo lenguaje de programación basado en PHP y que nos aporta características nuevas como el uso de colecciones (alternativas a los arrays de PHP), tipado estático, permite el uso de expresiones Lambda, etc… Cómo no es el objetivo del artículo hablar a fondo sobre el lenguaje Hack podéis visitar la página oficial con toda la información (en inglés).

La principal característica de HHVM es que dispone de un compilador JIT (just-in-time). Para explicarlo de forma sencilla, HHVM compila PHP (o lenguaje Hack) en bytecode y después este bytecode es traducido a lenguaje de máquina mediante el compilador JIT. El proceso de compilación descrito permite realizar diversas optimizaciones y así incrementar el rendimiento de nuestras aplicaciones PHP. Si queréis conocer HHVM más a fondo, lo mejor es visitar su web oficial y su página de GitHub.

Antes de continuar también debo aclarar que la configuración que muestro en este tutorial de como instalar HHVM en Ubuntu, no está destinado a servidores en producción.

Guía de instalación de HHVM en Ubuntu 14.04 x64 con Apache

Lo primero va a ser describiros el entorno de trabajo sobre el que estamos trabajando para que podáis replicarlo. Las pruebas han sido realizadas en un VPS de DigitalOcean de 512MB de RAM y con el sistema operativo Ubuntu 14.04 x64. Debo aclarar que HHVM sólo funciona en sistemas operativos x64, asique no uséis un sistema operativo de 32 bits porque no funcionará.

La versión de Apache instalada en el momento de escribir el tutorial es Apache 2.4.7, la que instalamos apt-get por defecto (más adelante describo como hacerlo).

Instalando Hip Hop Virtual Machine desde cero.

Una vez que accedemos a nuestro servidor a través de SSH con PuTTY por ejemplo, tenemos que ejecutar los comandos descritos en la documentación oficial, que son los siguientes para Ubuntu 14.04:

wget -O - http://dl.hhvm.com/conf/hhvm.gpg.key | sudo apt-key add -
echo deb http://dl.hhvm.com/ubuntu trusty main | sudo tee /etc/apt/sources.list.d/hhvm.list
sudo apt-get update
sudo apt-get install hhvm

En este punto ya está HHVM instalado y debemos instalar Apache, para esto ejecutamos el siguiente commando:
sudo apt-get install apache2

Cuando termine el proceso de instalación debemos configurar Apache y HHVM para que trabajen juntos, para conseguir esto ejecutamos los comandos:

sudo /usr/share/hhvm/install_fastcgi.sh
sudo /etc/init.d/hhvm restart
sudo service apache2 restart

Llegados a este punto vamos a hacer dos pruebas para comprobar que todo ha ido bien. Primero ejecutamos el comando php -v y nos debería aparecer en pantalla algo similar a:

Compiler: tags/HHVM-3.4.0-0-g817b3a07fc4e509ce15635dbc87778e5b3496663
Repo schema: 0e12aaa31fae66b5591f65603de50c9d62caafac
Extension API: 20140829

Lo segundo será acceder a nuestro servidor Apache para comprobar que está funcionando. Para esto hay que poner en nuestro navegador la IP de la siguiente forma: http://ip_servidor , por ejemplo, http://128.179.37.10

Durante la configuración anterior de HHVM se crea un archivo que provoca un error 404 cuando tratamos de acceder a archivos php. La solución es eliminar este archivo de configuración con el siguiente comando:

sudo rm -rf /etc/apache2/mods-enabled/hhvm_proxy_fcgi.conf

Ahora editamos el archivo de configuración de Apache con el comando:
nano /etc/apache2/apache2.conf

Nos desplazamos hasta la sección de configuración de directorios e introducimos la línea:
ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/var/www/html/$1

hhvm configuración con Apache

Tiene que quedar tal y como se ve en la imagen (para configuraciones más avanzadas consultar la documentación oficial).

Reiniciamos Apache y con esto todos los archivos con extensión PHP pasarán a través de HHVM.
sudo service apache2 restart

Para probar que realmente funciona, creamos un archivo php de prueba y luego accedemos a el:

cd /var/www/html
nano test.php

Agregamos la línea:

<?php phpinfo(); ?>

Accedemos al archivo php a través del navegador:

hhvm test

Espero que os haya servido de ayuda el tutorial y si os surge alguna duda no dudéis en usar los comentarios.