PHP - широко распространенный язык для веб-разработки. Благодаря последней версии 9 и более старой стабильной версии, основанной на Enterprise Linux 8, Rocky Linux представляет собой надежную платформу для работы PHP-приложений. В этом руководстве мы расскажем, как установить PHP 8.3, 8.2, 8.1, 8.0 или 7.4 на Rocky Linux 9 или его более старый стабильный релиз. Используя репозиторий Remi PHP, вы можете легко установить несколько версий PHP на свою систему.
Основные преимущества установки PHP в Rocky Linux
- Несколько версий: Rocky Linux позволяет устанавливать различные версии PHP, что облегчает удовлетворение специфических требований проекта.
- Совместимость с открытым исходным кодом: Открытый исходный код PHP обеспечивает плавную интеграцию с различными серверами и базами данных.
- Простота установки: Репозиторий Remi PHP упрощает процесс установки, делая его понятным даже для новичков в Linux.
- Безопасность и стабильность: Rocky Linux известен своей безопасностью и стабильностью, что делает его отличным выбором для запуска PHP-приложений.
В следующем руководстве приведены пошаговые инструкции для успешной установки PHP на систему Rocky Linux, будь то версия 9 или более старый стабильный релиз, основанный на Enterprise Linux 8.
Срок службы PHP 7.4 истек 28 ноября 2022 года, и он больше не поддерживается обновлениями безопасности и исправлениями ошибок. Использование этой версии представляет собой риск для безопасности. Перейдите на поддерживаемую версию PHP, например, 8.1, которая будет получать обновления до 26 ноября 2023 года.
Риски, связанные с использованием устаревшего PHP:
- Повышенная уязвимость системы безопасности
- Ограниченный доступ к новым функциям
- Потенциальные проблемы с производительностью
- Снижение доступности технической поддержки.
Обновление Rocky Linux перед установкой PHP
Перед установкой любого нового программного обеспечения всегда полезно обновить систему. Для этого откройте терминал и выполните следующие команды:
1 | sudo dnf upgrade --refresh |
Импорт репозитория PHP Remi в Rocky Linux
Для импорта репозитория PHP Remi необходимо установить репозиторий EPEL (Extra Packages for Enterprise Linux). EPEL особенно полезен для начинающих пользователей таких дистрибутивов, как Rocky Linux, который основан на RHEL и предлагает широкий спектр широко используемых программных пакетов для Enterprise Linux.
Убедитесь, что вы импортировали правильный репозиторий для вашей версии дистрибутива Rocky Linux, как показано ниже.
Импорт репозитория Remi PHP для Rocky Linux 9
Сначала включите CRB.
1 | sudo dnf config-manager --set-enabled crb |
После включения CRB выполните следующую команду для установки обеих версий EPEL.
1 2 3 | sudo dnf install \ https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm \ https://dl.fedoraproject.org/pub/epel/epel-next-release-latest-9.noarch.rpm |
Используйте следующую команду, которая импортирует репозиторий EL 9 Remi.
1 | sudo dnf install dnf-utils http://rpms.remirepo.net/enterprise/remi-release-9.rpm -y |
Импорт PHP-репозитория Remi для Rocky Linux 8
Сначала включите EPEL для Rocky Linux 8 с помощью следующей команды.
1 2 3 | sudo dnf install \ https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm \ https://dl.fedoraproject.org/pub/epel/epel-next-release-latest-8.noarch.rpm |
Теперь с помощью следующей команды импортируйте репозиторий Remi EL 8, содержащий PHP.
1 | sudo dnf install dnf-utils http://rpms.remirepo.net/enterprise/remi-release-8.rpm -y |
Включение PHP (8.x или 7.4) из репозитория Remi в Rocky Linux
Сначала перечислите модули PHP, чтобы убедиться, что вы видите все версии PHP из репозитория REMI, а затем, после подтверждения, можно уточнить свой выбор.
Выполните в терминале следующую команду:
1 | dnf module list php |
Появится запрос на импорт GPG-ключа для репозитория Remi. Введите (Y), чтобы продолжить, если он появится.
Пример вывода:
Далее включите версию PHP, которую вы хотите установить.
В Rocky Linux включите PHP 8.3.
1 | sudo dnf module enable php:remi-8.3 -y |
Включите PHP 8.2 в операционной системе Rocky Linux.
1 | sudo dnf module enable php:remi-8.2 -y |
Включить PHP 8.1 в Rocky Linux.
1 | sudo dnf module enable php:remi-8.1 -y |
Включить PHP 8.0 в Rocky Linux.
1 | sudo dnf module enable php:remi-8.0 -y |
Включить PHP 7.4 в Rocky Linux.
1 | sudo dnf module enable php:remi-7.4 -y |
Установка PHP 8.3, 8.2, 8.1, 8.0 или 7.4
Включив в системе репозиторий Remi PHP, вы можете установить желаемую версию PHP. Предлагаемые опции позволяют выбрать между Apache и Nginx. Однако при наличии необходимых знаний можно пойти дальше и установить специальные расширения, отвечающие требованиям CMS или разработки программного обеспечения.
Apache (httpd) PHP:
1 | sudo dnf install php php-cli -y |
Nginx PHP:
1 | sudo dnf install php-fpm php-cli -y |
После установки выполните следующую команду, чтобы убедиться, что PHP установлен.
1 | php -v |
Чтобы получить наиболее популярные расширения для нужной версии PHP, выполните указанную ниже команду.
Не устанавливайте все перечисленные ниже расширения без разбора. Команда предназначена для демонстрации широкого спектра часто используемых расширений. Для обеспечения оптимальной производительности и безопасности следует устанавливать только те расширения, которые действительно необходимы для вашего проекта, и удалять те, которые больше не используются.
1 | sudo dnf install php-cli php-fpm php-curl php-mysqlnd php-gd php-opcache php-zip php-intl php-common php-bcmath php-imagick php-xmlrpc php-json php-readline php-memcached php-redis php-mbstring php-apcu php-xml php-dom php-redis php-memcached php-memcache |
В качестве альтернативы можно использовать следующую команду вместо того, чтобы набирать расширения по одному:
1 | sudo dnf install php-{cli,fpm,curl,mysqlnd,gd,opcache,zip,intl,common,bcmath,imagick,xmlrpc,json,readline,memcached,redis,mbstring,apcu,xml,dom,memcache}. |
Теперь давайте разберемся, что делает каждое из этих расширений PHP:
- php-cli: Интерфейс командной строки для PHP, полезный для запуска PHP-скриптов в оболочке.
- php-fpm: Менеджер процессов FastCGI, полезный для обработки и обслуживания PHP-запросов.
- php-curl: Позволяет подключаться и взаимодействовать с различными типами серверов и протоколов.
- php-mysqlnd: Нативный драйвер MySQL, используемый для подключения к базам данных MySQL.
- php-gd: Программа Graphics Draw, предназначенная для создания и работы с файлами изображений.
- php-opcache: Кэш опкодов, используется для ускорения выполнения PHP.
- php-zip: Позволяет работать с zip-архивами.
- php-intl: Расширение интернационализации для работы с международными наборами символов и локалями.
- php-common: Общие файлы и настройки, используемые несколькими модулями PHP.
- php-bcmath: Двоичный калькулятор, позволяющий выполнять математические вычисления с произвольной точностью.
- php-imagick: Предоставляет методы для создания и модификации изображений с помощью библиотеки ImageMagick.
- php-xmlrpc: Позволяет создать XML-RPC-сервер и упрощает отправку XML-RPC-запросов.
- php-json: Расширение JSON (JavaScript Object Notation) для кодирования и декодирования JSON-данных.
- php-readline: Позволяет считывать строку данных из терминала.
- php-memcached: Обеспечивает быстрое кэширование объектов в распределенной памяти.
- php-redis: Расширение PHP для взаимодействия с Redis.
- php-mbstring: Многобайтовая строка для работы со строками, отличными от ASCII.
- php-apcu: APC User Cache, расширение пользовательского кэширования, основанное на APC.
- php-xml: XML-парсер для разбора XML-документов.
- php-dom: Document Object Model, для объектно-ориентированного манипулирования XML-документами.
- php-memcache: Предоставляет удобный процедурный и объектно-ориентированный интерфейс для работы с memcached.
- php-soap: Используется для написания SOAP-серверов и клиентов.
- php-ldap: Lightweight Directory Access Protocol, используемый для доступа к информации каталогов и управления ею.
- php-pdo: PHP Data Objects, уровень доступа к базам данных, обеспечивающий единый метод доступа к различным базам данных.
Имейте в виду, что в зависимости от установленной версии PHP названия некоторых пакетов могут измениться или перестать поддерживаться. Хотя это случается редко, важно иметь это в виду.
Для просмотра модулей, загруженных в любой момент времени, можно воспользоваться следующей командой.
1 | php -m |
Поскольку количество установленных модулей может вызвать значительные проблемы с производительностью, рекомендуется регулярно отслеживать и удалять все ненужные модули.
Для тех, кто хочет установить ветку разработки, можно воспользоваться следующей командой.
1 | sudo dnf install php-devel |
Если вы хотите добавить дополнительные инструменты разработки, например, средства отладки, воспользуйтесь следующей командой.
1 | sudo dnf install php-xdebug php-pcov |
Важно отметить, что установка этой версии приведет к появлению множества зависимостей, и не рекомендуется делать это, если у вас нет особой необходимости в этом при разработке PHP или каких-либо специальных требований.
Настройка пользователя PHP-FPM Nginx в Rocky Linux
Что касается установки PHP-FPM в таких дистрибутивах, как Debian/Ubuntu, то в них обычно используется пользователь "www-data". Однако для инсталляций на семействе RHEL это не является стандартом. Служба PHP-FPM по умолчанию работает под пользователем "Apache", что не подходит для использования Nginx. Поэтому необходимо произвести настройку.
Для начала откройте следующий конфигурационный файл (www.conf).
1 | sudo nano /etc/php-fpm.d/www.conf |
Далее замените пользователя и группу (Apache) на пользователя и группу (Nginx).
Пример из:
Пример:
Для сохранения нажмите (CTRL+O), затем выход (CTRL+X).
Теперь необходимо перезапустить службу PHP-FPM.
1 | sudo systemctl restart php-fpm |
Пример кода блока сервера Nginx PHP-FPM
Для того чтобы Nginx мог работать с файлами PHP, серверный блок требует определенной конфигурации, как показано в примере ниже. Этот пример применим ко всем блокам server{}, обрабатывающим PHP-файлы, и требует включения параметра "location ~ \.php$".
Пример:
1 2 3 4 5 6 7 | location ~ \.php$ { try_files $uri =404; fastcgi_pass unix:/run/php-fpm/www.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } |
Чтобы убедиться в том, что внесенные в код изменения не привели к возникновению ошибок, выполните следующую команду для проверки Nginx.
1 | sudo nginx -t |
Для завершения внедрения PHP-FPM необходимо перезапустить службу Nginx.
1 | sudo systemctl restart nginx |
Заключение
В статье было рассмотрено, как установить PHP на Rocky Linux, включив репозиторий Remi PHP, установив нужную версию PHP по умолчанию, установив часто используемые расширения и настроив серверный блок Nginx на обработку файлов PHP. При этом необходимо следить за зависимостями и удалять ненужные модули. Очень важно тестировать Nginx на наличие ошибок перед перезапуском службы в будущем, особенно в живой среде.