Установка дополнительных версий PHP

Avatar of admin admin - 03.01.2018 11:07 - CentOS, Операционные системы

Стандартный репозиторий CentOS содержит до неприличия древнюю, покрытую пылью и мхом версию PHP. Исправим это недоразумение. Более того, установим две различные версии и настроим ISPConfig 3.1 для их использования.

Прежде всего, загружаем safe repository by Remi:

wget http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

и устанавливаем:

rpm -ivh remi-release-7.rpm

Устанавливаем PHP 5.6 из Remi-safe репозитория:
Remi-safe repo предоставляет альтернативные версии PHP в безконфликтном режиме, используя версию php как префикс для всех пакетов. Это значит, что FPM сервис будет называться php56-php-fpm, будет использоваться дополнительный файл конфигурации php.ini, и вызов из командной строки будет php56.

yum install php56-php-bcmath php56-php-cli php56-php-common php56-php-fpm php56-php-gd php56-php-intl php56-php-mbstring php56-php-mcrypt php56-php-mysqlnd php56-php-opcache php56-php-pdo php56-php-pear php56-php-pecl-uploadprogress php56-php-soap php56-php-xml php56-php-xmlrpc

В качестве зависимостей установятся также (если не установлены):
audit-libs-python, checkpolicy, environment-modules, gd-last, libcgroup, libsemanage-python, libwebp, libzip5, php56-php-pecl-jsonc, php56-php-pecl-zip, php56-php-process, php56-runtime, policycoreutils-python, python-IPy, scl-utils, setools-libs, t1lib
При необходимости можно установить и большее количество php56-php-* пакетов для расширения функциональности PHP5.6.
Перед запуском FPM процесса, в конфигурации нужно изменить номер используемого порта, для предотвращения конфликта с уже установленной версией. Для этого редактируем /opt/remi/php56/root/etc/php-fpm.d/www.conf, изменив там строку
listen = 127.0.0.1:9000
на, например
listen = 127.0.0.1:9005
Можно использовать любой номер порта, имея в виду следующие ограничения:
9000 используется основным FPM процессом;
9010 является базовым портом, который будет использовать ISPConfig (каждый сайт будет иметь собственный пул, начиная с 9010. Следующий сайт будет 9011, и т.д.).
После внесения изменений, стартуем PHP56 FPM сервис:

systemctl start php56-php-fpm
systemctl enable php56-php-fpm

Файл с настройками php.ini для версии PHP56 будет расположен здесь - /opt/remi/php56/root/etc/php.ini
Аналогично устанавливаем версию 7.2:

yum install php72-php-bcmath php72-php-cli php72-php-common php72-php-fpm php72-php-gd php72-php-intl php72-php-mbstring php72-php-mcrypt php72-php-mysqlnd php72-php-opcache php72-php-pdo php72-php-pear php72-php-pecl-uploadprogress php72-php-soap php72-php-xml php72-php-xmlrpc

В зависимостях:
libargon2,  php72-php-json, php72-php-process, php72-runtime
В /etc/opt/remi/php72/php-fpm.d/www.conf указываем:
listen = 127.0.0.1:9006
Конфигурация для этой версии в /etc/opt/remi/php72/php.ini
Стартуем:

systemctl start php72-php-fpm
systemctl enable php72-php-fpm

Настройка дополнительных версий PHP в ISPConfig
Идем в раздел System->Additional PHP Versions. Выбираем сервер и жмем "Add new PHP Version". Указываем имя версии, например "PHP 5.6". Поле "Клиент" нужно оставить пустым, за исключением случая, кагда дополнительная версия устанавливается для конкретного клиента. Переходим на вкладку "FastCGI Settings" (сохранять перед этим не обязательно, при перемещении между вкладками происходит автосохранение). Указываем следующие параметры:

  • Path to the PHP FastCGI binary : /opt/remi/php56/root/usr/bin/php-cgi
  • Path to the php.ini directory : /opt/remi/php56/root/etc

Далее идем на вкладку PHP-FPM Settings и указываем:

  • Path to the PHP-FPM init script : php56-php-fpm
  • Path to the php.ini directory : /opt/remi/php56/root/etc
  • Path to the PHP-FPM pool directory : /opt/remi/php56/root/etc/php-fpm.d

Сохраняем. Версия 5.6 настроена, аналогично делаем все для версии PHP 7.2:
Вкладка FastCGI Settings

  • Path to the PHP FCGI binary: /opt/remi/php72/root/usr/bin/php-cgi
  • Path to the php.ini directory: /etc/opt/remi/php72

PHP-FPM Settings

  • Path to the PHP-FPM init script: php72-php-fpm
  • Path to the php.ini directory: /etc/opt/remi/php72
  • Path to the PHP-FPM pool directory: /etc/opt/remi/php72/php-fpm.d

Теперь в настройках для каждого сайта мы можем выбрать "PHP Version" как Default, PHP 5.6 или PHP 7.2.

Пожалуйста, войдите в систему для комментирования.

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

rom

11.01.2018 14:34

Сегодня проверил рецепт на своем виртуальном серваке - все действительно работает. Огромное спасибо за подробное руководство, даже с моим небольшим опытом администрирования все получилось сразу и без проблем.


aleks

05.01.2018 14:19

php версии 5.4 в новейшей версии OS действительно несколько удивляет. Да, совместимость со старыми проектами, которых на серверах великое множество - это важно. Но обновить php до версии 5.6 без ущерба для большинства из них вполне можно было бы. Я так думаю.