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