一,為什麼要使用lighttpd?
apache不可以嗎?
在支援純靜態對象時,比片,檔案等 ,
lighttpd速度更快,更理想
[下面四段話來自:http://www.javayou.com/diary/3264\]
Lighttpd是一個德國人領導的開源軟體,其根本的目的是提供一個專門針對高效能網站,安全、快速、相容性好並且靈活的web server環境。具有非常低的記憶體開銷,cpu佔用率低,效能好,以及豐富的模組等特點。
lighttpd是眾多OpenSource輕量級的web server中較為優秀的一個。支援FastCGI, CGI, Auth, 輸出壓縮(output compress), URL重寫, Alias等重要功能,而Apache之所以流行,很大程度也是因為功能豐富,在lighttpd上很多功能都有相應的實現了,這點對於apache的用 戶是非常重要的,因為遷移到lighttpd就必須面對這些問題。
實用起來lighttpd確實非常不錯,上文提到的apache overload的問題,用lighttpd就完全解決了。apache主要的問題是密集並發下,不斷的fork()和切換,以及較高(相對於 lighttpd而言)的記憶體佔用,使系統的資源幾盡枯竭。而lighttpd採用了Multiplex技術,代碼經過最佳化,體積非常小,資源佔用很低, 而且反應速度相當快。
利用apache的rewrite技術,將繁重的cgi/fastcgi任務交給lighttpd來完成,充分利用兩者的優點,現在那台伺服器的負載下降了一個數量級,而且反應速度也提高了一個甚至是2個數量級!
二,從何處下載lighttpd?
http://www.lighttpd.net
這個是它的官方站
我下載的是 lighttpd-1.4.19.tar.bz2 ,在附件裡。
- # cp lighttpd-1.4.19.tar.bz2 /usr/mylib \
- # tar jxvf lighttpd-1.4.19.tar.bz2
- # cd lighttpd-1.4.19
- # ./configure --prefix=/usr/local/lighttpd
- # make
- # make install
- OK!
但是,一般會在第四步遇到問題,我也遇到了: configure: error: pcre-config not found, install the pcre-devel package and build with --without-pcre
此時需要安裝一個軟體包pcre(Perl相容的規則運算式庫) ,如下〔附件裡也有〕:http://sourceforge.net/project/showfiles.php?group_id=10194&package_id=9960&release_id=597811
安裝之後再編譯lighttpd ,流程是上面的6步。
三、 編譯後配置:
cp doc/sysconfig.lighttpd /etc/sysconfig/lighttpd
mkdir /etc/lighttpd
cp doc/lighttpd.conf /etc/lighttpd/lighttpd.conf
如果你的Linux是RedHat,那麼:
cp doc/rc.lighttpd.redhat /etc/init.d/lighttpd
然後修改/etc/init.d/lighttpd,把
lighttpd="/usr/sbin/lighttpd"
改為
lighttpd="/usr/local/lighttpd/sbin/lighttpd"
此指令碼用來控制lighttpd的啟動關閉和重起:
# /etc/init.d/lighttpd start
啟動報錯如下:
啟動 lighttpd:2008-08-06 12:40:28: (configfile.c.1136) base-docroot doesn't exist: /srv/www/htdocs/
需要修改/etc/lighttpd/lighttpd.conf這個設定檔中的配置
/srv/www/htdocs/ 這個路徑是不存在的。
server.document-root = "/srv/www/htdocs/"
改為
server.document-root = "/var/www/htdocs/"
再重新啟動試試
# /etc/init.d/lighttpd restart
停止 lighttpd: [失敗]
啟動 lighttpd:2008-08-06 12:42:27: (configfile.c.1136) base-docroot doesn't exist: /var/www/htdocs/
2008-08-06 12:42:27: (server.c.591) setting default values failed
[失敗]
原來是檔案夾不在 # makedir /var/www/htdocs 搞定。
# /etc/init.d/lighttpd restart
停止 lighttpd: [失敗]
啟動 lighttpd: [ 確定 ]
如果你希望伺服器啟動的時候就啟動lighttpd,那麼:
chkconfig lighttpd on
這樣lighttpd就安裝好了,接下來需要配置lighttpd。
參見lighttpd.conf配置大全
server.chroot
使用chroot提高安全性時,web伺服器的root目錄。建議使用。
server.username = "..." server.groupname = "..."
放棄root許可權。
dir-listing.activate
如果沒有找到index檔案就列出目錄。建議disable。
server.max-worker
lighttpd預設只啟動一個進程工作,但也支援apache那樣啟動多個進程,我的實驗顯示啟動多個進程同時工作時並不能提高效能。
server.max-keep-alive-requests
這一條比較關鍵,對效能的影響比較大。在一個keep-alive會話終止串連前能接受處理的最大請求數。Default: 128,對一個高負載的應用來說是不夠的。
server.max-keep-alive-idle
一個空閑keep-alive串連被丟棄前,存在的的最大秒數。Default: 30。
server.error-handler-404
頁面找不到時候的處理,對效能沒什麼影響
server.max-fds
因為lighttpd是一個單線程(single-threaded)伺服器,它的主要資源限制是檔案描述符數目,預設值是1024。如果在一個高負載的網站上,可能你需要通過下面的設定增加這個限定值
server.max-fds = 2048 但這個限定只有在lighttpd做為root身份運行時才會生效。
connection.kbytes-per-second,server.kbytes-per-second
還有值得一提的時lighttpd可以限制每個串連或則特定虛擬機器的流量。
compress.cache-dir,compress.filetype
如果文本稍微大點可以考慮使用壓縮演算法,減少頻寬同時也能提高效率。例如:
compress.cache-dir = "/var/cache/lighttpd/compress/"
compress.filetype = ("text/plain", "text/html","text/javascript","text/css")
server.stat-cache-engine = "fam"
這 一條能明顯提升效能,stat() cache。一個stat調用代價可能是昂貴的。為它設一個cache能省時間又避免環境切換。替代每次都stat()來確定檔案的存在,它只stat ()一次,然後會監視目錄,如果目錄不變,他裡面的檔案也就沒有變化。我們的記憶體檔案系統中有沒必要保留,依情況而定。
server.stat-cache-engine = "fam" # either fam, simple or disabled
日誌:
在lighttpd中可以通過下面的配置來實現每天一個訪問記錄檔
accesslog.filename = "| /usr/local/lighttpd/bin/rotatelogs /usr/local/lighttpd/logs/access_%Y%m%d.log 86400"
啟動:
# /usr/local/lighttpd/sbin/lighttpd -f /etc/lighttpd/lighttpd.conf
『-f是啟動參數』
或:
# /etc/init.d/lighttpd start
〖用法: /etc/init.d/lighttpd [start|stop|restart|condrestart|reload|status]
或:
service lighttpd restart
http://hi.baidu.com/619195553dream/blog/item/21e24e344ea99c97a8018e1e.html