VestaCP + Nginx + PHP-FPM + PHP 7.2

| 14.06.2018 | 0 Comments

Данная статья рассматривает установку сервера на базе Centos 7, которая подойдет как для работы SEoDOR, так и других движков.

Устанавливать будем панель VestaCP в связке Nginx + PHP-FPM, а затем обновим PHP до версии 7.2. Также установим ionCube и PDO, активируем файловый менеджер в VestaCP, «ускорим» open_basedir и отключим опасные функции в php.ini.

Примечание: в этой сборке .htaccess работать не будет! Вместо него все правила прописываются в шаблоне Web NGINX!

Содержание:

Установка CURL, ZIP
VestaCP + Nginx + PHP-FPM
Установка PHP 7.2
Установка ionCube
Установка PDO для работы SQLite3
Добавление nginx-шаблонов в панель Vesta
Активация SFTP Chroot и файлового менеджера в VestaCP
Ускорение open_basedir
Отключение опасных функций в /etc/php.ini

0. Установка CURL, ZIP

yum -y install curl unzip zip 2>/dev/null

1. VestaCP + Nginx + PHP-FPM

Скачаем скрипт инсталляции:

curl -O http://vestacp.com/pub/vst-install.sh

Далее переходим сюда. В конфигураторе выбираем nginx + php-fpm и другие настройки. Прописываем в пустых полях хостнейм, почту администратора панели и пароль к панели. Нажимаем Generate Install Command:


Полученную команду копируем в консоль и подтверждаем установку «y».

После установки панель будет доступна по адресу https://ip_сервера:8083/

2. Установка PHP 7.2

Проверим, какая версия PHP установлена:

php -v

Обновим все системное ПО до последней версии с помощью менеджера пакетов yum:

yum -y update

Как только обновление системы будет завершено, продолжим установку yum-utils, если она еще не установлена. yum-utils будет использоваться для включения новой версии PHP:

yum -y install yum-utils

Включим репозитарий Remi PHP 7.2:

yum-config-manager --enable remi-php72

После того, как репозиторий Remi PHP 7.2 включен, обновим нашу старую версию PHP до 7.2:

yum -y update

Перезапустим nginx и php-fpm:

systemctl restart nginx
systemctl restart php-fpm

Убедимся, что PHP обновлен до версии 7.2:

php -v

3. Установка ionCube

wget http://downloads2.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz
tar zxf ioncube_loaders_lin_x86-64.tar.gz
rm -rf ioncube_loaders_lin_x86-64.tar.gz
mv ioncube /usr/local

Прописываем IonCube Loader в конфиг /etc/php.ini:

echo "" >> /etc/php.ini
echo "[Zend Modules]" >> /etc/php.ini
echo "zend_extension = /usr/local/ioncube/ioncube_loader_lin_7.2.so" >> /etc/php.ini
echo "zend_extension_ts = /usr/local/ioncube/ioncube_loader_lin_7.2_ts.so" >> /etc/php.ini

Перезапустим php-fpm:

systemctl restart php-fpm

Убедимся, что ionCube установлен:

php -m

4. Установка PDO для работы SQLite3

yum -y install php-pdo

Перезапустим php-fpm:

systemctl restart php-fpm

5. Добавление nginx-шаблонов в панель Vesta

Скачиваете nginx-шаблон seodor5 и копируете файлы в папку
/usr/local/vesta/data/templates/web/nginx/php-fpm/ :

cd /usr/local/vesta/data/templates/web/nginx/php-fpm
curl -O https://seodor.biz/public/vestacp_nginx_phpfpm.zip
unzip vestacp_nginx_phpfpm.zip
rm -r -f vestacp_nginx_phpfpm.zip
cd ~

Далее, при создании в панели нового домена или редактировании существующих, выбираем шаблон nginx соответствующий используемой вами CMS и сохраняем изменения. Этого всего достаточно, чтобы ваши сайты начали работать в связке nginx и php-fpm.

6. Активация SFTP Chroot и файлового менеджера в VestaCP

echo "FILEMANAGER_KEY='mykey'" >> /usr/local/vesta/conf/vesta.conf
echo "SFTPJAIL_KEY='mykey'" >> /usr/local/vesta/conf/vesta.conf
sed -i -e "s~.*checkout.*~#v_host='https://vestacp.com/checkout'~g" /usr/local/vesta/bin/v-activate-vesta-license
sed -i -e "s~.*curl.*~#answer=$(curl -s $v_host/activate.php?licence_key=$license&module=$module)~g" /usr/local/vesta/bin/v-activate-vesta-license
sed -i -e "s~.*check_result.*~check_result $? 'cant connect to vestacp.com ' $E_CONNECT\nanswer=0~g" /usr/local/vesta/bin/v-activate-vesta-license
sed -i -e "s~.*v-check-vesta-license.*~#$BIN/v-check-vesta-license >/dev/null~g" /usr/local/vesta/bin/v-backup-users

7. Ускорение open_basedir

Как известно, использование open_basedir значительно замедляет скорость загрузки сайта, но если вы не хотите отказываться от этой опции, то рекомендую установить realpath_turbo — данное расширение включит кеширование путей и ваши сайты будут работать с такой же скоростью, как если бы вы не использовали опцию open_basedir.

yum -y install php-devel
curl -o realpath_turbo.zip "https://seodor.biz/public/realpath_turbo.zip"
unzip realpath_turbo.zip
cd realpath_turbo
phpize
./configure
make
make install
echo "" >> /etc/php.ini
echo "extension=realpath_turbo.so" >> /etc/php.ini
echo "realpath_turbo.disable_dangerous_functions = 1" >> /etc/php.ini
cd ~
rm -r -f /root/realpath_turbo
rm -r -f realpath_turbo.zip

Также в /etc/php.ini не забудьте отключить опцию open_basedir, если она включена:
;open_basedir=
Вместо нее будет использоваться опция realpath_turbo.open_basedir.

Теперь один из двух вариантов:
1) в шаблоне nginx добавьте (или раскомментируйте строку в шаблоне seodor5):

location ~ [^/]\.php(/|$) {
#...
fastcgi_param PHP_ADMIN_VALUE "realpath_turbo.open_basedir=%home%/%user%/web/%domain%/public_html/";
#...
}

И примените указанный шаблон Web NGINX для сайта в панели VestaCP.

2) Шаблон PHP-FPM:

echo "php_admin_value[realpath_turbo.open_basedir] = /home/%user%/web/%domain%/public_html/" >> /usr/local/vesta/data/templates/web/php-fpm/default.tpl

И примените шаблон default для сайта в опции Backend PHP-FPM в панели VestaCP.

8. Отключение опасных функций в /etc/php.ini


sed -i 's/disable_functions =/disable_functions = get_defined_constants, apache_get_modules, virtual, getmyinode, apache_get_version, apache_getenv, ini_restore, openlog, syslog, highlight_file, show_source, symlink, ini_get_all, phpinfo, pcntl_alarm, pcntl_fork, pcntl_waitpid, pcntl_wait, pcntl_wifexited, pcntl_wifstopped, pcntl_wifsignaled, pcntl_wexitstatus, pcntl_wtermsig, pcntl_wstopsig, pcntl_signal, pcntl_signal_dispatch, pcntl_get_last_error, pcntl_strerror, pcntl_sigprocmask, pcntl_sigwaitinfo, pcntl_sigtimedwait, pcntl_exec, pcntl_getpriority, pcntl_setpriority, exec, shell_exec, system, passthru, popen, proc_close, proc_get_status, proc_nice, proc_terminate, leak, listen, chown, chgrp, apache_note, apache_setenv, closelog, debugger_off, debugger_on, define_sys, getmyuid, getmypid, diskfreespace, dl, posix_ctermid, posix_getcwd, posix_getegid, posix_geteuid, posix_getgid, posix_getgrgid, posix_getgrnam, posix_getgroups, posix_getlogin, posix_getpgid, posix_getpgrp, posix_getpid, posix, _getppid, posix_getpwnam, posix_getpwuid, posix_getrlimit, posix_getsid, posix_getuid, posix_isatty, posix_kill, posix_mkfifo, posix_setegid, posix_seteuid, posix_setgid, posix_setpgid, posix_setsid, posix_setuid, posix_times, posix_ttyname, posix_uname/g' /etc/php.ini

Перезапустите php-fpm:

service php-fpm restart

Категория: Заметки

Комментари (0)

Trackback URL | Comments RSS Feed

Комментариев пока что нет. Вы будете первым!

Оставить комментарий