Tôi đang sử dụng CentOS 9 Stream trên máy ảo, đang cố gắng thiết lập máy chủ apache của mình để có thể hiển thị nội dung php trên web. Máy chủ hoạt động tốt khi chỉ là html, nhưng tôi gặp các lỗi này (503 trong trình duyệt) khi thử với php. httpd.conf của tôi về cơ bản là mức tối thiểu để chạy một máy chủ với các máy chủ ảo và thứ duy nhất tôi đã thêm là SetHandler cho các tệp php. Tôi không rành lắm về php, nhưng theo hiểu biết của tôi thì nó làm gì khi máy chủ nhận được yêu cầu đối với tệp php, nó sẽ gọi dịch vụ php-fpm để xử lý nó.
Cả hai dịch vụ httpd và php-fpm đều đang chạy và tôi đặt SELinux bool httpd_can_network_connect thành 1 khi tôi đọc điều này có thể dẫn đến lỗi 503.
/var/log/httpd/error.log nói:
[proxy:error] [pid 4807:tid 4812] (111)Kết nối bị từ chối: AH00957: FCGI: cố gắng kết nối với [::]:8000 (*) không thành công
[proxy_fcgi:error] [pid 4807:tid 4812] [client 192.168.122.1:60494] AH01079: không thể kết nối với phụ trợ: (null)
httpd.conf của tôi:
nghe 80
Nghe 8080
người dùng apache
Nhóm apache
ServerRoot /etc/httpd
ErrorLog /var/log/httpd/error.log
LoadModule mpm_event_module modules/mod_mpm_event.so
LoadModule systemd_module modules/mod_systemd.so
LoadModule mô-đun unixd_module/mod_unixd.so
LoadModule authz_core_module modules/mod_authz_core.so
LoadModule mô-đun dir_module/mod_dir.so
LoadModule proxy_module mô-đun/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
<Thư mục />
Yêu cầu tất cả bị từ chối
</Thư mục>
<Thư mục /var/www/html>
Yêu cầu tất cả cấp
</Thư mục>
<Thư mục /srv/www>
Yêu cầu tất cả cấp
</Thư mục>
<Máy chủ ảo 192.168.122.60:80>
DocumentRoot "/var/www/html"
Directory Index index.html
</Máy chủ ảo>
<Máy chủ ảo 192.168.122.60:8080>
Tài liệuRoot "/srv/www"
Directory Index index.php
<FilesMatch \.php$>
SetHandler "proxy:fcgi:/run/php-fpm/www.sock"
</FilesMatch>
</Máy chủ ảo>
và www.conf của tôi:
nghe = /run/php-fpm/www.sock
lắng nghe.chủ sở hữu = apache
nghe.group = apache
lắng nghe.allowed_clients = 127.0.0.1
GIẢI PHÁP:
Như AlexD đã chỉ ra vấn đề là apache đang cố kết nối qua localhost thay vì socket.
Tôi có thể làm cho nó hoạt động bằng cách thay đổi tệp cấu hình của mình để nghe trên 127.0.0.1:9000
Nếu tôi muốn sử dụng ổ cắm unix, tôi phải thay đổi httpd.conf như thế này:
<Proxy "unix:/run/php-fpm/www.sock|fcgi://php-fpm">
ProxySet disablereuse=off
</Proxy>
<FilesMatch \.php$>
SetHandler proxy:fcgi://php-fpm
</FilesMatch>
Tìm thấy cấu hình này ở đây: https://tecadmin.net/install-Apache-php-fpm-centos-8/