最後更新:2016-06-01
來源:互聯網
上載者:User
關鍵字
支援
語言
安裝
PHP
設定
FastCGI
SEMFI
ZeusWebServer
前言 Zeus是一個運行於Unix下的非常優秀的Web Server,而PHP則是Unix下一個非常優秀的後台指令碼語言。 這兩個產品都是為非常喜歡的產品。為什麼要寫這樣的一個Howto呢?是因為有大量的網站指令碼是使用PHP開發的, 而這些程式運行在Zeus下也是一個非常好的選擇。寫這份文檔的目的在於能讓大家的PHP系統良好的運行於Zeus伺服器上。 很早的時候我寫過一份整合Zeus和PHP的文章,它主要是講如何將PHP以FastCGI的本地調用方式來運行於Zeus中的, 本份Howto主要是來講如何讓PHP運行於Remote Responders方式下。因為這樣會比以local方式有更高的可擴充性和運行效率。
準備工作 首先你應該Zeus安裝完成,也不會過多的講如何安裝和配置Zeus伺服器本身,因為它的安裝和配置實在是太簡單了。 如果有可能,最好將ports使用cvsup來升級一下。 對於PHP依賴的相關軟體如果能提前裝,則從ports中安裝好。如MySQL、GD等。 安裝fastcgi 注意,如果你安裝的PHP的版本會低於4.3.0哪麼你才需要這步。新的PHP版本已經內建了fastcgi的庫。安裝fastcgi的方法非常的簡單:
root@~$cd /usr/ports/www/fcgi/ root@/usr/ports/www/fcgi$make;make install;make clean 編譯完成後我們可以在/usr/local/lib目錄中看到有libfcgi.a檔案,同時在/usr/local/include目錄中會有fastcgi的所有標頭檔。
編譯PHP 編譯PHP可以使用通常的PHP編譯選項,下面是我使用的一個配置:
./configure --prefix=/usr/local/php --enable-fastcgi --with-mysql=/usr/local 需要注意的是在PHP 4.3.0以上版本是使用的 --enable-fastcgi 選項,而PHP 4.3.0以前的版本應使用--with-fastcgi參數。 接著就是安裝PHP到系統中: make make install 編譯完成後,我們來測試一下安裝的php是能正確運行:
root@~$cd /usr/local/php/bin/ root@/usr/local/php/bin$./php 這時將進入php代碼輸入狀態,輸入
按ctrl-d運行後會見到php返回的資訊則為正確。
配置FastCGI/PHP 配置FastCGI 進入Zeus管理主控台,開啟需要配置的VHost配置。進入 API Support 中的 FastCGI 設定。在其中設定: Enabling Support for FastCGI Programs : Enable 在Configuring FastCGI Remote Responders中設定: Directory name : /usr/local/php/bin/php Location: Machine name: localhost Additional methods supported?:None 如果你的PHP應用不在本機,即使PHP沒有安裝在本機上,哪麼也要設定 Docroot path 參數,它可以不存在於相應的目錄下。 都設定完成後,點擊 Apply 按鈕。 配置PHP解析指向 進入 URL Handling 中的 Handlers 設定。在 Adding a Handler 中設定以下參數:
File Extension : php Specify the path and filename of the handler, relative to the document root : /usr/local/php/bin/php HTTP 404 errors are handled by : The handler 注意,這裡的 Specify the path and filename of the handler, relative to the document root 應和你上一步設定的 Directory name 值相同。 都設定完成後,點擊 Apply 按鈕。 所有的設定完成後使用vhost的commit功能將更 改提交並應用。這樣Zeus就設定好了Fastcgi和PHP的相關參數。
配置FastCGI/PHP啟動 在Zeus的rc.d目錄中建立一個S05php的檔案,內容為:
#!/bin/sh
# Script to start and stop the persistent PHP runner for FastCGI. # Please check paths before use.
# FastCGI PHP binary FPHPBIN=/usr/local/php/bin/php
# Location to place semaphore SEMFILE=/tmp/php.pid PHP_FCGI_CHILDREN=100 PHP_FCGI_MAX_REQUESTS=1000 export PHP_FCGI_CHILDREN export PHP_FCGI_MAX_REQUESTS
# This is Linux - use /proc to increase the local (ephemeral) port range #echo 1024 65000 > /proc/sys/net/ipv4/ip_local_port_range
if [ -z "$ZEUSHOME" ] then cd `dirname $0`/.. ZEUSHOME=`pwd` export ZEUSHOME fi
case "$1" in 'start')
if [ -e $SEMFILE ] then echo FastCGI PHP error: already running.Restart FastCGI PHP now kill `cat $SEMFILE` sleep 5 fi
if [ ! -x $FPHPBIN ] then echo FastCGI PHP error: please check that $FPHPBIN is executable and exists. exit 1 fi
echo Starting FastCGI PHP. $ZEUSHOME/web/bin/fcgirunner --user=65534 --group=65534 --pidfile=$SEMFILE 8002 $FPHPBIN ;;
'stop') if [ -e $SEMFILE ] then echo Stopping FastCGI PHP. kill `cat $SEMFILE` rm $SEMFILE exit 0 fi ;; 'restart') if [ -e $SEMFILE ] then echo Stopping FastCGI PHP. kill `cat $SEMFILE` sleep 5 fi echo Starting FastCGI PHP. $ZEUSHOME/web/bin/fcgirunner --user=65534 --group=65534 --pidfile=$SEMFILE 8002 $FPHPBIN ;; *) echo "usage: $0 {start|stop|restart}" ;;
esac exit 1
在這個指令碼中有以下內容需要視系統情況而 修改:
FPHPBIN=/usr/local/php/bin/php 應設定為php的路徑 SEMFILE=/tmp/php.pid 產生php.pid的路徑,該目錄必須可寫 PHP_FCGI_CHILDREN=100 php進程數目 PHP_FCGI_MAX_REQUESTS=1000 每個php的進程在退出前能夠響應的請求數,用於釋放資源 上面兩個根據硬體設定和網站訪問量設定,預設值是8,500。 一般來說 PHP_FCGI_CHILDREN > 訪問並發最大值+10 PHP_FCGI_MAX_REQUESTS 如果設定過小,訪問量大的網站會因為php進程重起頻繁增加負荷。 #echo 1024 65000 > /proc/sys/net/ipv4/ip_local_port_range 只用於linux --user=65534 --group=65534 為php進程啟動並執行使用者和組,一般設定為nobody使用者和組FreeBSD是65534/65534,Linux是99/99 最後,將S05php檔案設定為可執行檔,並將FastCGI/PHP運行起來:
chmod 755 S05php ./S05php start 一但啟動後就會在ps -ax列表中顯示出PHP_FCGI_CHILDREN+1個php進程。 到你的vhost對應的Docroot目錄中建一個info.php檔案,內容為: phpinfo(); ?> 使用瀏覽器訪問vhost中的info.php檔案,應該就可以看到PHP的info頁面了。
附註 感謝CCF的壇主hunreal寫出的S05php指令碼,它真的非常好用! 如果還有什麼想瞭解的可以到 Zeus PHP支援 頁得到更多的資訊。
注:任何轉載或摘抄請註明文章出處(中文FreeBSD使用者組 http://www.cnfug.org)