Як налаштувати HHVM на Ubuntu VPS?
Мій початковий VPS (віртуальний приватний сервер) мав лише 512 МБ оперативної пам’яті, 1 ядро та 10 ГБ жорсткого диска. Пізніше я перейшов на 2 ядра, 1 ГБ оперативної пам’яті та 20 ГБ жорсткого диска через інцидент із браком пам’яті. Однак кілька днів тому трафік зростає (більшість з них – від ботів ), VPS ледве справлявся, і тому я знову оновив до 3 ядер і 2 ГБ оперативної пам’яті.
Версія PHP у VPS становить 5.5, тому вона має вбудований прискорювач OpCache, який кешує код операції PHP. Opcache представлено на заміну APC (Another PHP Cache), який є проектом з відкритим вихідним кодом, який в основному використовується для прискорення PHP-коду до версії 5.4.x або попередніх версій. HHVM працює подібним чином . Він спочатку компілює PHP-код у збірку, а потім код збірки, якщо знайдений і все ще дійсний, буде виконано без повторної інтерпретації того самого PHP-коду. Ця ідея дуже схожа на платформу .NET, де мови .NET, такі як C#, перекладаються та компілюються у власний код під час виконання компілятора (JIT = Just In Time). Ось чому програми .NET спочатку працюють повільно, але, як правило, пришвидшуються пізніше, оскільки вони компілюються під час виконання до рідного коду та кешуються.
Звичайно, є й інші нові функції. Нова мова [Hack] базується на PHP. Ми знаємо, що мова PHP є мовою вільного типу, що означає, що вам не потрібно вказувати тип (насправді немає способів зробити це явно) для будь-яких змінних. Типи використовуються, коли це необхідно. Мова Hack — це мова поступового типу, що означає, що коли ви вперше визначаєте тип, його неможливо змінити. Це допомагає просувати надійний код і покращує ефективність розробки. Це досить велика тема, яку варто висвітлити окремою публікацією.
Встановлення HHVM на Linux (у моєму випадку Ubuntu) досить просте.
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
Ви можете завантажити попередньо скомпільовані двійкові файли або вихідний код і скомпілювати його локально. Нижче встановлюється з попередньо скомпільованого бінарного репозиторію.
wget -O -
Потім ви можете виконати таку команду, щоб налаштувати сервер apache або ngix.
/usr/share/hhvm/install_fastcgi.sh
Насправді, після встановлення hhvm ви можете використовувати його в командному рядку для виконання вихідного коду PHP, як це:
hhvm hello-world.php
Параметри командного рядка HHVM
Ми можемо тимчасово вимкнути сервер Apache:
sudo service apache2 stop
І запустіть сервер hhvm, прослуховуючи порт 80 (тому вам доведеться зупинити інші сервери, які слухають той самий порт):
hhvm -m server
Потім ви можете протестувати код PHP у браузері, який передається на сервер HHVM.
Якщо після інсталяції та конфігурації виникла помилка 404 не знайдено, ймовірно, потрібно додати такий рядок до /etc/hhvm/server.ini
hhvm.server.fix_path_info = true
І перезапустіть hhvm за допомогою служби sudo hhvm restart.
Я деякий час тестував і спостерігав за сервером і, чесно кажучи, не помітив жодної різниці, ймовірно, через непомітний трафік. Однак процеси, перелічені командою htop, змінилися з apache2 -k start на hhvm
Ми також можемо створити файл PHP із таким вмістом і перевірити, чи працює HHVM у браузері:
Сайти WordPress можна запускати за допомогою HHVM, але HHVM, здається, не підтримує кодування GB2312 (і, можливо, також інші), оскільки це зіпсує символи. PHP – код фотогалереї показував порожню сторінку за допомогою HHVM, і я досі не зрозумів причину.
Я все-таки вирішив позбутися HHVM, поточний пакет: Apache2 + PHP5.5 + Mysql працює досить добре. Можливо, я поверну HHVM у майбутньому, якщо VPS знову матиме величезний трафік.
sudo service hhvm stop
sudo apt-get remove hhvm
Нам потрібно відновити налаштування apache2 після видалення HHVM.
sudo a2dismod proxy_fcgi
sudo a2dismod proxy
rm /etc/apache2/mods-enable/hhvm*.conf
sudo service apache2 restart