Как установить PHP на Rocky Linux 9/8

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

В этом руководстве будут показаны шаги по установке PHP в Rocky Linux 9 или 8 с помощью командной строки. Метод установки предполагает использование репозитория Remi RPM для последних стабильных сборок PHP 8.1, 8.2 и 8.3.

Импорт Remi PHP RPM Repo

Обновите Rocky Linux перед установкой PHP

Начните с обновления вашей системы Rocky Linux, чтобы подготовиться к установке PHP. Откройте терминал и введите:

sudo dnf upgrade --refresh

Импорт репозитория PHP Remi

Настройка репозитория EPEL

EPEL (Дополнительные пакеты для Enterprise Linux) имеет решающее значение для дополнительных пакетов программного обеспечения в Rocky Linux. Ниже приведены два варианта установки EPEL в Rocky Linux для последней версии EL9 или EL8.

Импорт EPEL для Rocky Linux 9

Включение CRB

CRB предоставляет доступ к большему количеству инструментов разработки. Используйте команду:

sudo dnf config-manager --set-enabled crb
Установите репозитории EPEL

Чтобы получить последние версии EPEL для Rocky Linux 9 используйте команду:

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

Включите репозиторий Remi, разработанный для EL 9:

sudo dnf install dnf-utils http://rpms.remirepo.net/enterprise/remi-release-9.rpm -y

Импорт EPEL для Rocky Linux 8

Включите репозиторий PowerTools

PowerTools необходим для инструментов разработки PHP.

sudo dnf config-manager --set-enabled powertools
Включить EPEL для Rocky Linux 8

Установите репозитории EPEL для Rocky Linux 8:

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

С установленным EPEL импортируйте Remi RPM, содержащий PHP для EL 8:

sudo dnf install dnf-utils http://rpms.remirepo.net/enterprise/remi-release-8.rpm -y

Включите PHP (8.x) из репозитория Remi

Проверка версий PHP

Начните с подтверждения доступных версий PHP в репозитории Remi. Это гарантирует, что у вас будет доступ к желаемой версии PHP.

Выполните в терминале команду:

dnf module list php

При появлении запроса импортируйте ключ GPG для репозитория Remi, введя (Y).

PHP в Rocky Linux
Пример перечисления модулей PHP в Rocky Linux

Выбор вашей версии PHP

Включить PHP 8.3

Чтобы установить PHP 8.3, стабильную и последнюю версию, используйте команду:

sudo dnf module enable php:remi-8.3 -y

Включить PHP 8.2

Для PHP 8.2, подходит для приложений, требующих этой конкретной версии:

sudo dnf module enable php:remi-8.2 -y

Включить PHP 8.1

Включить PHP 8.1, подходящий для совместимости с определенными приложениями:

sudo dnf module enable php:remi-8.1 -y

Завершение установки PHP

Установка PHP для поддержки Apache или Nginx

После включения репозитория Remi PHP вы можете установить PHP, адаптированный к потребностям вашего веб-сервера, либо Apache, либо Nginx.

Apache (httpd) Установка PHP

sudo dnf install php php-cli -y

Установка Nginx PHP

sudo dnf install php-fpm php-cli -y

Проверка установки PHP

Проверьте установку PHP, запустив:

php -v

Установка расширений PHP

Устанавливайте необходимые расширения PHP в соответствии с потребностями вашего проекта. Избегайте установки всех расширений для поддержания оптимальной производительности и безопасности.

Стандартная установка

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

Упрощенная установка

Для компактной установки выполните команду:

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: работа с графикой, полезное для создания файлов изображений и манипулирования ими.
  • 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) для кодирования и декодирования данных JSON.
  • php-readline: позволяет считывать строку данных с терминала.
  • php-memcached: Обеспечивает быстрое распределенное кэширование объектов памяти.
  • php-redis: расширение PHP для взаимодействия с Redis.
  • php-mbstring: многобайтовая строка для обработки строк, отличных от ASCII.
  • php-apcu: APC User Cache, расширение для кэширования пользовательского пространства на основе APC.
  • php-xml: XML-анализатор для разбора XML-документов.
  • php-dom: объектная модель документа, позволяющая манипулировать XML-документами объектно-ориентированным способом.
  • php-memcache: Предоставляет удобный процедурный и объектно-ориентированный интерфейс для memcached.
  • php-soap: Используется для написания серверов и клиентов SOAP.
  • php-ldap: облегченный протокол доступа к каталогам, используемый для доступа к информации каталога и управления ею.
  • php-pdo: объекты данных PHP, уровень доступа к базе данных, обеспечивающий единый метод доступа к нескольким базам данных.

Вы можете использовать следующую команду для просмотра загруженных модулей в любое время.

php -m

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

Установка инструментов разработки PHP

Для целей разработки установите ветку разработки PHP и инструменты отладки:

Ветка разработки PHP

sudo dnf install php-devel

Инструменты отладки PHP

sudo dnf install php-xdebug php-pcov

Важно отметить, что установка этой версии приведет к появлению множества зависимостей, и это не рекомендуется делать, если у вас нет особой необходимости в этом при разработке PHP или каких-либо особых требований.

Настройка PHP-пользователя FPM Nginx на Rocky Linux

Настройка PHP-FPM для Nginx

Дистрибутивы на основе RHEL, такие как Rocky Linux, по умолчанию используют пользователя “Apache” для PHP-FPM, что не подходит для настроек Nginx. Важно изменить это для оптимальной работы с Nginx.

Редактирование конфигурации PHP-FPM

Открытие файла конфигурации

Получите доступ к www.conf файлу для редактирования:

sudo nano /etc/php-fpm.d/www.conf
Измените настройки пользователей и групп

Измените пользователя и группу Apache на Nginx в файле.

PHP в Rocky Linux
Пример поиска имени пользователя Apache в файле конфигурации PHP-FPM в Rocky Linux

Модификация будет выглядеть так:

PHP в Rocky Linux
Пример изменения имени пользователя на Nginx для PHP-FPM в Rocky Linux

Сохраните изменения, нажав (CTRL + O), затем завершите работу с помощью (CTRL + X).

Перезапуск PHP-службы FPM

После изменения конфигурации перезапустите PHP-FPM, чтобы применить изменения:

sudo systemctl restart php-fpm

Пример блочного кода сервера Nginx PHP-FPM

Настройка Nginx для обработки PHP

Чтобы Nginx мог обрабатывать файлы PHP, серверный блок должен быть настроен правильно. Следующий пример демонстрирует необходимые настройки в server{} блоке для обработки файлов PHP.

Nginx PHP-конфигурация FPM
    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

После обновления конфигурации проверьте ее, чтобы убедиться в отсутствии синтаксических ошибок.

sudo nginx -t

Если ошибок нет, то результат должен подтвердить правильность конфигурации:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Перезапуск службы Nginx

Чтобы применить изменения, перезапустите службу Nginx:

sudo systemctl restart nginx

Этот перезапуск необходим для внесения изменений и для того, чтобы Nginx начал обрабатывать PHP-файлы с новой конфигурацией.

Заключение

Хорошо, на этом наше путешествие заканчивается! Мы успешно настроили PHP на Rocky Linux, настроили его для Apache или Nginx и настроили PHP-FPM для оптимальной производительности. Помните, что регулярная проверка ваших модулей и конфигураций PHP обеспечивает бесперебойную работу. И не забывайте перезапускать свои службы после любых изменений.