CentOS 7 – один из самых популярных дистрибутивов Linux для хостинга веб-приложений и сайтов. В сочетании с сервером Apache, это надежное и мощное решение для хостинга веб-проектов.
Однако, в современном мире разработки веб-приложений, использование различных версий PHP может быть критически важным для обеспечения совместимости и безопасности проекта. В этой статье мы рассмотрим, как установить несколько версий PHP на CentOS 7 с Apache.
Перед установкой дополнительных версий PHP на CentOS 7, вам потребуется рабочая система с предустановленным Apache и PHP. Если у вас еще нет веб-сервера Apache и PHP, следуйте инструкциям по установке и настройке на официальном сайте проекта CentOS.
Содержание
Установка нужной версии PHP
Установка Remi Repository:
Для того, чтобы получить доступ к дополнительным версиям PHP, вам понадобится подключить репозиторий Remi. Он содержит множество пакетов, включая различные версии PHP. Выполните следующие команды в командной строке, чтобы добавить репозиторий Remi на вашей CentOS 7 системе:
sudo yum install epel-release
Установка нужной версии PHP
После того как репозиторий Remi добавлен, можно установить нужные версии.
Я буду ставить два релиза php74 и php82.
Посмотрим какие пакеты доступны для установки.
# yum list php8[0-9]
# yum list php7[0-9]
Как видно на скриншоте выше, нужные релизы 8.2 и 7.4 присутствуют выше. Приступим к установке.
yum install php82 php82-php-fpm php82-php-cli php82-php-mysqlnd php82-php-gd php82-php-ldap php82-php-odbc php82-php-pdo php82-php-pear php82-php-xml php82-php-xmlrpc php82-php-mbstring php82-php-snmp php82-php-soap php82-php-zip php82-php-opcache
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
После установки нужно отредактировать конфиги менеджера процессов PHP FastCGI или PHP-FPM.
nano /etc/opt/remi/php82/php-fpm.d/www.conf
nano /etc/opt/remi/php74/php-fpm.d/www.conf
Изменяем строчку "listen = 127.0.0.1:9000" таким образом, чтобы для удобства порт заканчивался на релиз php. В нашем случае это "listen = 127.0.0.1:9082" для php82 и "listen = 127.0.0.1:9074" для php74.
Запустим PHP-FPM.
systemctl enable --now php82-php-fpm
systemctl enable --now php74-php-fpm
Создадим два bash скрипта в каталоге /var/www/cgi-bin.
touch /var/www/cgi-bin/php82.fcgi
nano /var/www/cgi-bin/php82.fcgi
#!/bin/bash
exec /bin/php82-cgi
touch /var/www/cgi-bin/php74.fcgi
#!/bin/bash
exec /bin/php74-cgi
Далее поменяем права на 755 и назначим владельца и группу apache.
chmod 755 /var/www/cgi-bin/php*
chown apache:apache /var/www/cgi-bin/php*
После установки нескольких версий PHP, вам необходимо настроить альтернативы, чтобы определить, какая именно версия PHP будет использоваться по умолчанию.
В apache создадим конфигурационный файл "php.conf", который будет определять какую версию php использовать для конкретного сайта.
touch /etc/httpd/conf.d/php.conf
################## Action php82-fcgi /cgi-bin/php82.fcgi Action php74-fcgi /cgi-bin/php74.fcgi ################## <Directory /var/www/html/site1.ru> AllowOverride all Require all granted # mod_proxy_fcgi options <IfModule mod_proxy_fcgi.c> <FilesMatch \.php$> SetHandler "proxy:fcgi://127.0.0.1:9082" </FilesMatch> </IfModule> </Directory> # ################## # <Directory /var/www/html/site2.ru> AllowOverride all Require all granted # mod_proxy_fcgi options <IfModule mod_proxy_fcgi.c> <FilesMatch \.php$> SetHandler "proxy:fcgi://127.0.0.1:9074" </FilesMatch> </IfModule> </Directory> ##################
Перезапуск Apache
После изменения альтернатив PHP, не забудьте перезапустить веб-сервер Apache.
systemctl restart httpd
Чтобы проверить какой релиз использует сайт, необходимо поместить файл в директорию сайта, в моем случае это "/var/www/html/site1.ru/my.php" с содержимым:
"<?php phpinfo(); ?>"
Затем в браузере просто открываем файл:
site1.ru/my.php
Итог
Теперь вы знаете, как установить несколько версий PHP на CentOS с помощью Apache. Это даст вам гибкость и возможность адаптировать ваш проект под различные требования и решать возникающие проблемы совместимости.
Помните, что правильное управление версиями PHP также включает в себя регулярные обновления и обеспечение безопасности вашей системы.
Перед установкой новых версий PHP, убедитесь, что они совместимы с вашими приложениями и не вызовут конфликтов с уже установленными пакетами. Следуйте официальным руководствам и документации для обновления версий PHP и управления зависимостями пакетов на вашей системе CentOS 7.
В дополнение к установке нескольких версий PHP через репозиторий Remi, существуют также другие методы управления версиями PHP.
PHP-FPM
PHP-FPM (FastCGI Process Manager) - альтернативный способ обработки PHP-скриптов вместо встроенного веб-сервера Apache модуля mod_php. PHP-FPM позволяет управлять пулами процессов PHP, и это делает его более эффективным для обработки запросов в многопользовательской среде.