Установка HHVM и nginx на CentOS 8

HHVM — это виртуальная машина с открытым исходным кодом, предназначенная для выполнения программ, написанных на Hack и PHP. HHVM использует подход JIT-компиляции для достижения более высокой производительности при сохранении гибкости разработки, предоставляемой PHP.

HHVM поддерживает Hack, PHP 5 и основные функции PHP 7.

Внимание: обратите внимание, что HHVM работает только на 64-битных машинах.

Я предполагаю, что у вас есть права root, в противном случае вы должны начинать команды с «sudo».

Начинаем пляски
Прежде всего, вам нужно запустить обновление, чтобы продолжить:
dnf update -y
Теперь вам нужно добавить репозиторий EPEL.
dnf install epel-release -y
dnf repolist
Установите некоторые зависимости для установки HHVM:
dnf -y install cpp gcc-c++ cmake git psmisc {binutils,boost,jemalloc,numactl}-devel \
{ImageMagick,sqlite,tbb,bzip2,openldap,readline,elfutils-libelf,gmp,lz4,pcre}-devel \
lib{xslt,event,yaml,vpx,png,zip,icu,mcrypt,memcached,cap,dwarf}-devel \
{unixODBC,expat,mariadb}-devel lib{edit,curl,xml2,xslt}-devel \
glog-devel oniguruma-devel ocaml gperf enca libjpeg-turbo-devel openssl-devel \
mariadb mariadb-server libc-client make git
Теперь мы можем установить HHVM из исходников.

Сперва клонируем репозиторий:
git clone git://github.com/facebook/hhvm.git
cd hhvm
git submodule update --init --recursive
Теперь соберем HHVM:
cmake -DMYSQL_UNIX_SOCK_ADDR=/var/run/mysqld/mysql.sock . # путь сокета MySQL, посмотрите его перед сборкой
make -j [номер_процессорных_ядер] # например make -j 4
make install
Проверим версию HHVM:
hhvm --version

Настройка HHVM и nginx

На этом этапе мы настроим HHVM для работы в качестве службы systemd, которая работает быстрее, чем на системном порте, мы будем запускать HHVM в файле сокета unix.

Перейдите в каталог systemd и создайте файл «hhvm.service»:
cd /etc/systemd/system/
dnf install nano -y
nano hhvm.service
Вставьте приведенную ниже конфигурацию службы в этот файл:
[Unit]
Description=HHVM HipHop Virtual Machine (FCGI)
After=network.target nginx.service mariadb.service

[Service]
ExecStart=/usr/local/bin/hhvm --config /etc/hhvm/server.ini --user nginx --mode daemon -vServer.Type=fastcgi -vServer.FileSocket=/var/run/hhvm/hhvm.sock

[Install]
WantedBy=multi-user.target
Сохраните его и выйдите.

Затем нам нужно отредактировать файл «server.ini» в каталоге HHVM:
cd /etc/hhvm/
nano server.ini
Замените строку «hhvm.server.port» следующей строкой:
hhvm.server.file_socket = /var/run/hhvm/hhvm.sock
Сохраните его и выйдите.

Теперь нам нужно изменить владельца каталога файлов сокета на пользователя «nginx».
chown -R nginx:nginx /var/run/hhvm/
Перезапустите сервис Nginx:
systemctl restart nginx

Конфигурация HHVM и nginx

На этом этапе мы настроим HHVM для работы с веб-сервером nginx, для этого нам нужно создать новый файл конфигурации HHVM и включить его в файл конфигурации Nginx.

Перейдите по указанному ниже пути и создайте файл «hhvm.conf»:
cd /etc/nginx/
nano hhvm.conf
Вставьте конфигурацию ниже:
location ~ \.(hh|php)$ {
root /usr/share/nginx/html;
fastcgi_keep_conn on;
fastcgi_pass unix:/var/run/hhvm/hhvm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
Сохраните его и выйдите.

Затем откройте файл «nginx.conf»:
nano nginx.conf
Добавьте следующую строку в директиву «server»:
include /etc/nginx/hhvm.conf;
Проверьте конфигурацию Nginx на наличие синтаксических ошибок и перезапустите службу:
nginx -t
systemctl restart nginx

Тестируем HHVM и nginx

Перейдите в публичный каталог вашего Nginx, путь по умолчанию ниже:
cd /usr/share/nginx/html/
Создайте тестовый файл PHP с помощью текстового редактора, как показано ниже:
nano info.php
Вставьте простой код ниже, сохраните его и выйдите:
<?php phpinfo(); ?>
Теперь вы можете протестировать свой HHVM, открыв свой домен или публичный IP-адрес в браузере, вы должны увидеть страницу, как показано ниже:
Поделиться:

Нет комментариев