¿Se han preguntado en que esta programado Facebook? ¿O en que servidor web corre el código fuente de Facebook?
En esta oportunidad vamos a hablar del servidor web HHVM utilizado por Facebook para todos sus proyectos hechos en PHP o Hacklang (Lenguaje propio de Facebook derivado de p) . Vamos a ver como podemos aplicar nuestros proyectos en Php con esta nueva tecnologia.
Pero primero, veremos una breve introducción de los creadores de este software donde nos cuentan qué es HHVM y cómo puede ayudarnos en la performance de nuestras aplicaciones web.
Ahora que ya tenemos una idea más clara de qué es y para qué sirve HHVM de Facebook, procederemos a instalarlo en nuestro servidor dedicado o Cloud VPS con CentOS, para luego integrarlo con nuestro servidor web favorito: Nginx.
Instalar HHVM
Este servidor web lo puedes instalar en cualquiera de nuestros servicios de Cloud VPS o Servidores dedicados
1. Bajamos e instalamos el repositorio de Hop5.in
cd /etc/yum.repos.d sudo wget http://www.hop5.in/yum/el6/hop5.repo
2. Realizamos la limpieza de paquetes
yum clean all
3. Instalamos el paquete hhvm
yum install hhvm
4. Actualizamos el paquete hiphop-php
yum update hiphop-php
5. Verificamos la versión de nuestro servicio hhvm
[root@node1 ~]hhvm --version HipHop VM 3.0.1 (rel) Compiler: Repo schema: e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
Configurar HHVM con Nginx
1. Hacemos proxy del servidor hhvm, es muy parecido a lo que hemos hecho con php-fpm
# Note this will work with "hack" files as well as php files! 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; }
2. Configuración del HHVM en /etc/hhvm.hdf
Server { Port = 9000 SourceRoot = /var/www/ } Eval { Jit = true } Log { Level = Error UseLogFile = true File = /var/log/hhvm/error.log Access { * { File = /var/log/hhvm/access.log Format = %h %l %u %t "%r" %>s %b } } } VirtualHost { * { Pattern = .* RewriteRules { dirindex { pattern = ^/(.*)/$ to = $1/index.php qsa = true } } } } StaticFile { FilesMatch { * { pattern = .*.(dll|exe) headers { * = Content-Disposition: attachment } } } Extensions { css = text/css gif = image/gif html = text/html jpe = image/jpeg jpeg = image/jpeg jpg = image/jpeg png = image/png tif = image/tiff tiff = image/tiff txt = text/plain } }
3. Iniciamos el servicio HHVM
/usr/bin/hhvm --mode daemon --user web --config /etc/hhvm.hdf
Con esto podemos iniciar nuestros pasos con este nuevo servidor. Los desarrolladores de Facebook nos aseguran que la velocidad de nuestros sitios mejorara considerablemente, y algo bueno a saber es que hoy por hoy el 98% de los frameworks más populares están soportados.