天天看點

Lighttpd安裝日志

原貼: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