{"id":232835,"date":"2023-01-28T17:35:00","date_gmt":"2023-01-28T14:35:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=232835"},"modified":"2022-11-10T17:59:29","modified_gmt":"2022-11-10T14:59:29","slug":"come-configurare-hhvm-su-ubuntu-vps","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/it\/come-configurare-hhvm-su-ubuntu-vps\/","title":{"rendered":"Come configurare HHVM su Ubuntu VPS?"},"content":{"rendered":"\n<p>Il mio <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> iniziale (Virtual Private Server) aveva solo 512M RAM, 1 core e 10G HDD. Successivamente ho <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\">aggiornato<\/a> a 2 core, 1G RAM e 20G HDD a causa di un incidente di memoria insufficiente. Tuttavia, pochi giorni fa, il traffico cresce (la maggior parte di questi proviene da <a href=\"https:\/\/helloacm.com\/how-to-ban-specified-ips-in-apache2-server\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">bot<\/a> ), il VPS riusciva a malapena a gestire ed \u00e8 per questo che ho <a href=\"https:\/\/helloacm.com\/site-news-vps-upgraded-again-to-handle-large-traffic\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">aggiornato di nuovo<\/a> a 3 core e 2 GB di RAM.<\/p>\n<p>La versione PHP su VPS \u00e8 5.5 e quindi ha un acceleratore integrato, <strong>OpCache<\/strong> che memorizza nella cache il codice operativo PHP. L&#8217;Opcache \u00e8 stato introdotto per sostituire APC (Another PHP Cache), che \u00e8 un progetto open source utilizzato principalmente per velocizzare il codice PHP prima della versione 5.4.xo versioni precedenti. L&#8217; <a href=\"https:\/\/hhvm.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">HHVM<\/a> funziona in modo simile. Compila il codice PHP in assembly la prima volta e quindi il codice assembly se trovato e ancora valido verr\u00e0 eseguito senza reinterpretare lo stesso codice PHP. Questa idea \u00e8 molto simile alla piattaforma .NET in cui i linguaggi .NET come C# vengono tradotti e compilati in codice nativo al compilatore runtime (JIT = Just In Time). Questo \u00e8 il motivo per cui le applicazioni .NET all&#8217;inizio funzionano lentamente, ma tendono a velocizzarsi in seguito perch\u00e9 vengono compilate in fase di esecuzione in codice nativo e memorizzate nella cache.<\/p>\n<p>Naturalmente, ci sono altre nuove funzionalit\u00e0. Il nuovo linguaggio [Hack] \u00e8 basato su PHP. Sappiamo che il linguaggio PHP \u00e8 un linguaggio di tipo generico, il che significa che non \u00e8 necessario specificare un tipo (in effetti non ci sono modi per farlo esplicitamente) per nessuna variabile. I tipi vengono utilizzati quando \u00e8 necessario. Il linguaggio Hack \u00e8 un linguaggio di tipo graduale, il che significa che la prima volta che si definisce un tipo e il tipo non pu\u00f2 essere modificato. Questo aiuta a promuovere un codice solido e migliora l&#8217;efficienza dello sviluppo. Questo \u00e8 piuttosto un argomento importante che dovrebbe essere introdotto in un post separato.<\/p>\n<p>L&#8217;installazione di HHVM su Linux (nel mio caso, Ubuntu) \u00e8 piuttosto semplice.<\/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>Puoi scaricare i binari precompilati o il codice sorgente e compilarlo localmente. Quanto segue viene installato da un repository binario precompilato.<\/p>\n<pre><code>wget -O - <\/code><\/pre>\n<p>\u00c8 quindi possibile eseguire il comando seguente per configurare il server apache o ngix.<\/p>\n<pre><code>\/usr\/share\/hhvm\/install_fastcgi.sh<\/code><\/pre>\n<p>Infatti, dopo aver installato hhvm, puoi usarlo dalla riga di comando per eseguire il codice sorgente PHP, in questo modo:<\/p>\n<pre><code>hhvm hello-world.php<\/code><\/pre>\n<p>Parametri della riga di comando HHVM<\/p>\n<p>Possiamo disabilitare temporaneamente il server Apache:<\/p>\n<pre><code>sudo service apache2 stop<\/code><\/pre>\n<p>Ed esegui il server hhvm, ascoltando sulla porta 80 (quindi devi fermare altri server che ascoltano la stessa porta):<\/p>\n<pre><code>hhvm -m server<\/code><\/pre>\n<p>E poi puoi testare il codice PHP nel browser, che viene passato al server HHVM.<\/p>\n<p>Se si verifica un errore <strong>404 non trovato<\/strong> dopo l&#8217;installazione e la configurazione, probabilmente \u00e8 necessario aggiungere la seguente riga a <strong>\/etc\/hhvm\/server.ini<\/strong><\/p>\n<pre><code>hhvm.server.fix_path_info = true<\/code><\/pre>\n<p>E riavvia hhvm usando <strong>sudo service hhvm restart<\/strong>.<\/p>\n<p>Ho testato e monitorato il server per un po&#8217; di tempo e ad essere sincero non ho visto alcuna differenza probabilmente a causa del traffico impercettibile. Tuttavia, i processi elencati dal comando <strong>htop sono<\/strong> cambiati da <strong>apache2 -k start<\/strong> a <strong>hhvm<\/strong><\/p>\n<p>Possiamo anche creare un file PHP con il seguente contenuto e verificare se HHVM funziona nel browser:<\/p>\n<pre><code>&lt;?php\n  echo  defined('HHVM_VERSION')?'Using HHVM':'Not using HHVM';\n?&gt;<\/code><\/pre>\n<p>I siti wordpress sono eseguibili utilizzando HHVM ma HHVM sembra non supportare la codifica GB2312 (e forse anche altri) perch\u00e9 incasina i caratteri. Il codice PHP della <a href=\"https:\/\/uploadbeta.com\/picture-gallery\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">galleria fotografica<\/a> mostrava una pagina vuota utilizzando HHVM e non ho ancora capito la causa.<\/p>\n<p>Ho comunque deciso di sbarazzarmi di HHVM, il pacchetto attuale: Apache2 + PHP5.5 + Mysql funziona abbastanza bene. Forse riporter\u00f2 HHVM in futuro se il VPS riscontrer\u00e0 di nuovo un traffico enorme.<\/p>\n<pre><code>sudo service hhvm stop\nsudo apt-get remove hhvm<\/code><\/pre>\n<p>Abbiamo bisogno di ripristinare le impostazioni di apache2 dopo la disinstallazione di 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 di registrazione:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/helloacm.com\" class=\"external external_icon\">helloacm.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Come configurare HHVM su 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":[720,844,1067],"tags":[1168],"class_list":["post-232835","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-sviluppatore","category-tutorial","category-un-computer","tag-affiai-it"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/232835","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/comments?post=232835"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/232835\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media\/224669"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media?parent=232835"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/categories?post=232835"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/tags?post=232835"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}