ฉันใช้ CentOS 9 Stream บน VM พยายามตั้งค่าเซิร์ฟเวอร์ apache เพื่อให้สามารถแสดงเนื้อหา php บนเว็บได้ เซิร์ฟเวอร์ทำงานได้ดีเมื่อเป็นแค่ html แต่ฉันได้รับข้อผิดพลาดเหล่านี้ (503 ในเบราว์เซอร์) เมื่อลองใช้กับ php httpd.conf ของฉันเป็นค่าต่ำสุดในการรันเซิร์ฟเวอร์ที่มีโฮสต์เสมือน และสิ่งเดียวที่ฉันเพิ่มคือ SetHandler สำหรับไฟล์ php ฉันไม่คุ้นเคยกับ php มากนัก แต่จากความเข้าใจของฉันสิ่งที่ทำคือเมื่อเซิร์ฟเวอร์ได้รับการร้องขอสำหรับไฟล์ php มันจะเรียกบริการ php-fpm เพื่อจัดการ
ทั้งบริการ httpd และ php-fpm กำลังทำงานอยู่ และฉันตั้งค่า SELinux bool httpd_can_network_connect เป็น 1 เนื่องจากฉันอ่านสิ่งนี้อาจส่งผลให้เป็น 503
/var/log/httpd/error.log พูดว่า:
[proxy:error] [pid 4807:tid 4812] (111)การเชื่อมต่อถูกปฏิเสธ: AH00957: FCGI: พยายามเชื่อมต่อกับ [::]:8000 (*) ล้มเหลว
[proxy_fcgi:error] [pid 4807:tid 4812] [client 192.168.122.1:60494] AH01079: ล้มเหลวในการเชื่อมต่อกับแบ็กเอนด์: (null)
httpd.conf ของฉัน:
ฟัง 80
ฟัง 8080
ผู้ใช้อาปาเช่
อาปาเช่กลุ่ม
รูทเซิร์ฟเวอร์ /etc/httpd
บันทึกข้อผิดพลาด /var/log/httpd/error.log
LoadModule mpm_event_module โมดูล/mod_mpm_event.so
LoadModule systemd_module โมดูล/mod_systemd.so
LoadModule unixd_module โมดูล/mod_unixd.so
LoadModule authz_core_module โมดูล/mod_authz_core.so
LoadModule dir_module โมดูล/mod_dir.so
LoadModule proxy_module โมดูล/mod_proxy.so
LoadModule proxy_fcgi_module โมดูล/mod_proxy_fcgi.so
<ไดเร็กทอรี />
ต้องการปฏิเสธทั้งหมด
</ไดเรกทอรี>
<ไดเร็กทอรี /var/www/html>
ต้องได้รับอนุญาตทั้งหมด
</ไดเรกทอรี>
<ไดเรกทอรี /srv/www>
ต้องได้รับอนุญาตทั้งหมด
</ไดเรกทอรี>
<โฮสต์เสมือน 192.168.122.60:80>
รูทเอกสาร "/var/www/html"
DirectoryIndex index.html
</เวอร์ชวลโฮสต์>
<โฮสต์เสมือน 192.168.122.60:8080>
รากเอกสาร "/srv/www"
DirectoryIndex index.php
<FilesMatch \.php$>
SetHandler "พร็อกซี: fcgi:/run/php-fpm/www.sock"
</FilesMatch>
</เวอร์ชวลโฮสต์>
และ www.conf ของฉัน:
ฟัง = /run/php-fpm/www.sock
Listen.owner = อาปาเช่
Listen.group = อาปาเช่
Listen.allowed_clients = 127.0.0.1
สารละลาย:
เนื่องจาก AlexD ชี้ให้เห็นว่าปัญหาคือ apache พยายามเชื่อมต่อผ่าน localhost แทนซ็อกเก็ต
ฉันทำให้มันใช้งานได้โดยเปลี่ยนไฟล์ปรับแต่งของฉันเพื่อฟัง 127.0.0.1:9000
ถ้าฉันต้องการใช้ซ็อกเก็ตยูนิกซ์ฉันต้องเปลี่ยน 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/