{"id":232794,"date":"2023-01-28T17:33:00","date_gmt":"2023-01-28T14:33:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=232794"},"modified":"2022-11-10T17:48:08","modified_gmt":"2022-11-10T14:48:08","slug":"como-configurar-o-hhvm-no-ubuntu-vps","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pt-pt\/como-configurar-o-hhvm-no-ubuntu-vps\/","title":{"rendered":"Como configurar o HHVM no Ubuntu VPS?"},"content":{"rendered":"\n<p>Meu <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> inicial (Virtual Private Server) tinha apenas 512M de RAM, 1 n\u00facleo e 10G HDD. Mais 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\">atualizei<\/a> para 2 n\u00facleos, 1G RAM e 20G HDD devido a um incidente de falta de mem\u00f3ria. No entanto, h\u00e1 alguns dias, o tr\u00e1fego cresce (a maioria deles s\u00e3o 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> ), o VPS mal dava conta e por isso <a href=\"https:\/\/helloacm.com\/site-news-vps-upgraded-again-to-handle-large-traffic\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">atualizei novamente<\/a> para 3 n\u00facleos e 2 GB de RAM.<\/p>\n<p>A vers\u00e3o do PHP no VPS \u00e9 5.5 e, portanto, possui um acelerador embutido, <strong>OpCache<\/strong>, que armazena em cache o opcode do PHP. O Opcache \u00e9 introduzido para substituir o APC (Another PHP Cache), que \u00e9 um projeto de c\u00f3digo aberto usado principalmente para acelerar o c\u00f3digo PHP antes da vers\u00e3o 5.4.x ou vers\u00f5es anteriores. O <a href=\"https:\/\/hhvm.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">HHVM<\/a> funciona de maneira semelhante. Ele compila o c\u00f3digo PHP em assembly na primeira vez e, em seguida, o c\u00f3digo assembly, se encontrado e ainda v\u00e1lido, ser\u00e1 executado sem reinterpretar o mesmo c\u00f3digo PHP. Essa ideia \u00e9 muito parecida com a plataforma .NET onde as linguagens .NET como C# s\u00e3o traduzidas e compiladas para c\u00f3digo nativo em tempo de execu\u00e7\u00e3o (JIT = Just In Time) compilador. \u00c9 por isso que os aplicativos .NET s\u00e3o lentos no in\u00edcio, mas tendem a acelerar mais tarde porque s\u00e3o compilados em tempo de execu\u00e7\u00e3o para c\u00f3digo nativo e armazenados em cache.<\/p>\n<p>Claro, existem outras novidades. A nova linguagem [Hack] \u00e9 baseada em PHP. Sabemos que a linguagem PHP \u00e9 uma linguagem de tipo flex\u00edvel, o que significa que voc\u00ea n\u00e3o precisa especificar um tipo (na verdade, n\u00e3o h\u00e1 maneiras de fazer isso explicitamente) para nenhuma vari\u00e1vel. Os tipos s\u00e3o usados \u200b\u200bquando necess\u00e1rio. A linguagem Hack \u00e9 uma linguagem de tipo gradual, o que significa que na primeira vez que voc\u00ea define um tipo, o tipo n\u00e3o pode ser alterado. Isso ajuda a promover um c\u00f3digo robusto e melhora a efici\u00eancia do desenvolvimento. Este \u00e9 um grande t\u00f3pico que deve ser introduzido em um post separado.<\/p>\n<p>A instala\u00e7\u00e3o do HHVM no Linux (no meu caso, Ubuntu) \u00e9 bastante simples.<\/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>Voc\u00ea pode baixar os bin\u00e1rios pr\u00e9-compilados ou o c\u00f3digo-fonte e compil\u00e1-lo localmente. O seguinte \u00e9 instalado a partir de um reposit\u00f3rio bin\u00e1rio pr\u00e9-compilado.<\/p>\n<pre><code>wget -O - <\/code><\/pre>\n<p>Voc\u00ea ent\u00e3o pode executar o seguinte comando para configurar o servidor apache ou ngix.<\/p>\n<pre><code>\/usr\/share\/hhvm\/install_fastcgi.sh<\/code><\/pre>\n<p>Na verdade, depois de instalar o hhvm, voc\u00ea pode us\u00e1-lo na linha de comando para executar o c\u00f3digo-fonte do PHP, assim:<\/p>\n<pre><code>hhvm hello-world.php<\/code><\/pre>\n<p>Par\u00e2metros de linha de comando HHVM<\/p>\n<p>Podemos desativar temporariamente o servidor Apache:<\/p>\n<pre><code>sudo service apache2 stop<\/code><\/pre>\n<p>E execute o servidor hhvm, escutando na porta 80 (assim voc\u00ea tem que parar outros servidores que escutam na mesma porta):<\/p>\n<pre><code>hhvm -m server<\/code><\/pre>\n<p>E ent\u00e3o voc\u00ea pode testar o c\u00f3digo PHP no navegador, que \u00e9 passado para o servidor HHVM.<\/p>\n<p>Se ocorrer um erro <strong>404 n\u00e3o encontrado<\/strong> ap\u00f3s a instala\u00e7\u00e3o e configura\u00e7\u00e3o, voc\u00ea provavelmente precisar\u00e1 adicionar a seguinte linha ao <strong>\/etc\/hhvm\/server.ini<\/strong><\/p>\n<pre><code>hhvm.server.fix_path_info = true<\/code><\/pre>\n<p>E reinicie o hhvm usando <strong>sudo service hhvm restart<\/strong>.<\/p>\n<p>Eu testei e monitorei o servidor por um tempo e para ser honesto n\u00e3o vi nenhuma diferen\u00e7a provavelmente por causa do tr\u00e1fego impercept\u00edvel. No entanto, os processos listados pelo comando <strong>htop<\/strong> mudaram de <strong>apache2 -k start<\/strong> para <strong>hhvm<\/strong><\/p>\n<p>Tamb\u00e9m podemos criar um arquivo PHP que tenha o seguinte conte\u00fado e testar se o HHVM est\u00e1 funcionando no navegador:<\/p>\n<pre><code>&lt;?php\n  echo  defined('HHVM_VERSION')?'Using HHVM':'Not using HHVM';\n?&gt;<\/code><\/pre>\n<p>Os sites wordpress s\u00e3o execut\u00e1veis \u200b\u200busando HHVM, mas o HHVM parece n\u00e3o suportar a codifica\u00e7\u00e3o GB2312 (e talvez outros tamb\u00e9m) porque atrapalha os caracteres. O c\u00f3digo PHP da <a href=\"https:\/\/uploadbeta.com\/picture-gallery\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">galeria de fotos<\/a> mostrou uma p\u00e1gina em branco usando HHVM e ainda n\u00e3o descobri a causa.<\/p>\n<p>Ainda decidi me livrar do HHVM, o pacote atual: Apache2 + PHP5.5 + Mysql funciona muito bem. Talvez eu traga o HHVM de volta no futuro se o VPS experimentar um tr\u00e1fego enorme novamente.<\/p>\n<pre><code>sudo service hhvm stop\nsudo apt-get remove hhvm<\/code><\/pre>\n<p>Precisamos restaurar as configura\u00e7\u00f5es do apache2 ap\u00f3s a desinstala\u00e7\u00e3o do 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\">Fonte de grava\u00e7\u00e3o:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/helloacm.com\" class=\"external external_icon\">helloacm.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Como configurar o HHVM no 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":[722,846,1069],"tags":[1170],"class_list":["post-232794","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-desenvolvedor","category-tutoriais","category-um-computador","tag-affiai-pt-pt"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts\/232794","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/comments?post=232794"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts\/232794\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/media\/224669"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/media?parent=232794"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/categories?post=232794"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/tags?post=232794"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}