Apache-2.2
在 cPanel WHM 中切換到 fcgi 時出現 500 錯誤
我正在嘗試從 CentOS 5.7 x64 伺服器上的 DSO 切換到 fcgi。我按照 cPanel 文件的建議在 cPanel 中執行了此操作。
立即,我在嘗試訪問該站點時開始收到 500 個內部伺服器錯誤。
檢查我的 apache 錯誤日誌後,我看到以下內容:
[Wed Feb 01 19:00:40 2012] [notice] Apache/2.2.21 (Unix) mod_ssl/2.2.21 OpenSSL/0.9.8e-fips-rhel5 mod_bwlimited/1.4 mod_fcgid/2.3.6 configured -- resuming normal operations [Wed Feb 01 19:00:41 2012] [notice] caught SIGTERM, shutting down [Wed Feb 01 19:00:42 2012] [notice] suEXEC mechanism enabled (wrapper: /usr/local/apache/bin/suexec) [Wed Feb 01 19:00:42 2012] [notice] Apache/2.2.21 (Unix) mod_ssl/2.2.21 OpenSSL/0.9.8e-fips-rhel5 mod_bwlimited/1.4 mod_fcgid/2.3.6 configured -- resuming normal operations [Wed Feb 01 19:04:42 2012] [notice] Graceful restart requested, doing restart [Wed Feb 01 19:04:42 2012] [notice] Apache/2.2.21 (Unix) mod_ssl/2.2.21 OpenSSL/0.9.8e-fips-rhel5 mod_bwlimited/1.4 mod_fcgid/2.3.6 configured -- resuming normal operations
切換回 DSO 會使一切恢復正常。
我如何讓它與 fcgi 一起工作?
通過 WHM 預設安裝的 FastCGI 安裝後未準備好使用。他們很愚蠢,甚至是危險的邊緣,不告訴你這一點,因為它似乎會像你以這種方式安裝的幾乎所有其他東西一樣自動工作。
原因很簡單——WHM 安裝過程沒有創建 FastCGI 配置文件。這給 FastCGI 留下了愚蠢/危險的預設設置,這會導致很多 500 錯誤,並且單個使用者可能會通過執行帶有一些程式碼錯誤的 PHP 文件或獲得大量流量而使整個伺服器崩潰。
無論如何,解決方案也很簡單。編輯**/etc/httpd/conf/php.conf**並添加:
MaxRequestsPerProcess 1000 FcgidMaxProcesses 200 FcgidProcessLifeTime 7200 MaxProcessCount 500 FcgidIOTimeout 400 FcgidIdleTimeout 600 FcgidIdleScanInterval 90 FcgidBusyTimeout 300 FcgidBusyScanInterval 80 ErrorScanInterval 3 ZombieScanInterval 3 DefaultMinClassProcessCount 0 DefaultMaxClassProcessCount 3 MaxRequestLen 20468982
您可以搜尋每個設置以更好地了解它們並找到適合您伺服器的值,但即使只是複制上面的內容也比使用沒有配置文件的預設設置要好得多。
PS。不幸的是,每次更新 Apache、PHP 或 MySQL 時都會重置此文件,因此請保留每次更新後恢復的備份。