{"id":232838,"date":"2023-01-28T17:17:00","date_gmt":"2023-01-28T14:17:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=232838"},"modified":"2022-11-10T18:00:06","modified_gmt":"2022-11-10T15:00:06","slug":"comment-configurer-hhvm-sur-le-vps-ubuntu","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fr\/comment-configurer-hhvm-sur-le-vps-ubuntu\/","title":{"rendered":"Comment configurer HHVM sur le VPS Ubuntu\u00a0?"},"content":{"rendered":"\n<p>Mon <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> (Virtual Private Server) initial n&rsquo;avait que 512 Mo de RAM, 1 c\u0153ur et 10 Go de disque dur. Plus tard, j&rsquo;ai <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\">mis<\/a> \u00e0 niveau vers 2 c\u0153urs, 1 Go de RAM et 20 Go de disque dur en raison d&rsquo;un incident de m\u00e9moire insuffisante. Cependant, il y a quelques jours, le trafic augmente (la plupart d&rsquo;entre eux proviennent 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> ), le VPS pouvait \u00e0 peine g\u00e9rer et c&rsquo;est pourquoi j&rsquo;ai de <a href=\"https:\/\/helloacm.com\/site-news-vps-upgraded-again-to-handle-large-traffic\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">nouveau mis \u00e0 niveau<\/a> vers 3 c\u0153urs et 2 Go de RAM.<\/p>\n<p>La version PHP chez VPS est 5.5 et dispose donc d&rsquo;un acc\u00e9l\u00e9rateur int\u00e9gr\u00e9, <strong>OpCache<\/strong>, qui met en cache l&rsquo;opcode PHP. L&rsquo;Opcache est introduit pour remplacer APC (Another PHP Cache), qui est un projet open source principalement utilis\u00e9 pour acc\u00e9l\u00e9rer le code PHP avant la version 5.4.x ou les versions ant\u00e9rieures. Le <a href=\"https:\/\/hhvm.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">HHVM<\/a> fonctionne de mani\u00e8re similaire. Il compile le code PHP en assembleur dans un premier temps, puis le code assembleur s&rsquo;il est trouv\u00e9 et toujours valide sera ex\u00e9cut\u00e9 sans r\u00e9interpr\u00e9ter le m\u00eame code PHP. Cette id\u00e9e est tr\u00e8s similaire \u00e0 la plate-forme .NET o\u00f9 les langages .NET tels que C # sont traduits et compil\u00e9s en code natif au moment de l&rsquo;ex\u00e9cution (JIT = Just In Time) du compilateur. C&rsquo;est pourquoi les applications .NET s&rsquo;ex\u00e9cutent lentement au d\u00e9but, mais ont tendance \u00e0 s&rsquo;acc\u00e9l\u00e9rer plus tard, car elles sont compil\u00e9es au moment de l&rsquo;ex\u00e9cution en code natif et mises en cache.<\/p>\n<p>Bien s\u00fbr, il y a d&rsquo;autres nouvelles fonctionnalit\u00e9s. Le nouveau langage [Hack] est bas\u00e9 sur PHP. Nous savons que le langage PHP est un langage de type l\u00e2che, ce qui signifie que vous n&rsquo;avez pas \u00e0 sp\u00e9cifier de type (en fait, il n&rsquo;y a aucun moyen de le faire explicitement) pour les variables. Les types sont utilis\u00e9s quand ils en ont besoin. Le langage Hack est un langage de type progressif, ce qui signifie que la premi\u00e8re fois que vous d\u00e9finissez un type, le type ne peut pas \u00eatre modifi\u00e9. Cela aide \u00e0 promouvoir un code robuste et am\u00e9liore l&rsquo;efficacit\u00e9 du d\u00e9veloppement. C&rsquo;est un sujet assez important qui devrait \u00eatre pr\u00e9sent\u00e9 dans un article s\u00e9par\u00e9.<\/p>\n<p>L&rsquo;installation de HHVM sur Linux (dans mon cas, Ubuntu) est assez simple.<\/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>Vous pouvez soit t\u00e9l\u00e9charger les binaires pr\u00e9-compil\u00e9s, soit le code source et le compiler localement. Les installations suivantes s&rsquo;installent \u00e0 partir d&rsquo;un r\u00e9f\u00e9rentiel binaire pr\u00e9compil\u00e9.<\/p>\n<pre><code>wget -O - <\/code><\/pre>\n<p>Vous pouvez ensuite ex\u00e9cuter la commande suivante pour configurer le serveur apache ou ngix.<\/p>\n<pre><code>\/usr\/share\/hhvm\/install_fastcgi.sh<\/code><\/pre>\n<p>En fait, apr\u00e8s avoir install\u00e9 hhvm, vous pouvez l&rsquo;utiliser en ligne de commande pour ex\u00e9cuter le code source PHP, comme ceci :<\/p>\n<pre><code>hhvm hello-world.php<\/code><\/pre>\n<p>Param\u00e8tres de ligne de commande HHVM<\/p>\n<p>Nous pouvons d\u00e9sactiver temporairement le serveur Apache\u00a0:<\/p>\n<pre><code>sudo service apache2 stop<\/code><\/pre>\n<p>Et lancer le serveur hhvm, en \u00e9coutant sur le port 80 (il faut donc arr\u00eater les autres serveurs qui \u00e9coutent le m\u00eame port) :<\/p>\n<pre><code>hhvm -m server<\/code><\/pre>\n<p>Et puis vous pouvez tester le code PHP dans le navigateur, qui est transmis au serveur HHVM.<\/p>\n<p>Si vous rencontrez une erreur <strong>404 introuvable<\/strong> apr\u00e8s l&rsquo;installation et la configuration, vous devrez probablement ajouter la ligne suivante \u00e0 <strong>\/etc\/hhvm\/server.ini<\/strong><\/p>\n<pre><code>hhvm.server.fix_path_info = true<\/code><\/pre>\n<p>Et red\u00e9marrez hhvm en utilisant <strong>sudo service hhvm restart<\/strong>.<\/p>\n<p>J&rsquo;ai test\u00e9 et surveill\u00e9 le serveur pendant un petit moment et pour \u00eatre honn\u00eate, je n&rsquo;ai vu aucune diff\u00e9rence, probablement \u00e0 cause du trafic imperceptible. Cependant, les processus r\u00e9pertori\u00e9s par la commande <strong>htop sont<\/strong> pass\u00e9s de <strong>apache2 -k start<\/strong> \u00e0 <strong>hhvm<\/strong><\/p>\n<p>Nous pouvons \u00e9galement cr\u00e9er un fichier PHP avec le contenu suivant et tester si HHVM fonctionne dans le navigateur\u00a0:<\/p>\n<pre><code>&lt;?php\n  echo  defined('HHVM_VERSION')?'Using HHVM':'Not using HHVM';\n?&gt;<\/code><\/pre>\n<p>Les sites wordpress sont ex\u00e9cutables \u00e0 l&rsquo;aide de HHVM, mais HHVM ne semble pas prendre en charge l&rsquo;encodage GB2312 (et peut-\u00eatre d&rsquo;autres aussi) car il g\u00e2che les caract\u00e8res. Le code PHP de la <a href=\"https:\/\/uploadbeta.com\/picture-gallery\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">galerie de photos<\/a> a montr\u00e9 une page vierge en utilisant HHVM et je n&rsquo;ai toujours pas compris la cause.<\/p>\n<p>J&rsquo;ai quand m\u00eame d\u00e9cid\u00e9 de me d\u00e9barrasser de HHVM, le package actuel: Apache2 + PHP5.5 + Mysql fonctionne plut\u00f4t bien. Peut-\u00eatre que je ram\u00e8nerai HHVM \u00e0 l&rsquo;avenir si le VPS conna\u00eet \u00e0 nouveau un trafic \u00e9norme.<\/p>\n<pre><code>sudo service hhvm stop\nsudo apt-get remove hhvm<\/code><\/pre>\n<p>Nous devons restaurer les param\u00e8tres apache2 apr\u00e8s la d\u00e9sinstallation 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\">Source d&rsquo;enregistrement:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/helloacm.com\" class=\"external external_icon\">helloacm.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Comment configurer HHVM sur le VPS Ubuntu\u00a0?<\/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":[717,841,1064],"tags":[1167],"class_list":["post-232838","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-developpeur","category-tutoriels","category-un-ordinateur","tag-affiai-fr"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/232838","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/comments?post=232838"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/232838\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media\/224669"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media?parent=232838"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/categories?post=232838"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/tags?post=232838"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}