{"id":232793,"date":"2023-01-28T17:50:00","date_gmt":"2023-01-28T14:50:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=232793"},"modified":"2022-11-10T17:47:47","modified_gmt":"2022-11-10T14:47:47","slug":"jak-skonfigurowac-hhvm-na-ubuntu-vps","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pl\/jak-skonfigurowac-hhvm-na-ubuntu-vps\/","title":{"rendered":"Jak skonfigurowa\u0107 HHVM na Ubuntu VPS?"},"content":{"rendered":"\n<p>M\u00f3j pocz\u0105tkowy <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) mia\u0142 tylko 512 MB pami\u0119ci RAM, 1 rdze\u0144 i 10 GB HDD. P\u00f3\u017aniej <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\">zaktualizowa\u0142em<\/a> do 2 rdzeni, 1G RAM i 20G HDD z powodu incydentu braku pami\u0119ci. Jednak kilka dni temu ruch ro\u015bnie (wi\u0119kszo\u015b\u0107 z nich pochodzi z <a href=\"https:\/\/helloacm.com\/how-to-ban-specified-ips-in-apache2-server\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">bot\u00f3w<\/a> ), VPS ledwo sobie radzi\u0142 i dlatego <a href=\"https:\/\/helloacm.com\/site-news-vps-upgraded-again-to-handle-large-traffic\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">ponownie uaktualni\u0142em<\/a> do 3 rdzeni i 2 GB RAM.<\/p>\n<p>Wersja PHP w VPS to 5.5 i dlatego ma wbudowany akcelerator <strong>OpCache<\/strong>, kt\u00f3ry buforuje kod PHP. Opcache zosta\u0142 wprowadzony w celu zast\u0105pienia APC (Another PHP Cache), kt\u00f3ry jest projektem open source, kt\u00f3ry jest u\u017cywany g\u0142\u00f3wnie do przyspieszenia kodu PHP przed wersj\u0105 5.4.x lub wcze\u015bniejsz\u0105. HHVM <a href=\"https:\/\/hhvm.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">dzia\u0142a<\/a> w podobny spos\u00f3b. Kompiluje kod PHP do asemblera za pierwszym razem, a nast\u0119pnie kod asemblera, je\u015bli zostanie znaleziony i nadal jest poprawny, zostanie wykonany bez ponownej interpretacji tego samego kodu PHP. Ten pomys\u0142 jest bardzo podobny do platformy .NET, gdzie j\u0119zyki .NET, takie jak C#, s\u0105 t\u0142umaczone i kompilowane do kodu natywnego w kompilatorze wykonawczym (JIT = Just In Time). Dlatego aplikacje .NET pocz\u0105tkowo dzia\u0142aj\u0105 wolno, ale p\u00f3\u017aniej maj\u0105 tendencj\u0119 do przyspieszania, poniewa\u017c s\u0105 kompilowane w czasie wykonywania do kodu natywnego i buforowane.<\/p>\n<p>Oczywi\u015bcie s\u0105 inne nowe funkcje. Nowy j\u0119zyk [Hack] jest oparty na PHP. Wiemy, \u017ce j\u0119zyk PHP jest j\u0119zykiem o lu\u017anych typach, co oznacza, \u017ce \u200b\u200bnie musisz okre\u015bla\u0107 typu (w rzeczywisto\u015bci nie ma mo\u017cliwo\u015bci, aby to zrobi\u0107 jawnie) dla \u017cadnych zmiennych. Typy s\u0105 u\u017cywane, gdy musz\u0105. J\u0119zyk hakowania jest stopniowym j\u0119zykiem tekstowym, co oznacza, \u017ce \u200b\u200bprzy pierwszym zdefiniowaniu typu nie mo\u017cna go zmieni\u0107. Pomaga to promowa\u0107 solidny kod i poprawia wydajno\u015b\u0107 programowania. To do\u015b\u0107 obszerny temat, kt\u00f3ry warto poruszy\u0107 w osobnym po\u015bcie.<\/p>\n<p>Instalacja HHVM na Linuksie (w moim przypadku Ubuntu) jest do\u015b\u0107 prosta.<\/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>Mo\u017cesz pobra\u0107 wst\u0119pnie skompilowane pliki binarne lub kod \u017ar\u00f3d\u0142owy i skompilowa\u0107 go lokalnie. Nast\u0119puj\u0105ce instalacje s\u0105 instalowane ze wst\u0119pnie skompilowanego repozytorium binarnego.<\/p>\n<pre><code>wget -O - <\/code><\/pre>\n<p>Nast\u0119pnie mo\u017cesz uruchomi\u0107 nast\u0119puj\u0105ce polecenie, aby skonfigurowa\u0107 serwer apache lub ngix.<\/p>\n<pre><code>\/usr\/share\/hhvm\/install_fastcgi.sh<\/code><\/pre>\n<p>W rzeczywisto\u015bci, po zainstalowaniu hhvm, mo\u017cesz u\u017cy\u0107 go w wierszu polece\u0144 do wykonania kodu \u017ar\u00f3d\u0142owego PHP, tak jak poni\u017cej:<\/p>\n<pre><code>hhvm hello-world.php<\/code><\/pre>\n<p>Parametry wiersza polece\u0144 HHVM<\/p>\n<p>Mo\u017cemy tymczasowo wy\u0142\u0105czy\u0107 serwer Apache:<\/p>\n<pre><code>sudo service apache2 stop<\/code><\/pre>\n<p>I uruchom serwer hhvm, nas\u0142uchuj\u0105c na porcie 80 (wi\u0119c musisz zatrzyma\u0107 inne serwery, kt\u00f3re nas\u0142uchuj\u0105 na tym samym porcie):<\/p>\n<pre><code>hhvm -m server<\/code><\/pre>\n<p>A potem mo\u017cesz przetestowa\u0107 kod PHP w przegl\u0105darce, kt\u00f3ry jest przekazywany do serwera HHVM.<\/p>\n<p>Je\u015bli po instalacji i konfiguracji wyst\u0105pi b\u0142\u0105d <strong>404 nie znaleziono<\/strong>, prawdopodobnie nale\u017cy doda\u0107 nast\u0119puj\u0105cy wiersz do <strong>pliku \/etc\/hhvm\/server.ini<\/strong><\/p>\n<pre><code>hhvm.server.fix_path_info = true<\/code><\/pre>\n<p>I uruchom ponownie hhvm za pomoc\u0105 <strong>us\u0142ugi sudo hhvm restart<\/strong>.<\/p>\n<p>Przez jaki\u015b czas testowa\u0142em i monitorowa\u0142em serwer i szczerze m\u00f3wi\u0105c nie zauwa\u017cy\u0142em \u017cadnej r\u00f3\u017cnicy prawdopodobnie z powodu niezauwa\u017calnego ruchu. Jednak procesy wymienione przez polecenie <strong>htop<\/strong> zmieni\u0142y si\u0119 z <strong>apache2 -k start<\/strong> na <strong>hhvm<\/strong><\/p>\n<p>Mo\u017cemy r\u00f3wnie\u017c stworzy\u0107 plik PHP, kt\u00f3ry ma nast\u0119puj\u0105c\u0105 zawarto\u015b\u0107 i sprawdzi\u0107, czy HHVM dzia\u0142a w przegl\u0105darce:<\/p>\n<pre><code>&lt;?php\n  echo  defined('HHVM_VERSION')?'Using HHVM':'Not using HHVM';\n?&gt;<\/code><\/pre>\n<p>Witryny wordpress mo\u017cna uruchomi\u0107 przy u\u017cyciu HHVM, ale HHVM wydaje si\u0119 nie obs\u0142ugiwa\u0107 kodowania GB2312 (i mo\u017ce tak\u017ce innych), poniewa\u017c miesza ze znakami. Kod PHP <a href=\"https:\/\/uploadbeta.com\/picture-gallery\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">galerii zdj\u0119\u0107<\/a> pokaza\u0142 pust\u0105 stron\u0119 przy u\u017cyciu HHVM, a ja nadal nie odkry\u0142em przyczyny.<\/p>\n<p>Nadal postanowi\u0142em pozby\u0107 si\u0119 HHVM, obecny pakiet: Apache2 + PHP5.5 + Mysql dzia\u0142a ca\u0142kiem dobrze. By\u0107 mo\u017ce w przysz\u0142o\u015bci przywr\u00f3c\u0119 HHVM, je\u015bli VPS ponownie do\u015bwiadczy du\u017cego ruchu.<\/p>\n<pre><code>sudo service hhvm stop\nsudo apt-get remove hhvm<\/code><\/pre>\n<p>Musimy przywr\u00f3ci\u0107 ustawienia Apache2 po odinstalowaniu 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\">\u0179r\u00f3d\u0142o nagrywania:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/helloacm.com\" class=\"external external_icon\">helloacm.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Jak skonfigurowa\u0107 HHVM na 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":[721,1068,845],"tags":[1169],"class_list":["post-232793","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-deweloper","category-komputer","category-samouczki","tag-affiai-pl"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/232793","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/comments?post=232793"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/232793\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media\/224669"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media?parent=232793"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/categories?post=232793"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/tags?post=232793"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}