原貼:http://leo.leoneo.com/article/tech/httpd/lighttpd/20060520
Lighttpd安裝日志
為什麼使用Lighttpd,從性能方面來說,首先考慮單程序與多程序問題,這也是我為什麼不想使用Apache的原因,多程序伺服器的驚群問題, 簡單來說多程序服務(例如Apache)在一個請求發送時候會喚醒所有sleep的程序,但是最終服務的隻有一個,在程序數目很多,請求頻繁的時候這會造 成一個大困擾,系統會忙于切換程序,如果看Top會發現CPU使用在system的比例很高,至于Lighttpd則使用單程序來響應quest,使用 libevent,poll()作為event handler,如果在linux2.4下,還可以選擇rtsig作為event handler。如果不使用大檔案(>4G)支援,lighttpd使用sendfile()來發送檔案,完全的zero-copy,在這方面性能 表現是占優的。同時Lighttpd使用FastCGI來做動态腳本處理,經過實測,在性能表現上也可以接受。
另外就是原先使用Apache的使用者遷移成本會比較少,Lighttpd文法與Apache接近,并且核心功能基本實作,我關注的就是 url_rewrite,PHP(這是當然的),alias,custom_log這幾個子產品,文法接近,并且也同樣支援跟cronolog的管道配合日 志,是以遷移之後功能都可以實作。另外我比較了Apache和Lighttpd的Suexec方案,雖然目前Lighttpd并沒有官方子產品來支援這一特 性,但是就實作的難度來看,跟Apache1.3乃至Apache2+MPM差不多……(如果希望安全的使用Apache2+MPM+PHP,一樣需要 FastCGI模式)
如此,我們就可以開始嘗試了,首先是Lighttpd的下載下傳,然後把PHP安裝為cgi模式,你可能需要安裝Libevent,如果需要url_rewrite支援,還需要pcre,安裝基礎安裝可以看TutorialLighttpdAndPHP。
安裝PHP
./configure /
--prefix=/usr/local/php-cgi /
--enable-fastcgi /
--enable-discard-path /
--enable-force-redirect /
&&make /
&&make install
在php.ini裡邊修改你的設定
cgi.fix_pathinfo = 1 安裝Lighttpd
./configure /
--prefix=/usr/local/lighttpd /
&& make /
&& make install
設定檔案範例 PHP部分
fastcgi.server = ( ".php" =>
(( "socket" => "/tmp/php-fastcgi.socket",
"bin-path" => "/usr/local/php-cgi/bin/php",
"idle-timeout" => 30,
"min-procs" => 1,
"max-procs" => 1,
"bin-environment" => (
"PHP_FCGI_CHILDREN" => "1",
"PHP_FCGI_MAX_REQUESTS" => "10000" ),
"bin-copy-environment" => (
"PATH", "SHELL", "USER" ),
"broken-scriptfilename" => "enable"
))
)
一個簡單的啟動/停止腳本
#!/bin/sh
LIGHTTPD_CONFIG=/usr/local/apache04/conf/httpd.conf
LIGHTTPD_BIN=/usr/local/apache04/sbin/lighttpd
LIGHTTPD_PID=/usr/local/apache04/lighttpd.pid
test -r $LIGHTTPD_CONFIG || exit 6
case "$1" in
start )
echo -n "Starting lighttpd"
$LIGHTTPD_BIN -f $LIGHTTPD_CONFIG
;;
stop )
echo -n "Shutting down lighttpd"
killall lighttpd
rm $LIGHTTPD_PID
;;
esac
exit 0
這樣就可以跑起來了:)
Lighttpd
libevent
PCRE HTTPD