- 論壇徽章:
- 0
|
一,為什么要使用lighttpd?
apache不可以嗎?
在支持純靜態(tài)的對象時,比如圖片,文件等 ,
lighttpd速度更快,更理想
至于它和apache的比較,很多文檔,大家可以google一下
二,從何處下載lighttpd?
http://www.lighttpd.net/download/
這個是它的官方站
三,如何安裝?
1,編譯安裝
./configure --prefix=/usr/local/lighttpd
make
make install
configure完畢以后,會給出一個激活的模塊和沒有激活模塊的清單,可以檢查一下,是否自己需要的模塊都已經(jīng)激活,在enable的模塊中一定要有“mod_rewrite”這一項,否則重新檢查pcre是否安裝。
2,編譯后配置
cp doc/sysconfig.lighttpd /etc/sysconfig/lighttpd
mkdir /etc/lighttpd
cp doc/lighttpd.conf /etc/lighttpd/lighttpd.conf
如果你的Linux是RedHat/CentOS,那么:
cp doc/rc.lighttpd.redhat /etc/init.d/lighttpd
如果你的Linux是SuSE,那么:
cp doc/rc.lighttpd /etc/init.d/lighttpd
其他Linux發(fā)行版本可以自行參考該文件內容進行修改。
然后修改/etc/init.d/lighttpd,把
LIGHTTPD_BIN=/usr/sbin/lighttpd
改為
LIGHTTPD_BIN=/usr/local/lighttpd/sbin/lighttpd
此腳本用來控制lighttpd的啟動關閉和重起:
/etc/init.d/lighttpd start
/etc/init.d/lighttpd stop
/etc/init.d/lighttpd restart
3,配置
修改/etc/lighttpd/lighttpd.conf
1)server.modules
取消需要用到模塊的注釋,mod_rewrite,mod_access,mod_fastcgi,mod_simple_vhost,mod_cgi, mod_compress,mod_accesslog是一般需要用到的。
我們放開 "mod_rewrite"
"mod_compress",
2)server.document-root, server.error-log,accesslog.filename需要指定相應的目錄
server.document-root = "/www/phc/html/"
mkdir /usr/local/lighttpd/logs
chmod 777 /usr/local/lighttpd/logs/
touch /usr/local/lighttpd/logs/error.log
chmod 777 /usr/local/lighttpd/logs/error.log
server.errorlog = "/usr/local/lighttpd/logs/error.log"
accesslog.filename = "|/usr/sbin/cronolog /usr/local/lighttpd/logs/%Y/%m/%d/accesslog.log"
3)用什么權限來運行l(wèi)ighttpd
server.username = "nobody"
server.groupname = "nobody"
從安全角度來說,不建議用root權限運行web server,可以自行指定普通用戶權限。
4)靜態(tài)文件壓縮
mkdir /usr/local/lighttpd/compress
chmod 777 /usr/local/lighttpd/compress/
compress.cache-dir = "/usr/local/lighttpd/compress/"
compress.filetype = ("text/plain", "text/html","text/javascript","text/css")
可以指定某些靜態(tài)資源類型使用壓縮方式傳輸,節(jié)省帶寬,
對于大量AJAX應用來說,可以極大提高頁面加載速度。
5)server.port = 81
6)#$HTTP["url"] =~ ".pdf$" {
131 # server.range-requests = "disable"
132 #}
4,優(yōu)化
1 最大連接數(shù)
默認是1024
修改 server.max-fds,大流量網(wǎng)站推薦2048.
因為lighttpd基于線程,而apache(MPM-prefork)基于子進程,
所以apache需要設置startservers,maxclients等,這里不需要
2 stat() 緩存
stat() 這樣的系統(tǒng)調用,開銷也是相當明顯的.
緩存能夠節(jié)約時間和環(huán)境切換次數(shù)(context switches)
一句話,lighttpd.conf加上
server.stat-cache-engine = “fam”
lighttpd還另外提供simple(緩存1秒內的stat()),disabled選項.
相信沒人會選disabled吧.
3 常連接(HTTP Keep-Alive)
一般來說,一個系統(tǒng)能夠打開的文件個數(shù)是有限制的(文件描述符限制)
常連接占用文件描述符,對非并發(fā)的訪問沒有什么意義.
(文件描述符的數(shù)量和許多原因有關,比如日志文件數(shù)量,并發(fā)數(shù)目等)
這是lighttpd在keep-alive方面的默認值.
server.max-keep-alive-requests = 128
server.max-keep-alive-idle = 30
換言之,lighttpd最多可以同時承受30秒長的常連接,每個連接最多請求128個文件.
但這個默認值確實不適合非并發(fā)這種多數(shù)情況.
lighttpd.conf 中減小
server.max-keep-alive-requests
server.max-keep-alive-idle
兩個值,可以減緩這種現(xiàn)象.
甚至可以關閉lighttpd keep-alive.
server.max-keep-alive-requests = 0
4 事件處理
對于linux kernel 2.6來說,沒有別的可說
lighttpd.conf中加上這一句足矣
server.event-handler = “l(fā)inux-sysepoll”
另外,
linux 2.4 使用 linux-rtsig
freebsd 使用 freebsd-kqueue
unix 使用 poll
5 網(wǎng)絡處理
lighttpd 大量使用了 sendfile() 這樣一個高效的系統(tǒng)調用.
減少了從應用程序到網(wǎng)卡間的距離.
(同時也減少了lighttpd對cpu的占用,這部分占用轉嫁到內核身上了)
根據(jù)平臺,可以設置不同的參數(shù).
server.network-backend = “l(fā)inux-sendfile”
(linux)
freebsd: freebsd-sendfile
unix: writev
如果有興趣的話,也可以看看lighttpd在async io(aio)上的實現(xiàn),僅限 lighttpd 1.5
(linux-aio-sendfile, posix-aio, gthread-aio)
此外,網(wǎng)絡方面,核心的參數(shù)也需要適當進行修改,
這里就不需要詳細說明了.
5,啟動
6,配置日志
logrotate & cronolog
logrotate很粗暴,直接把進程砍了然后移動日志
cronolog就是比較不錯的方式.
lighttpd用法:
accesslog.filename = " |/usr/sbin/cronolog /var/log/lighttpd/%Y/%m/%d/access_XXXX.log"
7,安裝pcre
從何處下載?
http://www.pcre.org/
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-7.4.tar.bz2
安裝過程:
./configure
make clean
make
make install
8,支持fam
gamin默認已安裝了此包
yum install gamin-devel
另外配置時需添加:
./configure --prefix=/usr/local/lighttpd --with-fam
9,測試lighttpd的啟動:
/usr/local/lighttpd/sbin/lighttpd -f /usr/local/lighttpd/etc/lighttpd.conf
|
|