http://www.acme.com/software/thttpd/

thttpd是一个非常小巧的轻量级web server,它非常非常简单,仅仅提供了HTTP/1.1和简单的CGI支持,在其官方网站上有一个与其他web server(如Apache, Zeus等)的对比图+Benchmark,可以参考参考。此外,thttpd 也类似于lighttpd,对于并发请求不使用fork()来派生子进程处理,而是采用多路复用(Multiplex)技术来实现。因此效能很好。

thttpd支持多种平台,如FreeBSD, SunOS, Solaris, BSD, Linux, OSF等。对于小型web server而言,速度快似乎是一个代名词,通过官方站提供的Benchmark,可以这样认为:thttpd至少和主流的web server一样快,在高负载下更快,因为其资源占用小的缘故。

thttpd还有一个较为引人注目的特点:基于URL的文件流量限制,这对于下载的流量控制而言是非常方便的。象Apache就必须使用插件实现,效率较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编译报错,原因是getline 已加入 POSIX 2008,可以把extras/htpasswd.c 里面的getline重命名为get_line或别的。

htpasswd.c中的名称与stdio.h标准库中的getline的名称一样,所以导致了冲突。

修改的方法是到htpasswd.c中,修改getline。htpasswd.c中getline是一个static类型的函数,函数只会出现在本文件中。依次查找getline,并修改成get_line。

htpasswd.c 第52行定义

static int getline(char *s, int n, FILE *f) {

htpasswd.c 第192行调用

while(!(getline(line,MAX_STRING_LEN,f))) {

重新make

#make

# addgroup www         // 需创建 www 组 如果提示 addgroup: command not found

可以使用

# /usr/sbin/useradd www

# make install

make install的时候会报没有/usr/local/man/man1的错误,所以要

# 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/*

启动thttpd

# /usr/local/thttpd/sbin/thttpd -C /usr/local/thttpd/conf/thttpd.conf

查看进程是否启动

# ps aux | grep thttpd

#vim throttle.conf
*.jpg|*.gif 50000 # 对所有 jpg gif 限速 5万字节每秒
*.mpg 20000 # 对访问所有的 mpg 文件限速 2万字节每秒
dir/* 20000 # 对访问 dir/ 目录下所有文件限速 一秒钟 2万个字节

php有 thttpd 编译选项,可以作为thttpd模块,这样就比nginx lighttpd 的 php-fpm 更节省资源,相应速度要快!但是目前 thttpd 对PHP的支持限于版本的要求,搜索到有一达人有php5.2.11版本的补丁。

# 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调试thttpd

修改configure后的Makefile

默认是

CCOPT =  -O2

修改为

CCOPT =  -g -O0

还要修改thttpd.c

增加:

debug=1;

if ( ! debug )

之前

因为启用debug,这样就不会生成守护进程,不然不方便调试!

启用thttpd

# /usr/local/thttpd/sbin/thttpd -C /usr/local/thttpd/conf/thttpd.conf

附加gdb进程

#gdb -p thttpd-pid

(gdb)  break main

(gdb)  r

(gdb)  l

可见已经可以查看代码,也可以打印变量。

试验篇--thttpd安装与调试相关推荐

  1. thttpd安装与调试

    http://www.acme.com/software/thttpd/ thttpd是一个非常小巧的轻量级web server,它非常非常简单,仅仅提供了HTTP/1.1和简单的CGI支持,在其官方 ...

  2. 基于Ardupilot/PX4固件,APM/PIXhawk硬件的VTOL垂直起降固定翼软硬件参数调试(第一篇)安装调试

    基于Ardupilot/PX4固件,APM/PIXhawk硬件的VTOL垂直起降固定翼软硬件参数调试(第一篇)安装调试 本文内容大部分来自Kris,我们的K大,在VTOL领域的大牛,在此,非常感谢K大 ...

  3. 同步发电机励磁调节实验原理_发电机构造、原理、类型、安装、调试、试验、故障解析等所有知识(44个文件)...

    发电机构造.原理.类型.安装.调试.试验.故障解析等所有知识(44个文件) 1.柴油发电机组原理 2.柴油发电机基础 3.柴油发电机房设计 4.发电机调试方案 5.发电机定子接地保护 6.发电机的构造 ...

  4. nodejs安装_nodejs调试全局安装的cli脚本

    最近在阅读cordova-cli的源码,想着要是能直接在vscode中打开调试,一步步地查看cordova命令的执行过程,那么将会大大的方便我对其源码的阅读.然而网上找了很多教程,大多都是直接调试本地 ...

  5. 基于Ardupilot/PX4固件,APM/PIXhawk硬件的VTOL垂直起降固定翼软硬件参数调试(第二篇)软硬件参数调试

    基于Ardupilot/PX4固件,APM/PIXhawk硬件的VTOL垂直起降固定翼软硬件参数调试(第二篇)软硬件参数调试 本文内容大部分来自Kris,我们的K大,在VTOL领域的大牛,在此,非常感 ...

  6. 掌握计算机硬件系统的安装和调试,虚拟机技术在计算机系统安装与调试实验中的应用...

    摘要:计算机系统安装与调试是<计算机组装与维护>课程中的重要实验项目.但在实际教学过程中,经常会因为受到设备紧张.机房维护管理困难以及硬件设备容易被损坏等因素的影响,而导致计算机系统安装与 ...

  7. centOS7 LNMP+phpmyadmin环境搭建 第三篇phpmyadmin安装

    这篇文章主要介绍了CentOS7 LNMP+phpmyadmin环境搭建,第三篇phpmyadmin安装,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 之前我们已经安装了lnmp的环境,现在让我们 ...

  8. Redis安装与调试

     Redis安装与调试 Redis安装与调试linux版本:64位CentOS 6.5 Redis版本:2.8.17  (更新到2014年10月31日) Redis官网:http://redis. ...

  9. 计算机网络环境及应用系统的安装与调试(Computer network environment and application system installation and debugging)

    计算机网络环境及应用系统的安装与调试(Computer network environment and application system installation and debugging) W ...

最新文章

  1. MySQL中改变相邻学生座位_力扣——换座位(数据库的题
  2. undefined reference to 'WinMain@16' 的四种情况
  3. Halcon 标定与准确测量
  4. 【前端】.easyUI.c#
  5. Hamburger Steak 贪心-锅子问题-先求最小耗时再贪心
  6. 「SLAM」十四讲:第1讲 预备知识
  7. Wondows环境下配置Tomat
  8. WINDOWS的SHELLCODE编写高级技巧
  9. linux怎么重启samba服务器,Linux系统怎么重启Samba服务
  10. oracle12能卸干净吗,oracle卸载干净【设置方案】
  11. LabView替代软件,ATECLOUD云测试平台测评
  12. 经营微博的十个经典案例
  13. vsto 安装成功后打开office word不加载
  14. C++ -- STL文件解析
  15. 十年测试老司机带你应对68道面试题---文章转载自 TesterHome
  16. 笔记本插入网线接口没反应
  17. 大脑构造图与功能解析_大脑的结构和功能分区_详解人脑构造与功能
  18. 【Python + selenium】在浏览器打开新页签
  19. getPhoneNumber 响应 416
  20. win10如何删除microsoft账户并免密登录

热门文章

  1. C++ GUI Qt4编程(12)-6.1FindFileDialog
  2. 【bzoj3879】SvT 后缀数组+倍增RMQ+单调栈
  3. Linux第六周学习总结——进程额管理和进程的创建
  4. 新的信息论诞生前的若干问题分析
  5. linux yum及yum仓库
  6. leetcode刷题实录:1
  7. MTM:matlab实现4主函数
  8. 求某类型变量的大小(是否使用sizeof)
  9. Matlab错误:Y must be a vector or a character array
  10. caffe源码分析:layer.hpp分析