HHVM (HipHop Virtual Machine) является виртуальной машиной с открытым исходным кодом, разработанный Facebook, это JIT (just-in-time) компилятор для выполнения программ, написанных на PHP 5 (и некоторые особенности PHP 7) и язык Hack. Если вы хотите запустить HHVM на вашем сервере, вы можете использовать FastCGI на основе веб-сервера на основе Nginx или веб-сервера Apache, или вы можете использовать встроенный веб-сервер под названием “Proxygen”.
На этом уроке мы покажем вам, как установить WordPress (хорошо известную CMS, основанную на PHP) с HHVM и Nginx в качестве нашего веб-сервера. Мы будем использовать OpenSUSE 42.1 Leap в качестве операционной системы, поэтому потребуется базовые знания OpenSUSE.
Необходимое условие
Nginx или engine-х представляет собой легкий веб-сервер с высокой производительностью и низким потреблением памяти. На нашем сервере OpenSUSE, мы можем использовать команду zypper для установки пакета.
Используйте “sudo su”, чтобы стать суперпользователем и установим Nginx с помощью команды zypper на OpenSUSE 42.1 Leap:
sudo su zypper in nginx
Затем перейдите в веб – каталог “/srv/www/htdocs” и создайте новый файл index.html.
cd /srv/www/htdocs/ echo "<h1>Nginx OpenSUSE Leap 42.1</h1>" > index.html
Добавьте Nginx для запуска во время загрузки и запуска Nginx с помощью команды systemctl:
systemctl enable nginx systemctl start nginx
Для того, чтобы убедиться, что Nginx работает на нашем сервере, мы можем посетить IP-адрес сервера с помощью браузера, или использовать команду curl ниже, чтобы увидеть результаты:
curl 192.168.43.29
MariaDB представляет собой базу данных с открытым исходным кодом, разработанную оригинальным MySQL разработчиком Monty Widenius, MariaDB совместим с MySQL. На этом шаге мы установим MariaDB и настроим корневой пароль для базы данных MariaDB. Затем мы создадим новую базу данных и пользователя, необходимые нам для установки WordPress.
Установить MariaDB с Zypper:
zypper in mariadb mariadb-client
Добавить MariaDB в автозагрузку, а затем запустим его:
systemctl enable mysql systemctl start mysql
MariaDB запущен, теперь мы должны настроить корневой пароль для базы данных / MySQL MariaDB. Выполните команду ниже, чтобы настроить корневой пароль MariaDB.
/usr/bin/mysqladmin -u root password 'andreyexpass'
Заметка:
Пароль MariaDB является “andreyexpass”, пожалуйста, используйте любой другой, более безопасный пароль на сервере.
Корневой пароль MariaDB был настроен. Теперь войдите в оболочку MariaDB / MySQL и создайте новую базу данных “wpdb” и нового пользователя “wpusers” с паролем “wpuser!@” для нашей установки WordPress. Выберите безопасный пароль здесь, а также в вашей системе.
Войдите в оболочку MariaDB / MySQL:
mysql -u root -p TYPE PASSWORD andreyexpass
Создайте новую базу данных и нового пользователя:
create database wpdb; create user wpusers@localhost identified by 'wpusers@'; grant all privileges on wpdb.* to wpusers@localhost identified by 'wpuser!@'; flush privileges;
MariaDB установлен, и новая база данных для нашей установки WordPress была создана.
Для установки HHVM, нам нужно добавить новый репозиторий HHVM. Мы можем использовать команду zypper чтобы добавить новый репозиторий HHVM к серверу. Затем мы должны обновить репозитории OpenSUSE:
zypper addrepo http://download.opensuse.org/repositories/home:munix9/openSUSE_Leap_42.1/home:munix9.repo zypper refresh
Введите ‘а’ , чтобы всегда доверять ключ.
Теперь установить пакеты hhvm:
zypper in hhvm hhvm-nginx hhvm-fastcgi
hhvm-Nginx обеспечивает образец конфигурации Nginx.
hhvm-FastCGI предоставляет файлы метаданных FastCGI.
На этом этапе мы будем настраивать HHVM для работы с веб – сервером Nginx. Мы настроим HHVM использовать Unix-сокет и запустим HHVM, как пользователь Nginx. Перейдите в каталог конфигурации HHVM и отредактируйте конфигурационный файл ‘server.ini’ редактором Vim:
cd /etc/hhvm/ vim server.ini
Раскоментируйте линию 3, чтобы позволить Unix-сокетам для HHVM.
hhvm.server.file_socket = /var/run/hhvm/server.sock
Сохраните и выйдите.
Далее, мы должны изменить сценарий службы HHVM так, что HHVM мог запускать Nginx nginx пользователя. Важно настроить HHVM для работы в качестве того же пользователя, чем веб – сервер. Перейти в каталог systemd и редактируйте файл ‘hhvm.service’ с помощью vim:
cd /usr/lib/systemd/system vim hhvm.service
Изменение –user опции HHVM в строке 11 пользователем Nginx.
ExecStart=/usr/bin/hhvm --config /etc/hhvm/php.ini --config /etc/hhvm/server.ini --user nginx --mode daemon -vServer.Type=fastcgi -vServer.FileSocket=/var/run/hhvm/server.sock - vPidFile=/var/run/hhvm/server.pid
Сохранить и выйти.
Теперь измените владельца каталога “/var/run/hhvm” для пользователя Nginx.
chown -R nginx:nginx /var/run/hhvm/
Заметка:
После перезагрузки сервера, иногда владелец каталога по умолчанию возвращается к пользователю по умолчанию. Чтобы решить эту проблему, мы можем определить команду Linux, которая будет выполнена после того, как все сценарии на текущем уровне были выполнены.
Отредактируйте файл after.local в каталоге “/etc/rc.d/” и добавьте новую команду Linux в конце файла:
vim /etc/rc.d/after.local
Вставьте следующую команду:
chown -R nginx:nginx /var/run/hhvm/
Сохранить и выйти.
Далее, мы должны настроить HHVM для работы с Nginx. Мы установили новый пакет “hhvm-Nginx” , он содержит пример конфигурации HHVM для веб – сервера Nginx.
Перейдите в каталог конфигурации Nginx и скопируйте конфигурацию HHVM:
cd /etc/nginx/ cp hhvm.conf.example hhvm.conf
Отредактируйте hhvm.conf с помощью команды vim:
vim hhvm.conf
На второй строке, добавьте новую конфигурацию, чтобы определить корневую веб-директорию:
root /srv/www/htdocs;
Сохраните и выйти.
Тогда мы должны изменить конфигурацию Nginx, чтобы включить конфигурацию HHVM.
vim nginx.conf
В строке 59 – добавить новую строку конфигурации ниже:
include /etc/nginx/hhvm.conf;
Сохранить и выйти.
Включить и запустить HHVM с командой systemctl ниже:
systemctl enable hhvm systemctl start hhvm
Затем перезагрузите Nginx:
systemctl restart nginx
Были установлены и настроены Nginx и HHVM. Для того, чтобы проверить что конфигурация работает, мы создадим новый файл php, который содержит код phpinfo и сохраним его в корневом каталоге веб “/srv/www/htdocs”, доступный к нему через веб – браузер.
cd /srv/www/htdocs/ echo "<?php phpinfo(); ?>" > info.php
Откройте браузер и введите IP-адрес сервера:
192.168.43.29/info.php
Nginx и HHVM работают без ошибок.
На этом шаге мы создадим новую конфигурацию виртуального хоста с Nginx и HHVM. Я буду использовать доменное имя “andreyex.ru” для этого примера и использую его как домен для нашей установки WordPress тоже. Пожалуйста, замените имя домена на ваш собственный домен именем во всех конфигурационных файлов и команд.
Перейдите в каталог Nginx и создайте новый каталог для хранения виртуальных хост-файлов:
cd /etc/nginx/ mkdir vhosts.d/ cd vhosts.d/
Создайте новый файл конфигурации “nano.conf” с помощью vim:
vim nano.conf
И вставьте новую конфигурацию виртуального хоста ниже:
server { # This line for redirect non-www to www server_name andreyex.ru; rewrite ^(.*) http://andreyex.ru$1 permanent; } server { listen 80; server_name andreyex.ru; root /srv/www/nano; index index.php index.html index.htm; location / { try_files $uri $uri/ =404; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /srv/www/htdocs; } # HHVM running throught Unix-Socket location ~ \.(hh|php)$ { root /srv/www/nano; fastcgi_keep_conn on; #fastcgi_pass 127.0.0.1:9000; fastcgi_pass unix:/var/run/hhvm/server.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
Сохраните и выйдите.
В нашей конфигурации виртуального хоста, мы определили веб – корневой каталог для доменного имени каталог “/srv/www/nano” . Этот каталог не существует на данный момент, поэтому мы должны создать этот каталог в настоящее время.
mkdir -p /srv/www/nano/
И, наконец, проверьте конфигурацию Nginx и перезапустите его:
nginx -t systemctl restart nginx
Убедитесь, что команда Nginx -t не отображает сообщение об ошибке.
На шаге 5 мы создали конфигурацию виртуального хоста для нашей установки WordPress. Так что мы просто должны загрузить WordPress прямо сейчас, а затем изменить конфигурацию базы данных, которую мы создали в шаге 2.
Перейдите на веб – корневой директории “/srv/www/nano” и загрузите Zip – архив WordPress с помощью команды wget:
cd /srv/www/nano wget wordpress.org/latest.zip
Извлеките “latest.zip” и переместите все WordPress файлы и каталоги в каталог nano:
unzip latest.zip mv wordpress/* .
Затем скопируйте файл “wp-config-sample.php” в “wp-config.php” и отредактируйте с помощью команды Vim:
cp wp-config-sample.php wp-config.php vim wp-config.php
Изменение DB_NAME в нашей базе данных “wpdb” , DB_USER к “wpusers” и DB_PASSWORD к “wpuser!@” .
DEFINE ( 'DB_NAME', 'wpdb'); DEFINE ( 'DB_User', 'wpusers'); DEFINE ( 'DB_PASSWORD', 'wpuser!@'); DEFINE ( 'DB_HOST', 'Localhost');
Сохраните и выйдите.
Теперь откройте веб-браузер и введите имя домена в адресной строке.
Вы будете перенаправлены на andreyex.ru и вы увидите страницу установки.
И вы можете заполнить название сайта и описание с информацией и нажмите кнопку “Установить WordPress”.
Подождите, пока не закончится установка, и вы увидите страницу входа ниже. Нажмите “Войти” , чтобы войти в панели управления администратора WordPress:
Введите Вашего пользователя и пароль администратора, затем нажмите кнопку “Войти” снова.
Теперь вы находитесь в приборной панели администратора WordPress.
Все! Мы установили в настоящее время. WordPress с Nginx и HHVM на OpenSUSE 42.1 Leap