Установка HHVM на сервер Ubuntu 13.10

Published by Leave your thoughts

Данное руководство покажет, как установить 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 может обслуживать гораздо больше запросов, используя гораздо меньше ресурсов.

Tags: , , , , ,

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *


*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>