Configuración de HHVM de alto rendimiento y Nginx/Apache con MariaDB en Debian/Ubuntu


HHVM son las siglas de HipHop Virtual Machine, es una máquina virtual de código abierto creada para ejecutar Hack (es un lenguaje de programación para HHVM) y aplicaciones escritas PHP. HHVM utiliza una ruta de compilación de último minuto para lograr un rendimiento notable manteniendo la flexibilidad a la que los programadores de PHP son adictos. Hasta la fecha, HHVM ha logrado un aumento de más de 9 veces en el rendimiento de solicitudes http y un recorte de más de 5 veces en la utilización de la memoria (cuando se ejecuta con poca memoria del sistema) para Facebook en comparación con el motor PHP + APC (caché PHP alternativa).

HHVM también se puede utilizar junto con un servidor web basado en FastCGI como Nginx o Apache.

En este tutorial veremos los pasos para configurar el servidor web Nginx/Apache, el servidor de base de datos MariaDB y HHVM. Para esta configuración, usaremos Ubuntu 15.04 (64 bits) ya que HHVM se ejecuta solo en sistemas de 64 bits, aunque también se admiten las distribuciones Debian y Linux Mint.

Paso 1: instalar Nginx y el servidor web Apache

1. Primero realice una actualización del sistema para actualizar la lista de repositorios con la ayuda de los siguientes comandos.

# apt-get update && apt-get upgrade

2. Como dije, HHVM se puede usar tanto con Nginx como con el servidor web Apache. Por lo tanto, es su elección qué servidor web utilizará, pero aquí le mostraremos la instalación de ambos servidores web y cómo usarlos con HHVM.

En este paso, instalaremos el servidor web Nginx/Apache desde el repositorio de paquetes usando el siguiente comando.

# apt-get install nginx
# apt-get install apache2

En este punto, debería poder navegar a la siguiente URL y podrá ver la página predeterminada de Nginx o Apache.

http://localhost
OR
http://IP-Address

Paso 2: instalar y configurar MariaDB

3. En este paso, instalaremos MariaDB, ya que ofrece un mejor rendimiento en comparación con MySQL.

# apt-get install mariadb-client mariadb-server

4. Después de la instalación exitosa de MariaDB, puede iniciar MariaDB y establecer la contraseña de root para proteger la base de datos:

# systemctl start mysql
# mysql_secure_installation

Responda las siguientes preguntas escribiendo y o n y presione enter. Asegúrese de leer las instrucciones detenidamente antes de responder las preguntas.

Enter current password for root (enter for none) = press enter
Set root password? [Y/n] = y
Remove anonymous users[y/n] = y
Disallow root login remotely[y/n] = y
Remove test database and access to it [y/n] = y
Reload privileges tables now[y/n] = y 

5. Después de configurar la contraseña de root para MariaDB, puede conectarse al indicador de MariaDB con la nueva contraseña de root.

# mysql -u root -p

Paso 3: Instalación de HHVM

6. En esta etapa instalaremos y configuraremos HHVM. Debe agregar el repositorio HHVM a su archivo sources.list y luego debe actualizar su lista de repositorios usando la siguiente serie de comandos.

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

Importante: No olvide reemplazar DISTRIBUTION_VERSION con su versión de distribución de Ubuntu (es decir, lúcida, precisa o confiable) y también en Debian reemplazar con jessie o wheezy. En Linux Mint, las instrucciones de instalación son las mismas, pero petra es la única distribución compatible actualmente.

Después de agregar el repositorio HHVM, puede instalarlo fácilmente como se muestra.

# apt-get install -y hhvm

La instalación de HHVM lo iniciará ahora, pero no está configurado para iniciarse automáticamente en el próximo inicio del sistema. Para configurar el inicio automático en el próximo inicio, use el siguiente comando.

# update-rc.d hhvm defaults

Paso 4: Configurar Nginx/Apache para hablar con HHVM

7. Ahora, nginx/apache y HHVM están instalados y funcionando como independientes, por lo que necesitamos configurar ambos servidores web para que se comuniquen entre sí. La parte crucial es que tenemos que decirle a nginx/apache que reenvíe todos los archivos PHP a HHVM para que se ejecuten.

Si está utilizando Nginx, siga estas instrucciones como se explica.

De forma predeterminada, la configuración de nginx se encuentra en/etc/nginx/sites-available/default y esta configuración busca en/usr/share/nginx/html los archivos para ejecutar, pero no sabe qué hacer con PHP.

Para hacer que Nginx hable con HHVM, necesitamos ejecutar el siguiente script de inclusión que configurará nginx correctamente colocando un hhvm.conf al comienzo de la configuración de nginx como se mencionó anteriormente.

Este script hace que el nginx se comunique con cualquier archivo que termine con .hh o .php y lo envíe a HHVM a través de fastcgi.

# /usr/share/hhvm/install_fastcgi.sh

Importante: si está utilizando Apache, no se necesita ninguna configuración ahora.

8. A continuación, debe utilizar/usr/bin/hhvm para proporcionar/usr/bin/php (php) ejecutando este comando a continuación.

# /usr/bin/update-alternatives --install /usr/bin/php php /usr/bin/hhvm 60

Una vez realizados todos los pasos anteriores, ahora puede iniciar HHVM y probarlo.

# systemctl start hhvm

Paso 5: Probar HHVM con Nginx/Apache

9. Para verificar que hhvm funciona, debe crear un archivo hello.php en el directorio raíz del documento nginx/apache.

# nano /usr/share/nginx/html/hello.php       [For Nginx]
OR
# nano /var/www/html/hello.php               [For Nginx and Apache]

Agregue el siguiente fragmento a este archivo.

<?php
if (defined('HHVM_VERSION')) {
echo 'HHVM is working';
 phpinfo();
}
else {
echo 'HHVM is not working';
}
?>

y luego navegue a la siguiente URL y verifique para ver "hola mundo".

http://localhost/info.php
OR
http://IP-Address/info.php

Si aparece la página "HHVM", significa que está todo listo.

Conclusión

Estos pasos son muy fáciles de seguir y espero que encuentre útil este tutorial y si obtiene algún error durante la instalación de algún paquete, publique un comentario y encontraremos soluciones juntos. Y cualquier idea adicional es bienvenida.