lighttpd配置(轉載)
理論篇
lighttpd是一個德國人領導的開源軟體,其根本的目的是提供一個專門針對高效能網站,安全、快速、相容性好並且靈活的webserver環境。具有非常低的記憶體開銷,cpu佔用率低,效能好,以及豐富的模組等特點。lighttpd是眾多OpenSource輕量級的webserver中較為優秀的一個。支援FastCGI, CGI, Auth, 輸出壓縮(output compress), URL重寫, Alias等重要功能,而Apache之所以流行,很大程度也是因為功能豐富,在lighttpd上很多功能都有相應的實現了,這點對於apache的使用者是非常重要的,因為遷移到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確實非常不錯,apache主要的問題是密集併發下,不斷的fork()和切換,以及較高(相對於 lighttpd而言)的記憶體佔用,使系統的資源幾盡枯竭。而lighttpd採用了Multiplex技術,程式碼經過優化,體積非常小,資源佔用很低,而且反應速度相當快。
利用apache的rewrite技術,將繁重的cgi/fastcgi任務交給lighttpd來完成,充分利用兩者的優點,現在那臺伺服器的負載下降了一個數量級,而且反應速度也提高了一個甚至是2個數量級!
實踐篇
系統RedHat
一、 安裝
1, Pcre
(1) 下載。
(2) 安裝。rpm -ivh pcre-devel-4.5-3.2.SEL4.i386.rpm --nodeps(強制安裝)
(3) 輸入rpm -qa |grep pcre
返回結果:pcre-4.5-3 或 pcre-devel-4.5-3.2.SEL4 表示已經成功安裝
2, lighttpd
tar
cd
./configure --prefix=/opt/lighttpd
make
make install
二、 配置
1,cp doc/sysconfig.lighttpd /etc/sysconfig/lighttpd
2,cp doc/rc.lighttpd.redhat /etc/init.d/lighttpd
注:/etc/init.d/lighttpd 此指令碼用來控制啟動、關閉和重起。
修改/etc/init.d/lighttpd,
把lighttpd="/usr/sbin/lighttpd" 改為 lighttpd="/usr/local/lighttpd/sbin/lighttpd"
3,建立資料夾
(1)建立網站根目錄資料夾
mkdir /var -p /www/htdocs
(2)建立日誌資料夾
mkdir /usr/local/lighttpd/logs
(3)建立靜態檔案壓縮
mkdir /usr/local/lighttpd/compress
4, 修改主配置檔案
mkdir /etc/lighttpd
注:/etc/lighttpd/lighttpd.conf 此檔案是lighttpd的主配置檔案
cp doc/lighttpd.conf /etc/lighttpd/lighttpd.conf
(1)修改網站根目錄路徑
把 server.document-root = "/srv/www/htdocs/" (40行)
改為 server.document-root = "/var/www/htdocs/"
(2)設定錯誤日誌檔案路徑
server.errorlog = "/usr/local/lighttpd/logs/lighttpd.error.log" (43行)
設定訪問日誌檔案路徑
accesslog.filename = "/usr/local/lighttpd/logs/access.log" (116行)
(3)compress.cache-dir = "/usr/local/lighttpd/compress/"
compress.filetype = ("text/plain", "text/html","text/javascript","text/css")
可以指定某些靜態資源型別使用壓縮方式傳輸,節省頻寬,對於大量AJAX應用來說,可以極大提高頁面載入速度。
(4)把#server.port = 81 前的#去掉
(5)server.modules(在24行)
取消需要用到模組的註釋,mod_rewrite,mod_access,mod_fastcgi,
mod_simple_vhost,mod_cgi,mod_compress,mod_accesslog是一般需要用到的。
把"mod_fastcgi"前邊的#去掉(在24行);把"mod_cgi"前邊的#去掉(在29行)
(6)用什麼許可權來執行lighttpd
server.username = "lighttpd"
server.groupname = "lighttpd"
從安全形度來說,不建議用root許可權執行web server,可以指定普通使用者許可權。
(7)#$HTTP["url"] =~ "/.pdf$" {
# server.range-requests = "disable"
#}
5,建立lighttpd使用者
useradd lighttpd
chown –R lighttpd:lighttpd /usr/local/lighttpd/
chown –R lighttpd:lighttpd /var/www/htdocs/
三、 啟動並測試
1, 啟動
/etc/init.d/lighttpd start 或
/usr/local/lighttpd/sbin/lighttpd -f /usr/local/lighttpd/etc/lighttpd.conf
相關指令一覽:
/etc/init.d/lighttpd stop
/etc/init.d/lighttpd restart
/etc/init.d/lighttpd status
如果你希望伺服器啟動的時候就啟動lighttpd,那麼:chkconfig lighttpd on
2, 測試
在/var/www/htdocs裡建一個index.html。
然後在瀏覽器裡輸入192.168.233.142:81
輸出:hello,I am lighttpd!
測試成功!~~~
四、 總結
伺服器軟體至今一共有3種,分別為apache,lighttpd,nginx。他們之間的共同點是
1, 都需要建立網站根目錄資料夾
2, 都需要各自使用者許可權,而不是root許可權。
3, 主配置檔案是修改重點。其實這一點幾乎對所有的軟體都是正確的。
他們的區別是:apache+mysql+php(mod),而lighttpd/nginx+mysql+php(fastcgi),在安裝後續軟體mysql,php時需注意。