Установка HHVM, Nginx, MariaDB и WordPress на Debian 8
Важно: в примерах используется IP 192.168.1.100 — замените его на IP вашего сервера во всех командах и URL.
Краткое введение
HHVM (Hip Hop Virtual Machine) — это JIT-компилятор, созданный в Facebook для выполнения приложений на PHP и Hack. HHVM работает иначе, чем традиционный интерпретатор Zend и может обеспечивать значительное ускорение работы PHP-приложений в ряде сценариев. В этой инструкции мы установим Nginx как веб-сервер, MariaDB как СУБД, HHVM как замену PHP-интерпретатора и WordPress как CMS на Debian 8 (Jessie).
Определение: JIT (just-in-time) — компиляция части кода во время выполнения для повышения производительности.
Содержание
- Требования и подготовка
- Установка Nginx
- Установка и настройка MariaDB
- Установка и настройка HHVM
- Установка WordPress
- Тестирование и приёмка
- Безопасность и жёсткая настройка
- Отладка и сценарии восстановления
- Контрольный список для ролей
- Критерии приёмки
- Полезные советы по совместимости
- Короткое резюме
1 Требования и подготовка
- Минимальная установка Debian 8 (64-бит).
- Пользователь с правами sudo или root.
- Пример IP сервера: 192.168.1.100 — замените на свой.
- Проверка времени и DNS: убедитесь, что сервер имеет корректные системные часы и доступ в интернет для загрузки пакетов.
Совет: перед началом сделайте снимок (snapshot) виртуальной машины или резервную копию конфигураций.
2 Установка Nginx
Пакет Nginx доступен в стандартном репозитории Debian. Установите Nginx вместе с unzip:
apt-get update
apt-get install nginx unzipЗапустите Nginx и проверьте статус:
systemctl start nginx
systemctl status nginxОткройте в браузере http://192.168.1.100/ и убедитесь, что вы видите стартовую страницу Nginx.

Alt для изображения выше: Стартовая страница Nginx по умолчанию, отображаемая в браузере.
3 Установка и настройка MariaDB
MariaDB — свободный форк MySQL с расширениями и оптимизациями. Установите клиент и сервер:
apt-get install mariadb-client mariadb-serverЗапустите сервис:
systemctl start mysqlАвторизуйтесь в MariaDB под root (будет запрошен пароль, если он установлен):
mysql -u root -p
TYPE YOUR PASSWORDСоздайте базу данных и пользователя для WordPress. Замените пароль на надёжный пароль:
create database wordpressdb;
create user wpuser@localhost identified by 'wpuser@';
grant all privileges on wordpressdb.* to wpuser@localhost identified by 'wpuser@';
flush privileges;
\q
Alt для изображения выше: Консоль MariaDB с командами создания базы данных и пользователя WordPress.
Примечание: в продуктивной среде используйте более тонкие привилегии и ограничение по хосту вместо ‘localhost’, если требуется удалённый доступ.
4 Установка и настройка HHVM
Добавьте репозиторий HHVM и установите пакет. Команды приведены для Debian Jessie:
wget -O - http://dl.hhvm.com/conf/hhvm.gpg.key | apt-key add -
echo deb http://dl.hhvm.com/debian jessie main | tee /etc/apt/sources.list.d/hhvm.list
apt-get update
apt-get install hhvmСкрипт быстрого подключения HHVM к FastCGI/Nginx:
/usr/share/hhvm/install_fastcgi.shНастройте автозапуск HHVM при старте системы:
update-rc.d hhvm defaultsСделайте HHVM альтернативой для /usr/bin/php (если хотите использовать hhvm на командной строке):
/usr/bin/update-alternatives --install /usr/bin/php php /usr/bin/hhvm 60Запустите сервис:
systemctl start hhvm
systemctl status hhvmПроверка работы HHVM в вебе и на shell. Создайте файл info.php:
cd /var/www/html/
nano info.phpВставьте:
Откройте http://192.168.1.100/info.php — если на странице отображается слово HipHop, HHVM обрабатывает PHP через Nginx.
Проверьте из консоли:
php info.php
php -vПервой командой вы должны увидеть вывод ‘HipHop’, второй — версию HHVM.
Удалите тестовый файл:
rm /var/www/html/info.phpСовет: если в вашем окружении установлены модули PHP, знайте, что HHVM не поддерживает все расширения Zend; проверьте совместимость используемых расширений и плагинов.
5 Установка WordPress
Скачайте и распакуйте WordPress в корень веб-документов:
cd /var/www/html/
wget wordpress.org/latest.zip
unzip latest.zipПереместите содержимое каталога wordpress в корень и удалите временную папку:
cd /var/www/html/
mv wordpress/* .
rm -rf wordpress/Установите владельца файлов в www-data:
find . -type d -exec chown www-data:www-data {} \;
find . -type f -exec chown www-data:www-data {} \;Переименуйте файл конфигурации WordPress и внесите настройки базы данных:
mv wp-config-sample.php wp-config.php
nano wp-config.phpВнутри wp-config.php укажите:
DB_NAME = wordpressdb
DB_USER = wpuser
DB_PASSWORD = wpuser@
Alt для изображения выше: Пример настроек wp-config.php с именем базы данных и учётными данными.
Измените конфигурацию Nginx, чтобы index.php был первым индексным файлом. Откройте файл виртуального хоста:
rm -f index.nginx.html
nano /etc/nginx/sites-available/defaultУбедитесь, что в директиве index первым указан index.php. Перезапустите Nginx:
systemctl restart nginxОткройте http://192.168.1.100/ — вы должны быть перенаправлены в инсталлятор WordPress. Следуйте инструкциям: выберите язык, задайте учётную запись администратора и почту.

Alt для изображения выше: Экран выбора языка в установщике WordPress.

Alt для изображения выше: Форма ввода имени администратора, пароля и электронной почты при установке WordPress.
После установки посетите /wp-login.php для входа в панель администратора.

Alt для изображения выше: Подтверждение успешной установки WordPress.

Alt для изображения выше: Экран входа администратора WordPress.
6 Проверка работоспособности и приёмка
Базовые тесты, которые нужно пройти перед передачей системы в эксплуатацию:
- Открытие главной страницы: http://192.168.1.100/
- Вход в админку: http://192.168.1.100/wp-login.php
- Тест обработки PHP через HHVM: php -v показывает HHVM
- Запросы к базе данных из WordPress успешны (установка прошла без ошибок)
Критерии приёмки
- WordPress полностью установился и доступен по HTTP
- HHVM обрабатывает PHP-запросы от Nginx
- MariaDB отвечает на запросы приложения
- Права на файлы установлены на www-data
7 Безопасность и жёсткая настройка
Рекомендуемые шаги для повышения безопасности:
- Закройте доступ к MariaDB извне, если он не нужен: убедитесь, что bind-address в /etc/mysql/my.cnf настроен на 127.0.0.1 или используйте брандмауэр.
- Отключите ненужные службы и порты (ufw/iptables).
- Ограничьте доступ к /wp-admin по IP или включите двухфакторную аутентификацию для администратора.
- Регулярно обновляйте пакеты и плагины WordPress.
- Настройте резервное копирование базы данных и файлов.
- Ограничьте права на wp-config.php (например, 640 с владельцем www-data).
Пример команды для ограничения прав:
chown root:www-data /var/www/html/wp-config.php
chmod 640 /var/www/html/wp-config.php8 Отладка и сценарии восстановления
Типичные проблемы и шаги проверки:
- Nginx не отвечает: проверьте systemctl status nginx и /var/log/nginx/error.log
- HHVM не запускается: проверьте systemctl status hhvm и /var/log/hhvm/error.log
- PHP-страницы скачиваются вместо обработки: проверьте конфигурацию fastcgi в /etc/nginx/sites-available/default и убедитесь, что сокет/порт HHVM совпадает с настройками Nginx
- Ошибки подключения к БД: проверьте учётные данные в wp-config.php, попробуйте подключиться из командной строки mysql -u wpuser -p
Сценарий отката (быстрый план действий):
- Вернуть конфигурационные файлы из бэкапа.
- Перезапустить сервисы: systemctl restart mysql hhvm nginx.
- При необходимости временно переключиться на php-fpm (если HHVM вызывает проблемы).
Пример переключения на php-fpm (если установлен php-fpm):
/usr/bin/update-alternatives --install /usr/bin/php php /usr/bin/php5.6-cli 50
systemctl restart php5.6-fpm
systemctl restart nginx9 Контрольные списки для ролей
Системный администратор:
- Проверить обновления системы и установить патчи.
- Настроить резервное копирование (базы и файлов).
- Настроить мониторинг сервисов (Nginx, MariaDB, HHVM).
- Проверить брандмауэр и правила доступа.
Разработчик/DevOps:
- Протестировать шаблоны страниц и плагины под HHVM.
- Проверить совместимость PHP-расширений и функций.
- Настроить CI для деплоя и миграций БД.
Контент-администратор:
- Создать тестовую публикацию и проверить отображение.
- Проверить формы и загрузку медиафайлов.
- Проверить работу комментариев, если они включены.
10 Краткая методология развёртывания (шаги)
- Минимальная установка Debian 8 и базовая безопасность.
- Установка Nginx и проверка веб-сервера.
- Установка MariaDB и создание БД/пользователя.
- Установка HHVM и интеграция с Nginx.
- Развёртывание WordPress и настройка прав.
- Тесты, бэкап и включение мониторинга.
11 Полезные советы по совместимости и миграции
- HHVM работает как замена интерпретатора PHP, но не все плагины или расширения могут быть полностью совместимы. Тестируйте на стейджинге.
- Если у вас есть расширения, зависящие от специфичных PHP-интерфейсов Zend, проверьте их работу или используйте php-fpm как запасной вариант.
- Для миграции с Apache на Nginx проверьте правила переписывания (rewrite) в .htaccess и конвертируйте их в конфигурацию Nginx.
12 Тестовые сценарии и критерии приёмки
- Тест 1: Открыть главную страницу — ответ 200 и корректный HTML.
- Тест 2: Войти в админку — авторизация успешна.
- Тест 3: Создать пост с изображением — загрузка и отображение успешны.
- Тест 4: Импорт/экспорт базы данных — данные восстанавливаются корректно.
Критерии приёмки находятся выше в разделе Критерии приёмки.
13 Мероприятия по безопасности при возникновении инцидента
- При подозрении на компрометацию: отключите публичный доступ (iptables/ufw), снимите снапшот и проанализируйте журналы.
- Сбросьте пароли администратора WordPress и пользователей БД.
- Проведите аудит установленных плагинов и тем.
14 Полезная сводка (Fact box)
- Веб-сервер: Nginx
- Интерпретатор PHP: HHVM
- СУБД: MariaDB
- CMS: WordPress
- Корневая папка: /var/www/html/
- Пользователь веб-сервера: www-data
Факт: HHVM был разработан Facebook как высокопроизводительная альтернатива Zend PHP-движку и может значительно ускорять обработку PHP-кода в некоторых сценариях.
15 Резюме
- Стек Nginx + HHVM + MariaDB хорошо подходит для сайтов, где приоритет — производительность.
- Обязательно тестируйте совместимость плагинов и расширений перед переходом в прод.
- Реализуйте регулярные бэкапы, мониторинг и базовую hardening-политику безопасности.
Короткое резюме: Установка описанного стека на Debian 8 относительно прямолинейна: Nginx из репозитория, MariaDB вместо MySQL для улучшенной функциональности, HHVM из официального репозитория и WordPress как приложение. После установки пройдите чек-лист тестов и настройте бэкапы и безопасность.
Полезные ссылки
- Официальная документация HHVM: http://hhvm.com
- WordPress: https://wordpress.org
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента