[FreeBSD] Lighttpd + PHP + mod_proxy + FastCGI
Jul 10th, 2008 by appleboy 參觀者:1,819Views 機器人:425Views
最近一直在玩 Lighttpd 這一套 web 的 daemon,我覺得這一套還蠻好用的,不像 Apache 掛載這麼多 module 結果吃還蠻大的資源,加上 Apache 預設跑 MPM prefork 所以如果大型網站大概就會掛掉,線上人數一堆,就會快撐不住了,所以用 MPM worker 或者是 MPM Event,然後 Lighttpd 本身還支援 mod_rewrite 的功能,可以參考我之前寫的 [FreeBSD]Lighttpd + php5 + 解決 wordpress Permalinks 問題,不過最近遇到一個很奇怪問題,那就是 Lighttpd 會自己掛點,但是我看 message 跟 error log 底下是:
2008-07-10 09:08:31: (server.c.1258) NOTE: a request for /wp-includes/js/scriptaculous/effects.js?ver=1.8.0 timed out after writing 32991 bytes. We waited 360 seconds. If this a problem increase server.max-write-idle
我發現,這個問題是還好,不過我參考了 gaslin 大神的這一篇lighttpd + FastCGI + PHP 時的問題,裡面提到FastCGI 跑 TCP socket 比較沒問題,但是用 UNIX 的 socket 會比較有問題,那我也參考了 Lighttpd 的 Wiki 上用 Handy External Spawning FastCGI PHP Processes in FreeBSD 這篇所提供的 script,下去跑,最近還在看看結果如何,那大致上作法如下:
1. 把 fastcgi-php.sh 下載到 /usr/local/etc/rc.d/ 裡面
2. 按到底下步驟
# 下面幾乎不用改
#
cd /usr/local/etc/rc.d/
chown root:wheel fastcgi-php.sh
chmod 544 fastcgi-php.sh
mkdir /var/run/fcgiphp
chown www:www /var/run/fcgiphp
3. 設定 /etc/rc.conf
# 基本 rc.conf 設定
#
# 開機啟動
fcgiphp_enable="YES"
# fast-cgi 指令
fcgiphp_bin_path="/usr/local/bin/php-cgi"
fcgiphp_user="www"
fcgiphp_group="www"
fcgiphp_children="10"
fcgiphp_port="8002"
# 如果你要用 tcp socket 的話,那就是把 下面清空
fcgiphp_socket=""
fcgiphp_env="SHELL PATH USER"
fcgiphp_max_requests="500"
fcgiphp_addr="localhost"
4. 啟動 fast-cgi
Starting fcgiphp.
# /usr/local/etc/rc.d/fastcgi-php.sh stop
Stopping fcgiphp.
# /usr/local/etc/rc.d/fastcgi-php.sh restart
Stopping fcgiphp.
Starting fcgiphp.
5. 修改 Lighttpd.conf
( "localhost" =>
(
"host" => "127.0.0.1",
"port" => 8002,
"bin-path" => "/usr/local/bin/php-cgi"
)
)
)
這樣大致上完成了。
介紹一下 Lighttpd 的 mod_proxy 功能,目前把圖片存放到另外一台,然後用 proxy 的功能導過去
設定如下:
accesslog.filename = "/var/log/lighttpd/pic.wu-boy.com-access_log"
proxy.server = ( "" =>
( (
"host" => "140.123.107.54",
"port" => 80
) )
)
}
這樣就可以達到你想要的功能了
相關主題

[...] 換成了 php5-fcgi,只不過我是搭配 Lighttpd,效能方面還不錯,可以參考這篇:[FreeBSD] Lighttpd + PHP + mod_proxy + FastCGI,那因為用 lighttpd 的外掛模組真的太少,不像 apache 支援這麼多 [...]