Sun Java System Web Server 7.0 Update 3 管理員指南

配置虛擬主機環境

虛擬主機環境的用途,在於防止因與數個虛擬伺服器共用 PHP 引擎,所產生的潛在安全性與效能問題。

使用 Web Server 7.0 環境變數,即可指定與連結至每部虛擬伺服器的個別引擎相同的 PHP 二進位檔。您應確定每部虛擬伺服器皆有自己的 php.ini 檔案。


Service fn=responder-fastcgi
        app-path="/path/to/php/php_fcgi"
        bind-path="$(lc($urlhost))"
        req-retry=5
        type="*magnus-internal/fastcgi*"
        app-env="PHPRC=/path/to/users/$(lc($urlhost))/config"
        app-env="PHP_FCGI_CHILDREN=5"
        app-env="PHP_FCGI_MAX_REQUEST=200"
        min-procs=1
        restart-interval=10
        bucket="php-bucket"
        rlimit_cpu=60

Web 伺服器 tmp 目錄此時會顯示 Unix 網域通訊端,這些通訊端的名稱由來是處理 PHP 請求的個別虛擬伺服器。對所有使用者使用單一 PHP FastCGI 二進位檔,即會出現此情形。因此,所有以此單一二進位檔編譯的必要外掛程式,都將由該二進位檔進行處理掌控。上述問題的解決方案就是確定每位使用者皆有符合其本身需求的 PHP 二進位檔副本。


Service fn=responder-fastcgi
        app-path="/path/to/users/$(lc($urlhost))/php_fcgi"
        bind-path="$(lc($urlhost))"
        req-retry=5
        type="*magnus-internal/fastcgi*"
        app-env="PHPRC=/path/to/users/$(lc($urlhost))/config"
        app-env="PHP_FCGI_CHILDREN=5"
        app-env="PHP_FCGI_MAX_REQUEST=200"
        min-procs=1
        restart-interval=10
        bucket="php-bucket"
        rlimit_cpu=60

您也可以控制 URI 空間的結構,而讓每個應用程式使用不同的 PHP 二進位檔。

例如:

若 URI 空間的結構如下:

/app/foo.php

其中,/app 是整體應用程式的名稱,且在以 PHP 檔案結尾的 URI 結構中一律為第一個目錄。


<If uri~=^/(\w+)/\w+\.php$>
						Service fn=responder-fastcgi
						app-path="/path/to/users/$(lc($urlhost))/$1/php_fcgi"
						bind-path="$(lc($urlhost))_$1"
						req-retry=5
						type=+magnus-internal/fastcgi*"
						app-env="PHPRC=/path/to/users/$(lc($urlhost))/config"
						app-env="PHP_FCGI_CHILDREN=5"
						app-env="PHP_FCGI_MAX_REQUEST=200"
						min-procs=1
						restart-interval=10
						bucket="php-bucket"
						rlimit_cpu=60
</If>

這會呼叫一個特別建置的 PHP FastCGI 二進位檔,而該檔案會連結至具有唯一名稱的 Unix 網域通訊端。因此,這不會影響到其他 PHP 應用程式或虛擬伺服器。但是,由於此程序伴隨著許多 PHP 程序,因此會耗用大量的記憶體。