Mój początkowy VPS (Virtual Private Server) miał tylko 512 MB pamięci RAM, 1 rdzeń i 10 GB HDD. Później zaktualizowałem do 2 rdzeni, 1G RAM i 20G HDD z powodu incydentu braku pamięci. Jednak kilka dni temu ruch rośnie (większość z nich pochodzi z botów ), VPS ledwo sobie radził i dlatego ponownie uaktualniłem do 3 rdzeni i 2 GB RAM.
Wersja PHP w VPS to 5.5 i dlatego ma wbudowany akcelerator OpCache, który buforuje kod PHP. Opcache został wprowadzony w celu zastąpienia APC (Another PHP Cache), który jest projektem open source, który jest używany głównie do przyspieszenia kodu PHP przed wersją 5.4.x lub wcześniejszą. HHVM działa w podobny sposób. Kompiluje kod PHP do asemblera za pierwszym razem, a następnie kod asemblera, jeśli zostanie znaleziony i nadal jest poprawny, zostanie wykonany bez ponownej interpretacji tego samego kodu PHP. Ten pomysł jest bardzo podobny do platformy .NET, gdzie języki .NET, takie jak C#, są tłumaczone i kompilowane do kodu natywnego w kompilatorze wykonawczym (JIT = Just In Time). Dlatego aplikacje .NET początkowo działają wolno, ale później mają tendencję do przyspieszania, ponieważ są kompilowane w czasie wykonywania do kodu natywnego i buforowane.
Oczywiście są inne nowe funkcje. Nowy język [Hack] jest oparty na PHP. Wiemy, że język PHP jest językiem o luźnych typach, co oznacza, że nie musisz określać typu (w rzeczywistości nie ma możliwości, aby to zrobić jawnie) dla żadnych zmiennych. Typy są używane, gdy muszą. Język hakowania jest stopniowym językiem tekstowym, co oznacza, że przy pierwszym zdefiniowaniu typu nie można go zmienić. Pomaga to promować solidny kod i poprawia wydajność programowania. To dość obszerny temat, który warto poruszyć w osobnym poście.
Instalacja HHVM na Linuksie (w moim przypadku Ubuntu) jest dość prosta.
root@uploadbeta:/var/www/helloacm.com/htdocs/hhvm# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 14.04.1 LTS
Release: 14.04
Codename: trusty
Możesz pobrać wstępnie skompilowane pliki binarne lub kod źródłowy i skompilować go lokalnie. Następujące instalacje są instalowane ze wstępnie skompilowanego repozytorium binarnego.
wget -O -
Następnie możesz uruchomić następujące polecenie, aby skonfigurować serwer apache lub ngix.
/usr/share/hhvm/install_fastcgi.sh
W rzeczywistości, po zainstalowaniu hhvm, możesz użyć go w wierszu poleceń do wykonania kodu źródłowego PHP, tak jak poniżej:
hhvm hello-world.php
Parametry wiersza poleceń HHVM
Możemy tymczasowo wyłączyć serwer Apache:
sudo service apache2 stop
I uruchom serwer hhvm, nasłuchując na porcie 80 (więc musisz zatrzymać inne serwery, które nasłuchują na tym samym porcie):
hhvm -m server
A potem możesz przetestować kod PHP w przeglądarce, który jest przekazywany do serwera HHVM.
Jeśli po instalacji i konfiguracji wystąpi błąd 404 nie znaleziono, prawdopodobnie należy dodać następujący wiersz do pliku /etc/hhvm/server.ini
hhvm.server.fix_path_info = true
I uruchom ponownie hhvm za pomocą usługi sudo hhvm restart.
Przez jakiś czas testowałem i monitorowałem serwer i szczerze mówiąc nie zauważyłem żadnej różnicy prawdopodobnie z powodu niezauważalnego ruchu. Jednak procesy wymienione przez polecenie htop zmieniły się z apache2 -k start na hhvm
Możemy również stworzyć plik PHP, który ma następującą zawartość i sprawdzić, czy HHVM działa w przeglądarce:
Witryny wordpress można uruchomić przy użyciu HHVM, ale HHVM wydaje się nie obsługiwać kodowania GB2312 (i może także innych), ponieważ miesza ze znakami. Kod PHP galerii zdjęć pokazał pustą stronę przy użyciu HHVM, a ja nadal nie odkryłem przyczyny.
Nadal postanowiłem pozbyć się HHVM, obecny pakiet: Apache2 + PHP5.5 + Mysql działa całkiem dobrze. Być może w przyszłości przywrócę HHVM, jeśli VPS ponownie doświadczy dużego ruchu.
sudo service hhvm stop
sudo apt-get remove hhvm
Musimy przywrócić ustawienia Apache2 po odinstalowaniu HHVM.
sudo a2dismod proxy_fcgi
sudo a2dismod proxy
rm /etc/apache2/mods-enable/hhvm*.conf
sudo service apache2 restart