¿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.