Php

用於多個虛擬主機的單個 fastcgi/php-cgi 伺服器?

  • November 10, 2010

我目前正在使用以下設置為客戶託管網站:

  • 阿帕奇 2.2.16
  • mod_fastcgi 2.4.7
  • php 5.3.3

Apache 使用 worker MPM 並通過動態 FastCGI 配置為 PHP 提供服務:

FastCgiSuexec /usr/sbin/suexec
FastCgiConfig -singleThreshold 0 -pass-header 授權 -idle-timeout 3600
SuexecUserGroup 使用者組
動作應用程序/x-httpd-fastphp /cgi-bin/php.fcgi
AddType application/x-httpd-fastphp .php

這很好用,但是這會為每個 VirtualHost 創建一個 php-cgi 實例(即使給定帳戶的 cgi-bin 目錄在物理上是相同的),所以如果客戶端有幾個子域,它開始累加,使伺服器挨餓並丟棄它。

所以這給我帶來了一個實際的問題,是否可以通過單個 php-cgi 實例為一個帳戶提供所有 php 請求?最好同時維護 suexec 位以防止客戶端讀取其目錄之外的文件。

如果我可以添加個人意見..

使用 Nginx,它更快,更簡單,更容易做你想做的事..(並且使用​​更少的記憶體)

這是我的個人喜好.. :D

https://calomel.org/nginx.html是一個很好的詳細範例

每個虛擬主機都有 fcgid 配置嗎?(除了全域的fcgid config),也就是標籤裡面?

我只是認為這可能是問題的一個可能原因,可以通過為所有網路帳戶通用的某些文件系統路徑添加 fcgid 配置來解決,例如在 /etc/apache2/ sites-enabled/000-default,如果使用 Ubuntu):

NameVirtualHost SOME-IP-ADDRESS:80

<Directory /some-path/webaccounts/>
   AddHandler fcgid-script .php
   FCGIWrapper /usr/lib/cgi-bin/php5 .php
</Directory>

<VirtualHost SOME-IP-ADDRESS:80>
...

至少我們在 2Gb RAM 機器(Ubuntu 8.04)上使用 fcgid 和大約 20-30 個虛擬主機沒有問題,設置與上述一致。

引用自:https://serverfault.com/questions/200507