Я использую CentOS 9 Stream на виртуальной машине, пытаясь настроить свой сервер apache, чтобы иметь возможность отображать php-контент в Интернете. Сервер работает нормально, когда это просто html, но я получаю эти ошибки (503 в браузере), когда пытаюсь использовать php. Мой httpd.conf — это, по сути, минимум для запуска сервера с виртуальными хостами, и единственное, что я добавил, — это SetHandler для php-файлов. Я не очень хорошо разбираюсь в php, но насколько я понимаю, что он делает, когда сервер получает запрос на файл php, он вызывает службу php-fpm для его обработки.
Службы httpd и php-fpm работают, и я установил для логического значения SELinux httpd_can_network_connect значение 1, так как я читал, что это может привести к ошибке 503.
/var/log/httpd/error.log говорит:
[прокси:ошибка] [pid 4807:tid 4812] (111)Отказ в подключении: AH00957: FCGI: попытка подключения к [::]:8000 (*) не удалась
[proxy_fcgi: ошибка] [pid 4807:tid 4812] [клиент 192.168.122.1:60494] AH01079: не удалось установить соединение с серверной частью: (ноль)
мой httpd.conf:
Слушай 80
Слушай 8080
Апач пользователя
Групповой апач
Корневой сервер /etc/httpd
Журнал ошибок /var/log/httpd/error.log
LoadModule mpm_event_module modules/mod_mpm_event.so
Модули загрузки systemd_module/mod_systemd.so
Модули загрузки unixd_module modules/mod_unixd.so
Модули загрузки authz_core_module/mod_authz_core.so
LoadModule dir_module modules/mod_dir.so
Модули LoadModule proxy_module/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
<Каталог />
Требовать все отказано
</Каталог>
<Каталог /var/www/html>
Требовать все предоставленные
</Каталог>
<Каталог /srv/www>
Требовать все предоставленные
</Каталог>
<Виртуальный хост 192.168.122.60:80>
DocumentRoot "/var/www/html"
DirectoryIndex index.html
</ виртуальный хост>
<Виртуальный хост 192.168.122.60:8080>
DocumentRoot "/srv/www"
DirectoryIndex index.php
<Соответствие файлов \.php$>
SetHandler "прокси:fcgi:/run/php-fpm/www.sock"
</FilesMatch>
</ виртуальный хост>
и мой www.conf:
слушать = /run/php-fpm/www.sock
слушать.владелец = апач
listen.group = апач
listen.allowed_clients = 127.0.0.1
РЕШЕНИЕ:
Как указал AlexD, проблема заключалась в том, что apache пытался подключиться через локальный хост вместо сокета.
Я смог заставить его работать, либо изменив мои файлы конфигурации для прослушивания на 127.0.0.1:9000
Если я хочу использовать сокет unix, мне нужно изменить httpd.conf следующим образом:
<Proxy "unix:/run/php-fpm/www.sock|fcgi://php-fpm">
ProxySet disablereuse=off
</Proxy>
<FilesMatch \.php$>
SetHandler proxy:fcgi://php-fpm
</FilesMatch>
Нашел вот этот конфиг: https://tecadmin.net/install-apache-php-fpm-centos-8/