1. 程式人生 > >lighttpd配置(轉載)

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時需注意。