Перейти к содержанию

Несколько версий php на VESTACP

Как сделать несколько версий php на панели VESTACP (centos7+nginx+php-fpm)

Шаг 1 — Установка версий php

Подсказка если нет репозиториев

yum install epel-release
yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm


Так как в панели веста  репозитории EPEL и REMI имеются

Команды для ssh


пых 8.1

yum install php81 php81-php-fpm php81-php-cli php81-php-mysqlnd php81-php-gd php81-php-ldap php81-php-odbc php81-php-pdo php81-php-pear php81-php-xml php81-php-xmlrpc php81-php-mbstring php81-php-snmp php81-php-soap php81-php-zip php81-php-opcache

пых 7.4

yum install php74 php74-php-fpm php74-php-cli php74-php-mysqlnd php74-php-gd php74-php-ldap php74-php-odbc php74-php-pdo php74-php-pear php74-php-xml php74-php-xmlrpc php74-php-mbstring php74-php-snmp php74-php-soap php74-php-zip php74-php-opcache

Далее идем на сервер и ищем файлы

/etc/opt/remi/php81/php-fpm.d/www.conf
в них меняем listen = 127.0.0.1:9000 на listen = 127.0.0.1:9081

/etc/opt/remi/php74/php-fpm.d/www.conf

в них меняем listen = 127.0.0.1:9000 на listen = 127.0.0.1:9074

Подсказка 

порт 9000 может отличаться

Для собственного удобства  меняем последние цифры порта на версию php 9081 и 9074 соответственно

Шаг 2 — Запустим процессы PHP.

Команда

systemctl enable --now php74-php-fpm

Результат

Created symlink from /etc/systemd/system/multi-user.target.wants/php74-php-fpm.service to /usr/lib/systemd/system/php74-php-fpm.service.

Команда

systemctl enable --now php81-php-fpm

Результат

Created symlink from /etc/systemd/system/multi-user.target.wants/php81-php-fpm.service to /usr/lib/systemd/system/php81-php-fpm.service.

Проверим

systemctl status php74-php-fpm 
systemctl status php81-php-fpm

Подсказка 

Тут у меня была первая проблема, не создавалась ссылка на пых 7.4, пришлось снести php 7.4

Команда

yum list installed | grep php74* - смотрим все что мешает
yum remove php74* - удаляем

Затем устанавливаем по новой

yum install php74 php74-php-fpm php74-php-cli php74-php-mysqlnd php74-php-gd php74-php-ldap php74-php-odbc php74-php-pdo php74-php-pear php74-php-xml php74-php-xmlrpc php74-php-mbstring php74-php-snmp php74-php-soap php74-php-zip php74-php-opcache

Шаг 3 — подключаем нужному сайту необходимый php

Затем идем в папку с настройками nginx для сайта /home/test/conf/web и прописываем вместо set $php_sock 127.0.0.1:9001; вот это set $php_sock 127.0.0.1:9074;

И перезагружаем nginx и php74-php-fpm 

service nginx restart
service  php74-php-fpm restart

Сайт должен работать и phpinfo() покажет php7.4

Настройки php-fpm для домена лежавшие в папке /etc/php-fpm.d для версии php 7.4 не работают поэтому переносим файл test.ru.conf в /etc/opt/remi/php74/php-fpm.d (или просто в общий файл www.conf в той же папке если один сайт)

Подсказка

У меня была ошибка после того как перекинул файл с настройками test.ru.conf, поэтому я перенес нужные для работы сайта параметры в общий файл настроек для php74 www.conf

php_admin_value[opcache.revalidate_freq] = 0
php_admin_value[date.timezone] = Europe/Moscow
php_admin_value[display_errors] = 1
php_admin_value[max_execution_time] = 360
php_admin_value[max_input_vars] = 10000
php_admin_value[upload_max_filesize] = 8M
php_admin_value[mbstring.func_overload] = 0
php_admin_value[opcache.max_accelerated_files] = 100000

Далее копируем один из шаблонов настроек nginx у меня это был bitrix.stpl и bitrix.tpl лежащие в папке /usr/local/vesta/data/templates/web/nginx/php-fpm обзываем bitrix74.stpl и bitrix74.tpl

И в них set $php_sock %backend_lsnr%; меняем на set $php_sock 127.0.0.1:9074; и выбираем его для всех сайтов где нам нужна php7.4

Если у кого-то есть решение лучше пишите. Дополню.

Опубликовано в рубрикеКейсы