Php
用於多個虛擬主機的單個 fastcgi/php-cgi 伺服器?
我目前正在使用以下設置為客戶託管網站:
- 阿帕奇 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 個虛擬主機沒有問題,設置與上述一致。