Данное руководство покажет, как установить HHVM (HipHop Virtual Machine) на виртуальный выделенный сервер Ubuntu 13.10, а также продемонстрирует некоторые функции HHVM.
Требования
Единственным требованием для выполнения этого руководства является предварительно настроенный сервер Ubuntu 13.10 с 64-битной архитектурой. Имейте в виду: HHVM не поддерживает 32-битную архитектуру.
Также рекомендуется иметь SSH-доступ к серверу и доступ к консоли.
Что такое HHVM?
HHVM (или HipHop Virtual Machine) – это открытая виртуальная машина, разработанная компанией Facebook для поддержки и выполнения программ и скриптов, написанных в PHP. Необходимость в разработке HHVM возникла потому, что стандартная связка Zend+Apache оказалась не достаточно продуктивной в обработке объёмных приложений, написанных в PHP.
Как говорится на сайте проекта, по сравнению со связкой Zend PHP+APC, производительность HHVM больше в 9 раз, при этом она потребляет в 5 раз меньше памяти.
Установка HHVM
Процесс установки HHVM довольно прост и не займёт много времени. Для этого выполните следующие команды:
wget -O - http://dl.hhvm.com/conf/hhvm.gpg.key | apt-key add -
echo deb http://dl.hhvm.com/ubuntu saucy main | tee /etc/apt/sources.list.d/hhvm.list
apt-get update
apt-get install hhvm
Чтобы убедиться, что установка HHVM прошла успешно, введите команду:
hhvm --help
Эта команда выведет сведения об использовании команды hhvm в командной строке.
Создание тестового скрипта
Теперь попробуйте создать в PHP простой образец скрипта, который будет возвращать фразу «Hello World».
Введите в командную строку:
cat > hello_world.php
Эта команда создаст файл по имени hello_world.php и предоставит вам доступ его содержимому. Вставьте в него следующий код, а затем нажмите Ctrl + D, чтобы сохранить файл.
<?php
echo "\nHello World\n\n";
Примечание: Для редактирования файлов рекомендуется использовать nano или vim.
Создав этот файл, выполните его с помощью hhvm:
hhvm hello_world.php
Протестируйте скрипт при помощи PHP и сервера HHVM, который доступен в браузере.
Сначала нужно создать каталог (в руководстве он будет называться public), который будет служить в качестве общедоступного каталога и хранить файл PHP.
Примечание: Конечно, такой каталог может называться как угодно и находиться в любой точке системы. Имя public используется в руководстве для простоты.
Чтобы создать каталог и открыть его, введите:
mkdir public
cd public
Затем введите в командную строку:
cat > hello.php
Эта команда создаст в каталоге public файл hello.php и предоставит вам доступ к содержимому этого файла. Вставьте в него следующий код:
<?php
echo '<h1>Hello World</h1>';
После этого используйте команду hhvm, чтобы запустить сервер.
hhvm -m server
Эта команда запустит сервер на порт 80, после чего файл hello.php будет доступен в браузере. Если, к примеру, IP-адрес сервера – 123.123.123.1, то файл будет доступен по ссылке:
http://123.123.123.1/hello.php
Примечание: Замените условный адрес своим IP-адресом.
В браузере появится страница с сообщением:
Hello World
Портирование PHP-приложений на HHVM
Чтобы HHVM могла обслуживать приложения PHP вместо Zend+Apache на порте 80, нужно остановить сервис Apache.
service apache2 stop
Теперь порт 80 свободен, и HHVM может использовать его для обслуживания приложений.
Затем нужно запустить сервер HHVM в root-каталоге приложения PHP. Как правило, это каталог /var/www. Перейдите в этот каталог:
cd /var/www
Затем запустите:
hhvm -m server
Эта команда запустит сервер HHVM, который будет обслуживать приложения PHP из текущего каталога.
HHVM в режиме FastCGI
Начиная с версии 3.0, HHVM не используется в режиме сервера. Этот раздел руководства поможет настроить HHVM в режиме FastCGI с сервером Apache или Nginx на ваш выбор.
Для Apache
Настроить HHVM в режиме FastCGI с сервером Apache очень просто. Для этого достаточно выполнить следующий скрипт:
/usr/share/hhvm/install_fastcgi.sh
Этот скрипт автоматически настроит Apache для поддержки HHVM и обработки кода PHP, а также перезапустит сервер Apache, чтобы обновить настройки.
Для Nginx
При использовании Nginx и PHP-FPM нужно отредактировать конфигурационный файл и отключить PHP-FPM. Как правило, этот файл находится в /etc/nginx/sites-available/default.
Найдите в файле следующий раздел и закомментируйте его:
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# fastcgi_split_path_info ^(.+\.php)(/.+)$;
# # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
#
# # With php5-cgi alone:
# fastcgi_pass 127.0.0.1:9000;
# # With php5-fpm:
# fastcgi_pass unix:/var/run/php5-fpm.sock;
# fastcgi_index index.php;
# include fastcgi_params;
#}
Затем выполните следующий скрипт:
/usr/share/hhvm/install_fastcgi.sh
Этот скрипт автоматически настроит Nginx для поддержки HHVM и обработки кода PHP, а также перезапустит сервер Nginx, чтобы обновить настройки.
Тестирование настройки Apache/Nginx
Теперь нужно убедиться, что выбранный вами веб-сервер поддерживает HHVM и позволяет обрабатывать код PHP.
Для этого создайте тестовый файл PHP по имени info.php и поместите его в общедоступный каталог сервера (как правило, это /var/www на Apache или /usr/share/nginx/html на Nginx). Вставьте в файл следующий код:
<?php
echo defined('HHVM_VERSION')?'Using HHVM':'Not using HHVM';
Затем попробуйте открыть файл в браузере. На экране должно появиться следующее сообщение:
Using HHVM
Важно! В HHVM включено большое количество популярных расширений PHP, что позволяет легко портировать большое количество приложений. Тем не менее, если приложение использует расширение PHP, которое не входит в HHVM, HHVM может повредить приложение. Полный список расширений PHP, включенных в HHVM, можно найти по этой ссылке.
Заключение
Теперь сервер может использовать HHVM для обслуживания сайтов, основанных на PHP. Будучи продуктивнее стандартной связки Zend PHP+APC, HHVM может обслуживать гораздо больше запросов, используя гораздо меньше ресурсов.