http://www.acme.com/software/thttpd/
thttpd is a very small and lightweight web server, it is very, very simple, and only provides HTTP/ 1.1 and simple CGI support, there is a comparison chart + Benchmark with other web servers (such as Apache, Zeus, etc.) on its official website, you can refer to it. In addition, thttpd is also similar to lighttpd. For concurrent requests, fork() is not used to derive sub-processes, but multiplex technology is used to implement it. So the performance is very good.
thttpd supports multiple platforms, such as FreeBSD, SunOS, Solaris, BSD, Linux, OSF, etc. For small web servers, fast speed seems to be synonymous. Through the Benchmark provided by the official website, you can think that: thttpd is at least as fast as mainstream web servers and faster under high load because of its small resource footprint.
thttpd also has a more eye-catching feature: URL-based file flow restriction, which is very convenient for download flow control. Like Apache, it must be implemented using plug-ins, which is less efficient than thttpd.
1. Install
# 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 compile error, because getline has been added to POSIX 2008, you can rename getline in extras/htpasswd.c to get_line or something else.
The name in htpasswd.c is the same as the name of getline in the stdio.h standard library, which leads to a conflict.
The method of modification is to go to htpasswd.c and modify getline. The getline in htpasswd.c is a static type function, and the function will only appear in this file. Find getline in turn and modify it to get_line.
htpasswd.c line 52 definition
static int getline(char *s, int n, FILE *f) {
htpasswd.c line 192 call
while(!(getline(line,MAX_STRING_LEN,f))) {
Remake
#make
# addgroup www // If you need to create a www group, if prompted addgroup: command not found
can be used
# /usr/sbin/useradd www
# make install
When make install, there will be no error of /usr/local/man/man1, so please
#mkdir man1
# cd /usr/local/thttpd
# mkdir {etc,logs}
#cd ./conf
#vim thttpd.conf
port=80< br> 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/*
Start thttpd
# /usr/local/thttpd/sbin/thttpd -C /usr/local/thttpd/conf/thttpd.conf
View Whether the process is started
#ps aux | grep thttpd
#vim throttle.conf
*.jpg|*.gif 50000 # Limit the speed of all jpg gifs to 50,000 bytes per second
*.mpg 20000 # Limit the speed of access to all mpg files of 20,000 Bytes per second
dir/* 20000 # Limit the speed of accessing all files in the dir/ directory to 20,000 bytes per second
php has thttpd compilation option, which can be used as thttpd module, so It saves more resources than nginx lighttpd’s php-fpm, and the corresponding speed is faster! But currently thttpd’s support for PHP is limited to the version requirements, and a master has been searched for a php5.2.11 version of the patch.
# 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
Two. Use GDB to debug thttpd
Modify the Makefile after configure
The default is
CCOPT = -O2
Modify to
CCOPT = -g -O0
also modify thttpd.c
< p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; font-family:Arial; font-size:14px; line-height:26px"> Add:< /p>
debug=1;
In
if (! debug )
Before
Because debug is enabled, the daemon process will not be generated, otherwise it is not convenient to debug!
Enable thttpd
# /usr/local/thttpd/sbin/thttpd -C /usr/local/thttpd/conf/thttpd.conf
Additional gdb process
#gdb -p thttpd- pid
(gdb) break main
(gdb) r
(gdb) l
It can be seen that the code can be viewed, and the variables can also be printed.
Original address: http://www.voidcn.com/article/p-gilydexa-pc.html