试验篇--thttpd安装与调试
?http://www.acme.com/software/thttpd/
thttpd是一個(gè)非常小巧的輕量級(jí)web server,它非常非常簡(jiǎn)單,僅僅提供了HTTP/1.1和簡(jiǎn)單的CGI支持,在其官方網(wǎng)站上有一個(gè)與其他web server(如Apache, Zeus等)的對(duì)比圖+Benchmark,可以參考參考。此外,thttpd 也類(lèi)似于lighttpd,對(duì)于并發(fā)請(qǐng)求不使用fork()來(lái)派生子進(jìn)程處理,而是采用多路復(fù)用(Multiplex)技術(shù)來(lái)實(shí)現(xiàn)。因此效能很好。
thttpd支持多種平臺(tái),如FreeBSD, SunOS, Solaris, BSD, Linux, OSF等。對(duì)于小型web server而言,速度快似乎是一個(gè)代名詞,通過(guò)官方站提供的Benchmark,可以這樣認(rèn)為:thttpd至少和主流的web server一樣快,在高負(fù)載下更快,因?yàn)槠滟Y源占用小的緣故。
thttpd還有一個(gè)較為引人注目的特點(diǎn):基于URL的文件流量限制,這對(duì)于下載的流量控制而言是非常方便的。象Apache就必須使用插件實(shí)現(xiàn),效率較thttpd低。
?
一.安裝
# wget?http://www.acme.com/software/thttpd/thttpd-2.25b.tar.gz
# tar zxvf thttpd-2.25b.tar.gz
#?cd thttpd-2.25b
#?./configure?--prefix=/usr/local/thttpd
# make
CentOS 6.4編譯報(bào)錯(cuò),原因是getline 已加入 POSIX 2008,可以把extras/htpasswd.c 里面的getline重命名為get_line或別的。
htpasswd.c中的名稱(chēng)與stdio.h標(biāo)準(zhǔn)庫(kù)中的getline的名稱(chēng)一樣,所以導(dǎo)致了沖突。
修改的方法是到htpasswd.c中,修改getline。htpasswd.c中g(shù)etline是一個(gè)static類(lèi)型的函數(shù),函數(shù)只會(huì)出現(xiàn)在本文件中。依次查找getline,并修改成get_line。
htpasswd.c 第52行定義
static int getline(char *s, int n, FILE *f) {
htpasswd.c 第192行調(diào)用
while(!(getline(line,MAX_STRING_LEN,f))) {
重新make
#make
# addgroup www ? ? ? ? // 需創(chuàng)建 www 組 如果提示?addgroup: command not found
可以使用
# /usr/sbin/useradd www
# make install?
make install的時(shí)候會(huì)報(bào)沒(méi)有/usr/local/man/man1的錯(cuò)誤,所以要
#?mkdir man1?
# cd /usr/local/thttpd
# mkdir {etc,logs}
#cd ./conf
#vim thttpd.conf
port=80
user=www
host=0.0.0.0
logfile=/usr/local/thttpd/logs/thttpd.log
pidfile=/usr/local/thttpd/logs/thttpd.pid
#throttles=/usr/local/thttpd/etc/throttle.conf
#urlpat=*.txt|*.mp3
#charset=utf-8
dir=/usr/www
cgipat=/usr/local/thttpd/www/cgi-bin/*
啟動(dòng)thttpd
#?/usr/local/thttpd/sbin/thttpd -C /usr/local/thttpd/conf/thttpd.conf
查看進(jìn)程是否啟動(dòng)
#?ps aux | grep thttpd
#vim throttle.conf
*.jpg|*.gif 50000 # 對(duì)所有 jpg gif 限速 5萬(wàn)字節(jié)每秒
*.mpg 20000 # 對(duì)訪(fǎng)問(wèn)所有的 mpg 文件限速 2萬(wàn)字節(jié)每秒
dir/* 20000 # 對(duì)訪(fǎng)問(wèn) dir/ 目錄下所有文件限速 一秒鐘 2萬(wàn)個(gè)字節(jié)
php有 thttpd 編譯選項(xiàng),可以作為thttpd模塊,這樣就比nginx?lighttpd 的 php-fpm 更節(jié)省資源,相應(yīng)速度要快!但是目前 thttpd 對(duì)PHP的支持限于版本的要求,搜索到有一達(dá)人有php5.2.11版本的補(bǔ)丁。
# wget http://download2.3tera.net/oss/files/osm/thttpd-2.25b/php-5.2.11-thttpd-2.25b.tar.bz2
# tar jxvf php-5.2.11-thttpd-2.25b.tar.bz2
# cd php-5.2.11
# ./configure --prefix=/usr/local/php-5.2.11 --with-thttpd=/usr/thttpd-2.25b
# make &&? make install
?
二.使用GDB調(diào)試thttpd
修改configure后的Makefile
默認(rèn)是
CCOPT =??-O2
修改為
CCOPT =??-g -O0
?
還要修改thttpd.c
增加:
?debug=1;
在
?if ( ! debug )
之前
?
因?yàn)閱⒂胐ebug,這樣就不會(huì)生成守護(hù)進(jìn)程,不然不方便調(diào)試!
?
啟用thttpd
#?/usr/local/thttpd/sbin/thttpd -C /usr/local/thttpd/conf/thttpd.conf
?
附加gdb進(jìn)程
#gdb -p thttpd-pid
(gdb)? break main
(gdb)? r
(gdb)? l
可見(jiàn)已經(jīng)可以查看代碼,也可以打印變量。
總結(jié)
以上是生活随笔為你收集整理的试验篇--thttpd安装与调试的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【收藏】需求文档(PRD)终极撰写指南
- 下一篇: 《关键对话——注意观察,如何判断对话氛围