bestlong 怕失憶論壇

 

 

搜索
bestlong 怕失憶論壇 論壇 MIS Linux 上完全手動編譯安裝 Lighttpd
查看: 5823|回復: 0
go

Linux 上完全手動編譯安裝 Lighttpd [複製鏈接]

Rank: 9Rank: 9Rank: 9

1#
發表於 2006-10-19 11:06 |只看該作者 |倒序瀏覽 |打印
文章來源:http://blog.sina.com.tw/3759/article.php?pbgid=3759&entryid=9778

Linux 上完全手動編譯安裝 Lighttpd + PHP4(FastCGI) + eAccelerator
需要軟體
Lighttpd http://www.lighttpd.net/download/
PHP4 http://www.php.net/downloads.php
EAccelerator http://sourceforge.net/project/showfiles.php?group_id=122249


我目前的安裝測試環境如下
Fedora core 3
MySQL 4.0.15a
CPU 塞陽 1.2G , RAM 384MB

由於是手動編譯安裝
因此請下載 tar.gz 格式的 source package
下載完之後 請放到 /usr/local/src

=================================================================================
第一步 : 先安裝 Lighttpd
安裝前的準備動作
首先要建立一個使用者來執行 lighttpd
可以下指令 useradd lighttpd
記得要把 /etc/passwd 的 lighttpd 這個 user 的shell從 /bin/bash 改成 /bin/nologin

開始安裝 lighttpd
首先下指令 tar -xzf lighttpd-1.3.12.tar.gz , 把檔案解開之後
下指令 cd lighttpd-1.3.12
然後要決定好 lighttpd 的安裝位置
./configure --prefix=/usr/local/lighttpd
接著下 make , 如果 make 沒問題 , 那就下達 make install 開始安裝
安裝成功之後 , 會發現LightHttpd 已經安裝在 /usr/local/lighttpd

接著編寫設定檔 , 由於 lighttpd 不會幫你自動設定設定檔 , 所以要自己寫
或者把 /usr/local/src/lighttpd-1.3.12/doc 內的 lighttpd.conf 看看自己修改
這裡提供一個設定範例 , 請各位下載本頁的附件 , 有些許我加上的中文(big5)說明
然後請看每個註解 , 改成您需要的
PS : 附件中的設定檔範例有 Virtual Hosts , PHP , 網頁壓縮與 user_dir 的設定,對一般人來說應該足夠

若要使用我提供的設定檔
請在 /usr/local/lighttpd 下建立 conf 文件夾與 logs 文件夾
然後把 lighttpd.conf 放到 conf 文件夾下
接著再把附件中的 spawn-php.sh 放到 /usr/local/lighttpd/bin 文件夾下
接著請下指令 chown lighttpd.lighttpd /usr/local/lighttpd -Rf
PS: 附件中的 spawn-php.sh 是把 PHP with FastCGI 的環境變數初始化 , 內容各位也可以改

到這步驟應該是都可以了 , 但是請先別急
由於 PHP 還沒安裝 , 因此現在若啟動 lighttpd 要測試會發生錯誤
所以接下來要安裝 PHP with FastCGI


=================================================================================
第二步 : 安裝 PHP with FAST CGI
把工作目錄切換到 /usr/local/src
然後下指令解開 PHP
tar -xzf php-4.3.10.tar.gz
接著進入 php-4.3.10 (cd php-4.3.10)
開始下指令
./configure --prefix=/usr/local/php-fcgi --enable-fastcgi --with-mysql=/usr/local/mysql --enable-zend-multibyte --with-config-file-path=/usr/local/php-fcgi/conf --enable-discard-path --enable-force-cgi-redirect

這部分若要加上其他 PHP 功能請自行加上參數
唯一與以前不同點是 , 編譯成 fastcgi 模組 , 比需使用 --enable-fastcgi
以前與 apache2 一起編譯是使用 --with-apxs2 , 此時不能再下這道指令

若沒有問題 , 就執行 make 與 make install
這時候 PHP 會安裝在 /usr/local/php-fcgi 這個文件夾了
然後在 /usr/local/php-fcgi 建立一個 conf 的文件夾
把 /usr/local/src/php-4.3.10 下的 php.ini-dist 複製到 /usr/local/php-fcgi/conf/php.ini
指令是 cp /usr/local/src/php-4.3.10/php.ini-dist /usr/local/php-fcgi/conf/php.ini

=================================================================================
第三步 : 安裝 EAccelerator
把工作目錄切換到 /usr/local/src
然後下指令解開 EAccelerator
tar -xzf eaccelerator-0.9.2a.tar.gz
接著進入 eaccelerator-0.9.2a 這個文件夾(cd eaccelerator-0.9.2a)
開始下指令
export PHP_PREFIX="/usr/local/php-fcgi"
$PHP_PREFIX/bin/phpize
./configure --enable-eaccelerator=shared --with-php-config=$PHP_PREFIX/bin/php-config
make
make install
EAccelerator 會安裝在 /usr/local/php-fcgi/lib/php/extensions/no-debug-non-zts-XXXXXX 這個目錄
上面目錄後面的XXXXXX 要自己看喔(非常重要)

接著要編輯 /usr/local/php-fcgi/conf/php.ini
找到一行 cgi.fix_pathinfo
要寫成 cgi.fix_pathinfo = 1
若沒有這行 , 請自行加入就可

然後加入
extension="eaccelerator.so"
eaccelerator.shm_size="8"
eaccelerator.cache_dir="/tmp/eaccelerator"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="0"
eaccelerator.shm_prune_period="0"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"
檢查一下 extension_dir 這個設定是否如下
extension_dir = "/usr/local/php-fcgi/lib/php/extensions/no-debug-non-zts-XXXXXX/"
最後存檔

=================================================================================
最後步驟 : 測試 lighttpd
lighttpd 我們是安裝在 /usr/local/lighttpd
因此執行 /usr/local/lighttpd/sbin/lighttpd -f /usr/local/lighttpd/conf/lighttpd.conf
可以下 ps -aux 看看有沒有許多 php 的行程
若有,那代表你成功了
你一定會煩..怎麼那麼多 php 程式啊 ?? 其實不要緊張
那些都是多執行緒 , 佔用記憶體很小

如何關閉 lighttpd , 可以下指令 killall lighttpd , 這樣就可以關閉
如何一開機啟動 lighttpd ?
在 /etc/rc.d/rc.local 新增一行
/usr/local/lighttpd/sbin/lighttpd -f /usr/local/lighttpd/conf/lighttpd.conf
這樣每次開機就會去啟動了


如何測試效能 ???
若您之前有安裝 apache with php
請先把 apache 用別的 port 來跑 , 例如 81
然後可以利用 apache 提供的 ab 來測試
例如 ab -c 10 -n 100 http://localhost/test.php 來測試 port 80
然後可以下 ab -c 10 -n 100 http://localhost:81/test.php 來測試 port 81
你會發現 lighttpd 跑的速度比 apache 快 50%~200% 以上喔 !!!!

==========================================================

講解一下 , 為何用 lighttpd
1. 省記憶體 , 速度快
2. 使用 FastCGI 來與 PHP 做溝通 , 可以達到 chroot 的功能 , 不過範例中我沒寫上去 , 意思是每個用戶有獨立的讀寫權限 , 無法侵犯他人
3. lighttpd 的設定檔雖然"目前"要自己寫 , 可是其語法很容易理解

以下是我的測試效能
Lighttpd 的部分測試 phpMyAdmin
./ab -c 10 -n 100 http://192.168.0.254/~pigo/phpMyAdmin/index.php
This is ApacheBench, Version 2.0.41-dev <$Revision: 1.121.2.12 $> apache-2.0
Copyright (c) 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright (c) 1998-2002 The Apache Software Foundation, http://www.apache.org/

Benchmarking 192.168.0.254 (be patient).....done


Server Software: lighttpd/1.3.12
Server Hostname: 192.168.0.254
Server Port: 80

Document Path: /~pigo/phpMyAdmin/index.php
Document Length: 2463 bytes

Concurrency Level: 10
Time taken for tests: 2.250865 seconds
Complete requests: 100
Failed requests: 0
Write errors: 0
Non-2xx responses: 100
Total transferred: 267100 bytes
HTML transferred: 246300 bytes
Requests per second: 44.43 [#/sec] (mean)
Time per request: 225.086 [ms] (mean)
Time per request: 22.509 [ms] (mean, across all concurrent requests)
Transfer rate: 115.51 [Kbytes/sec] received

Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 2 10.6 0 55
Processing: 19 86 106.9 21 706
Waiting: 19 85 106.5 20 704
Total: 19 89 112.5 21 751


Apache 2 的部分測試 phpMyAdmin
./ab -c 10 -n 100 http://192.168.0.254:81/~pigo/phpMyAdmin/index.php
This is ApacheBench, Version 2.0.41-dev <$Revision: 1.121.2.12 $> apache-2.0
Copyright (c) 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright (c) 1998-2002 The Apache Software Foundation, http://www.apache.org/

Benchmarking 192.168.0.254 (be patient).....done


Server Software: Apache/2.0.52
Server Hostname: 192.168.0.254
Server Port: 81

Document Path: /~pigo/phpMyAdmin/index.php
Document Length: 2463 bytes

Concurrency Level: 10
Time taken for tests: 13.81193 seconds
Complete requests: 100
Failed requests: 0
Write errors: 0
Non-2xx responses: 100
Total transferred: 278100 bytes
HTML transferred: 246300 bytes
Requests per second: 7.64 [#/sec] (mean)
Time per request: 1308.119 [ms] (mean)
Time per request: 130.812 [ms] (mean, across all concurrent requests)
Transfer rate: 20.72 [Kbytes/sec] received

Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 39 155.1 0 918
Processing: 111 1141 1005.0 912 5239
Waiting: 10 1124 1008.6 911 5238
Total: 111 1181 1001.7 932 5239
我是雪龍
http://blog.bestlong.idv.tw
http://www.bestlong.idv.tw
‹ 上一主題|下一主題

Archiver|怕失憶論壇

GMT+8, 2024-5-3 02:47 , Processed in 0.012710 second(s), 10 queries .

Powered by Discuz! X1.5

© 2001-2010 Comsenz Inc.