Как установить PHP на CentOS Stream 9

PHP — это широко используемый серверный скриптовый язык, предназначенный для веб-разработки. Он особенно популярен для создания динамичных и интерактивных веб-сайтов. Установка последних версий PHP, таких как 8.3, 8.2 или 8.1, гарантирует доступ к новейшим функциям, улучшениям производительности и исправлениям безопасности. В CentOS Stream 9 вы можете легко установить эти версии, используя репозиторий Remi RPM, который хорошо известен тем, что предоставляет актуальные пакеты PHP.

Это руководство покажет процесс включения репозитория Remi и установки последних сборок PHP в CentOS Stream 9.

Импорт Remi PHP RPM на CentOS

Обновление CentOS Stream перед установкой PHP

Начинаем с обновления вашей системы CentOS Stream, чтобы убедиться, что все существующие пакеты обновлены. Этот шаг необходим для стабильности и безопасности системы.

Откройте свой терминал и выполните следующую команду для обновления вашей системы:

sudo dnf upgrade --refresh

Эта команда обновляет вашу базу данных пакетов и обновляет все установленные пакеты до их последних доступных версий.

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

Репозиторий Remi PHP — это сторонний репозиторий, предлагающий последние версии PHP. Перед добавлением репозитория Remi необходимо установить репозиторий EPEL, который предоставляет дополнительные пакеты для Enterprise Linux.

Рекомендуется включить репозиторий CodeReady Linux Builder (CRB), хотя это необязательно. Он предоставляет дополнительные инструменты и библиотеки разработчика. Включите CRB с помощью команды:

sudo dnf config-manager --set-enabled crb

После включения CRB установите репозиторий EPEL для EL9 с помощью команды:

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 PHP для EL9:

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

Включение репозитория PHP Remi в CentOS Stream

Список доступных модулей PHP

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

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

dnf module list php

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

Список модулей PHP в CentOS Stream из репозитория Remi

Импорт GPG-ключа для репозитория Remi

При появлении запроса вы должны подтвердить импорт GPG-ключа для репозитория Remi. Этот шаг нужен по соображениям безопасности, поскольку он проверяет подлинность пакетов, которые вы собираетесь установить. Введите ‘Y’, когда вас попросят продолжить импорт.

Активация желаемой версии PHP

После подтверждения доступных версий PHP вы можете включить конкретную версию, соответствующую вашим потребностям. Желательно выбрать стабильную и хорошо поддерживаемую версию PHP для ваших проектов.

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

sudo dnf module enable php:remi-8.3 -y
sudo dnf module enable php:remi-8.2 -y
sudo dnf module enable php:remi-8.1 -y

Каждая команда активирует другую версию PHP из репозитория Remi. Выберите команду, соответствующую версии, которую вы хотите установить. Флаг ‘-y’ в этих командах указывает на автоматическое подтверждение установки, упрощая процесс.

Установка PHP 8.3, 8.2 или 8.1 в CentOS Stream

Выбор веб-сервера для установки PHP

Выбор подходящего веб-сервера является ключевым шагом в настройке PHP. CentOS Stream поддерживает как Apache, так и Nginx, для каждого из которых требуются разные пакеты PHP.

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

Для тех, кто использует Apache в качестве веб-сервера, следующая команда устанавливает PHP вместе с интерфейсом командной строки PHP (CLI), который необходим для запуска PHP-скриптов из командной строки:

sudo dnf install php php-cli -y

Установка Nginx PHP

Если вы используете Nginx, вам необходимо установить PHP FastCGI Process Manager (FPM) вместе с PHP CLI. PHP-FPM — это альтернативная реализация PHP FastCGI, которая очень эффективна для сайтов с интенсивным трафиком:

sudo dnf install php-fpm php-cli -y

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

После установки важно убедиться, что PHP установлен правильно. Выполните следующую команду, чтобы проверить установленную версию PHP:

php -v

Эта команда отображает текущую версию PHP, подтверждая успешную установку.

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

Для улучшения функциональности PHP может потребоваться установка дополнительных расширений. Приведенная ниже команда устанавливает часто используемые расширения PHP, которые необходимы для различных платформ CMS и потребностей разработки:

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

Рекомендуется просмотреть и исключить те расширения, которые не являются необходимыми для вашей установки.

Просмотр загруженных модулей PHP

Чтобы проверить загруженные в данный момент модули PHP, выполните:

php -m

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

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

Для конкретных требований к разработке вам может понадобиться ветка PHP development. Установите ее с помощью:

sudo dnf install php-devel

Примечание: Эта установка вводит несколько зависимостей. Устанавливайте ветку только в том случае, если в этом есть особая потребность.

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

Для расширенных функций разработки, включая отладку, установите дополнительные инструменты с помощью команды:

sudo dnf install php-xdebug php-pcov

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

Настройка пользователя Nginx для PHP-FPM в CentOS Stream

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

В CentOS Stream для PHP-FPM по умолчанию используется сервер ‘Apache’, что несовместимо с настройками Nginx. Чтобы оптимизировать PHP-FPM для Nginx, необходимо изменить конфигурацию.

Доступ к конфигурации PHP-FPM

Начните с открытия файла конфигурации PHP-FPM. Этот файл содержит настройки, специфичные для взаимодействия PHP-FPM с вашим веб-сервером. Используйте следующую команду для редактирования www.conf файла:

sudo nano /etc/php-fpm.d/www.conf

Эта команда запускает текстовый редактор Nano с файлом конфигурации PHP-FPM.

Изменение настроек пользователя и группы

В файле конфигурации найдите строки, указывающие пользователя и группу. По умолчанию для них задано значение ‘Apache’. Измените пользователя и группу на ‘Nginx’, чтобы согласовать службу PHP-FPM с Nginx:

; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
; will be used.
; RPM: apache Choosed to be able to access some dir as httpd
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx

Вот примеры:

Пример поиска пользователя Apache в конфигурации PHP-FPM на CentOS Stream
Пример перехода на Nginx от пользователя Apache для PHP-FPM в CentOS Stream

Сохранение и выход из файла конфигурации

После внесения изменений сохраните файл, нажав CTRL + O, а затем завершите работу с помощью CTRL + X. Это действие сохраняет изменения и закрывает редактор Nano.

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

Чтобы применить изменения, перезапустите службу PHP-FPM с помощью команды:

sudo systemctl restart php-fpm

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

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

Чтобы включить обработку PHP в Nginx в CentOS Stream, необходимо изменить блок в файле конфигурации Nginx. Следующий пример демонстрирует необходимую конфигурацию для обработки файлов PHP. Для этой настройки требуется указать блок расположения PHP.

    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 корректно обрабатывает PHP-файлы, перенаправляя их в PHP-FPM. Вот краткая информация:

  • location ~ .php $: Эта директива предписывает Nginx применять следующие правила к любому файлу, заканчивающемуся на .php. Тильда ~ указывает, что это соответствие регулярному выражению.
  • try_files $uri = 404: в этой строке проверяется, существует ли PHP-файл с указанным URI. Если этого не происходит, Nginx возвращает ошибку 404. Это мера безопасности для предотвращения несанкционированного выполнения скрипта.
  • fastcgi_pass unix:/run/php-fpm/www.sock;: Эта директива определяет сокет, который прослушивает служба PHP-FPM. В этом случае Nginx передает PHP-запросы процессу PHP-FPM через сокет /run/php-fpm/www.sock.
  • fastcgi_index index.php ;: Тут index.php устанавливается в качестве скрипта по умолчанию, который будет выполняться при обращении к каталогу.
  • fastcgi_param SCRIPT_FILENAME $document_root $fastcgi_script_name;: В этой строке задается параметр SCRIPT_FILENAME, который необходим PHP-FPM для поиска файла сценария в файловой системе. Он объединяет корневой каталог документа и имя скрипта.
  • include fastcgi_params;: Сюда входят параметры FastCGI по умолчанию, предоставляемые Nginx. Это стандартные настройки, необходимые для корректной работы PHP-FPM.

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

Проверка конфигурации Nginx

После обновления этого блока проверьте конфигурацию 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

Чтобы применить изменения конфигурации PHP-FPM, перезапустите службу Nginx командой:

sudo systemctl restart nginx

На этом всё, настройки применены, ваша система готова к работе.

Заключение

Устанавливая PHP через репозиторий Remi RPM в CentOS Stream 9, вы гарантируете, что ваша система оснащена последними стабильными версиями PHP, включая 8.3, 8.2 и 8.1. Эта настройка обеспечивает вам повышенную производительность, доступ к новейшим функциям и повышенную безопасность ваших веб-приложений. Регулярное обновление PHP через репозиторий Remi обеспечит безопасность вашей системы и будет соответствовать последним разработкам в PHP.