{"id":232779,"date":"2023-01-28T17:06:00","date_gmt":"2023-01-28T14:06:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=232779"},"modified":"2022-11-10T17:43:55","modified_gmt":"2022-11-10T14:43:55","slug":"como-configurar-hhvm-en-ubuntu-vps","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/es\/como-configurar-hhvm-en-ubuntu-vps\/","title":{"rendered":"\u00bfC\u00f3mo configurar HHVM en Ubuntu VPS?"},"content":{"rendered":"\n<p>Mi <a href=\"https:\/\/helloacm.com\/webhosting-review-quickhostuk-web-hosting-is-simply-the-best\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">VPS<\/a> (servidor privado virtual) inicial solo ten\u00eda 512 M de RAM, 1 n\u00facleo y 10 G de disco duro. M\u00e1s tarde, <a href=\"https:\/\/helloacm.com\/mysql-server-stopped-due-of-out-of-memory-exception-on-ubuntu-vps\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">actualic\u00e9<\/a> a 2 n\u00facleos, 1 G de RAM y 20 G de disco duro debido a un incidente de falta de memoria. Sin embargo, hace unos d\u00edas, el tr\u00e1fico crece (la mayor\u00eda de ellos son de <a href=\"https:\/\/helloacm.com\/how-to-ban-specified-ips-in-apache2-server\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">bots<\/a> ), el VPS apenas pod\u00eda manejar y es por eso que <a href=\"https:\/\/helloacm.com\/site-news-vps-upgraded-again-to-handle-large-traffic\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">actualic\u00e9 nuevamente<\/a> a 3 n\u00facleos y 2 GB de RAM.<\/p>\n<p>La versi\u00f3n de PHP en VPS es 5.5 y, por lo tanto, tiene un acelerador incorporado, <strong>OpCache<\/strong>, que almacena en cach\u00e9 el c\u00f3digo de operaci\u00f3n de PHP. Opcache se presenta para reemplazar APC (Another PHP Cache), que es un proyecto de c\u00f3digo abierto que se usa principalmente para acelerar el c\u00f3digo PHP antes de la versi\u00f3n 5.4.x o versiones anteriores. El <a href=\"https:\/\/hhvm.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">HHVM<\/a> funciona de manera similar. Compila el c\u00f3digo PHP en ensamblador la primera vez y luego el c\u00f3digo ensamblador, si se encuentra y sigue siendo v\u00e1lido, se ejecutar\u00e1 sin volver a interpretar el mismo c\u00f3digo PHP. Esta idea es muy similar a la plataforma .NET donde los lenguajes .NET como C# se traducen y compilan a c\u00f3digo nativo en tiempo de ejecuci\u00f3n (JIT = Just In Time) compilador. Es por eso que las aplicaciones .NET se ejecutan lentamente al principio, pero tienden a acelerarse m\u00e1s tarde porque se compilan en tiempo de ejecuci\u00f3n en c\u00f3digo nativo y se almacenan en cach\u00e9.<\/p>\n<p>Por supuesto, hay otras caracter\u00edsticas nuevas. El nuevo lenguaje [Hack] est\u00e1 basado en PHP. Sabemos que el lenguaje PHP es un lenguaje de tipos sueltos, lo que significa que no tiene que especificar un tipo (de hecho, no hay formas de hacerlo expl\u00edcitamente) para ninguna variable. Los tipos se utilizan cuando es necesario. El lenguaje Hack es un lenguaje de tipo gradual, lo que significa que la primera vez que define un tipo, no se puede cambiar el tipo. Esto ayuda a promover un c\u00f3digo robusto y mejora la eficiencia del desarrollo. Este es un tema bastante grande que deber\u00eda ser presentado en una publicaci\u00f3n separada.<\/p>\n<p>La instalaci\u00f3n de HHVM en Linux (en mi caso, Ubuntu) es bastante sencilla.<\/p>\n<pre><code>root@uploadbeta:\/var\/www\/helloacm.com\/htdocs\/hhvm# lsb_release -a\nNo LSB modules are available.\nDistributor ID: Ubuntu\nDescription: \u00a0 \u00a0Ubuntu 14.04.1 LTS\nRelease: \u00a0 \u00a0 \u00a0 \u00a014.04\nCodename: \u00a0 \u00a0 \u00a0 trusty<\/code><\/pre>\n<p>Puede descargar los binarios precompilados o el c\u00f3digo fuente y compilarlo localmente. Lo siguiente se instala desde un repositorio binario precompilado.<\/p>\n<pre><code>wget -O - <\/code><\/pre>\n<p>Luego puede ejecutar el siguiente comando para configurar el servidor apache o ngix.<\/p>\n<pre><code>\/usr\/share\/hhvm\/install_fastcgi.sh<\/code><\/pre>\n<p>De hecho, despu\u00e9s de instalar hhvm, puede usarlo en la l\u00ednea de comando para ejecutar el c\u00f3digo fuente de PHP, as\u00ed:<\/p>\n<pre><code>hhvm hello-world.php<\/code><\/pre>\n<p>Par\u00e1metros de la l\u00ednea de comandos de HHVM<\/p>\n<p>Podemos deshabilitar temporalmente el servidor Apache:<\/p>\n<pre><code>sudo service apache2 stop<\/code><\/pre>\n<p>Y ejecute el servidor hhvm, escuchando en el puerto 80 (por lo que debe detener otros servidores que escuchan en el mismo puerto):<\/p>\n<pre><code>hhvm -m server<\/code><\/pre>\n<p>Y luego puede probar el c\u00f3digo PHP en el navegador, que se pasa al servidor HHVM.<\/p>\n<p>Si experimenta un error <strong>404 no encontrado<\/strong> despu\u00e9s de la instalaci\u00f3n y configuraci\u00f3n, probablemente necesite agregar la siguiente l\u00ednea a <strong>\/etc\/hhvm\/server.ini<\/strong><\/p>\n<pre><code>hhvm.server.fix_path_info = true<\/code><\/pre>\n<p>Y reinicie hhvm usando <strong>sudo service hhvm restart<\/strong>.<\/p>\n<p>Prob\u00e9 y monitore\u00e9 el servidor por un tiempo y, para ser honesto, no vi ninguna diferencia, probablemente debido al tr\u00e1fico imperceptible. Sin embargo, los procesos enumerados por el comando <strong>htop<\/strong> cambiaron de <strong>apache2 -k start<\/strong> a <strong>hhvm<\/strong><\/p>\n<p>Tambi\u00e9n podemos crear un archivo PHP que tenga el siguiente contenido y probar si HHVM est\u00e1 funcionando en el navegador:<\/p>\n<pre><code>&lt;?php\n  echo  defined('HHVM_VERSION')?'Using HHVM':'Not using HHVM';\n?&gt;<\/code><\/pre>\n<p>Los sitios de wordpress se pueden ejecutar con HHVM, pero parece que HHVM no es compatible con la codificaci\u00f3n GB2312 (y quiz\u00e1s tambi\u00e9n con otros) porque se confunde con los caracteres. El c\u00f3digo PHP de la <a href=\"https:\/\/uploadbeta.com\/picture-gallery\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">galer\u00eda de fotos<\/a> mostraba una p\u00e1gina en blanco usando HHVM y todav\u00eda no he descubierto la causa.<\/p>\n<p>A\u00fan as\u00ed decid\u00ed deshacerme de HHVM, el paquete actual: Apache2 + PHP5.5 + Mysql funciona bastante bien. Tal vez traer\u00e9 HHVM de regreso en el futuro si el VPS experimenta un gran tr\u00e1fico nuevamente.<\/p>\n<pre><code>sudo service hhvm stop\nsudo apt-get remove hhvm<\/code><\/pre>\n<p>Necesitamos restaurar la configuraci\u00f3n de apache2 despu\u00e9s de la desinstalaci\u00f3n de HHVM.<\/p>\n<pre><code>sudo a2dismod proxy_fcgi\nsudo a2dismod proxy\nrm \/etc\/apache2\/mods-enable\/hhvm*.conf\nsudo service apache2 restart<\/code><\/pre>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fuente de grabaci\u00f3n:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/helloacm.com\" class=\"external external_icon\">helloacm.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u00bfC\u00f3mo configurar HHVM en Ubuntu VPS?<\/p>\n","protected":false},"author":1,"featured_media":224669,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[716,840,1063],"tags":[1172],"class_list":["post-232779","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-desarrollador","category-tutoriales","category-un-ordenador","tag-affiai-es"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/232779","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/comments?post=232779"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/232779\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media\/224669"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media?parent=232779"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/categories?post=232779"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/tags?post=232779"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}