====== Установка PHP на FedoraServer ======
===== Подготовка =====
==== Обновление Fedora Linux ====
Перед установкой **PHP** и его расширений рекомендуется обновить систему. Следующая команда позволит выполнить обновление:
# dbf update
==== Импорт PHP репозитория Remi ====
Установка **PHP** репозитория **Remi** на системы **Fedora** это простой процесс, поскольку для этого **не требуется EPEL**, как в случае с RHEL и его производными. Для импорта запустите следующую команду, в зависимости от вашей версии **Fedora**.
=== Fedora 38 ===
sudo dnf install http://rpms.remirepo.net/fedora/remi-release-38.rpm -y
=== Fedora 37 ===
sudo dnf install http://rpms.remirepo.net/fedora/remi-release-37.rpm -y
=== Fedora 36 ===
sudo dnf install http://rpms.remirepo.net/fedora/remi-release-36.rpm -y
=== Fedora 35 ===
sudo dnf install http://rpms.remirepo.net/fedora/remi-release-35.rpm -y
После установки крайне важно проверить, что она прошла успешно:
dnf repolist | grep remi
Пример вывода:
[joshua@fedora-linux ~]$ dnf repolist | grep remi
remi Remi's RPM repository - Fedora 37 - x86_64
remi-modular Remi's Modular repository - Fedora 37 - x86_64
==== Включение репозитория PHP Remi ====
Перед установкой различных версий **PHP** хорошей идеей будет проверить доступные в репозитории версии. Это позволит принять более взвешенное и обоснованное решение о установке необходимой версии пакета.
dnf module list php
Вам может быть предложено импортировать ключ GPG для репозитория Remi, чтобы продолжить установку.
Пример вывода:
# dnf module list php
Последняя проверка окончания срока действия метаданных: 2:23:52 назад, Ср 28 июн 2023 07:16:28.
Remi's Modular repository - Fedora 38 - x86_64
Name Stream Profiles Summary
php remi-7.4 common [d], devel, minimal PHP scripting language
php remi-8.0 common [d], devel, minimal PHP scripting language
php remi-8.1 common [d], devel, minimal PHP scripting language
php remi-8.2 common [d], devel, minimal PHP scripting language
=== Включение PHP 8.2 on Fedora ===
sudo dnf module enable php:remi-8.2 -y
=== Включение PHP 8.1 on Fedora ===
sudo dnf module enable php:remi-8.1 -y
=== Включение PHP 8.0 on Fedora ===
sudo dnf module enable php:remi-8.0 -y
=== Включение PHP 7.4 on Fedora ===
sudo dnf module enable php:remi-7.4 -y
===== Установка PHP =====
==== Apache (httpd) PHP ====
sudo dnf install php php-cli -y
==== Nginx PHP ====
sudo dnf install php-fpm php-cli -y
Для того чтобы убедиться что все прошло успешно можно выполнить следующую команду:
php -v
==== Установка расширений ====
Если вы хотите, вы можете запустить приведенную ниже команду, чтобы получить наиболее часто используемые расширения для выбранной вами версии PHP. Важно отметить, что вам следует удалить все расширения, которые, как вы знаете, не понадобятся для вашего конкретного случая использования.
# 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-{extension}**.
# dnf install php-{cli,fpm,curl,mysqlnd,gd,opcache,zip,intl,common,bcmath,imagick,xmlrpc,json,readline,memcached,redis,mbstring,apcu,xml,dom,redis,memcached,memcache}
Приведенную ниже команду можно выполнить в любое время для просмотра загруженных в данный момент модулей.
php -m
===== Настройка пользователя Nginx для PHP-FPM =====
При установке **PHP-FPM** в дистрибутивах Linux, таких как **Debian** или **Ubuntu**, обычно используется пользователь **www-data**. Однако это не относится к установкам семейства **RHEL**. Служба **PHP-FPM** по умолчанию настроена для запуска под пользователем **Apache**, что несовместимо с **Nginx**. В результате конфигурация должна быть скорректирована для обеспечения правильного использования.
Сначала необходимо открыть конфигурационный файл **www.conf** использую следующую команду:
# vim /etc/php-fpm.d/www.conf
В конфигурационном файле необходимо заменить пользователя и группу **Apache** на **Nginx**.
Сохраните файл и закройте его.
После изменения для применения настроек выполните команду:
# systemctl restart php-fpm
===== Пример блока кода PHP-FPM в Nginx =====
Чтобы **Nginx** мог обрабатывать PHP-файлы, серверный блок должен иметь определенную конфигурацию, как показано в примере ниже. Этот пример применим ко всем блокам **Server{}**, которые обрабатывают PHP-файлы, и важно включить **location ~ .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 -t
Пример вывода:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Чтобы завершить настройку **PHP-FPM**, необходимо перезапустить службу **Nginx**:
# systemctl restart nginx