thttpd安装与调试
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
可见已经可以查看代码,也可以打印变量。
相关文章:

7 款可替代 top 命令的工具!(二)
作者 | JackTian来源 | 杰哥的IT之旅上一篇文章中给大家介绍了《11 款可替代 top 命令的工具!》,今天我再来给大家推荐 7 款可替代 top 命令的工具,看完这两篇替代品的文章相信能让你对 Linux 操作系统下一个小小的命令大开眼界。一、atopato…

Error:Execution failed for task ':app:dexDebug'. com.android.ide.common.process.ProcessException
异常Log: Error:Execution failed for task ‘:app:dexDebug’. > com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process ‘command ‘/Library/……/java” finished with non-zero exit value 2 错误原因&am…

# 学号 2017-2018-20172309 《程序设计与数据结构》第十一周学习总结
---恢复内容开始--- 学号 2017-2018-20172309 《程序设计与数据结构》第十一周学习总结 教材学习内容总结 第23章 初识Android操作系统:一个多用户的Linux系统,一个运用程序运行时与其他的运用运行是独立的。发展:在Android4.4之前所有的应用…

php扩展xdebug基本使用
官网:http://www.xdebug.org/ 使用:http://www.xdebug.org/docs/安装 http://blog.csdn.net/21aspnet/article/details/7036087使用1.获取文件名,行号,函数名 xdebug_call_class() <?php function fix_string($a) { …

基于 Opencv 实现眼睛控制鼠标
作者 | 小白来源 | 小白学视觉如何用眼睛来控制鼠标?一种基于单一前向视角的机器学习眼睛姿态估计方法。在此项目中,每次单击鼠标时,我们都会编写代码来裁剪你们的眼睛图像。使用这些数据,我们可以反向训练模型,从你们…

linux 安装安装rz/sz 和 ssh
安装rz,sz yum install lrzsz; 安装ssh yum install openssh-server 查看已安装包 rpm -qa | grep ssh 更新yum源 1、备份 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup 2、下载新的CentOS-Base.repo 到/etc/yum.repos.d/ CentO…

css左固定右自适应常用方法
下面是几种方法的公用部分(右自适应也是一样的,换一下方向) html: <div class"demo"> <div class"sidebar">我是固定的</div> <div class"content">我是自适应的</div> </di…

nginx或httpd实现负载均衡tomcat(三)
接博客nginx或httpd实现反向代理tomcat并实现会话保持(二)实例四:使用httpd负载均衡后端tomcat服务第一步:准备两个tomcat服务器节172.16.240.203修改tomcat的server.xml配置文件,添加一个host。<Host name"to…

为 PHP 应用提速、提速、再提速
原文地址: http://www.ibm.com/developerworks/cn/opensource/os-php-fastapps1/ http://www.ibm.com/developerworks/cn/opensource/os-php-fastapps2/index.html为 PHP 应用提速、提速、再提速!PHP 是一种脚本语言,常用于创建 Web 应用程序…

冬奥会夺金的背后杀手锏,竟是位 AI 虚拟教练
整理 | 禾木木 出品 | AI科技大本营(ID:rgznai100) 近日,一则消息登上了热搜: 2月14日晚,在北京冬奥会自由式滑雪女子空中技巧决赛中,徐梦桃为中国代表团再添一金。她选择了难度系数4.293的动作,…

Socket-实例
import socket,os,time server socket.socket() server.bind(("localhost",9999)) server.listen()while True:conn,addrserver.accept()print("new conn",addr)while True:print("等待新指令")data conn.recv(1024)if not data:print("客…

kcachegrind安装
http://kcachegrind.sourceforge.net/cgi-bin/show.cgi/KcacheGrindDownload http://hi.baidu.com/wangxinhui419/blog/item/4a7409c78c22b4c8d100608a.html http://wxiner.blog.sohu.com/156841393.html说明:linux下如果安装不上,直接下载windows版的吧…

Java【小考】
课上, 老师出了一个题: 考察:1、类的定义 2、类的属性 3、类的方法、重载、构造方法、代码块 题目是这样的: 设计 一个 类:Tree 要求: 1、包含main方法 2、属性:静态: String name ; double hei…

首个深度强化学习AI,能控制核聚变,成功登上《Nature》
编译 | 禾木木 出品 | AI科技大本营(ID:rgznai100) 最近,DeepMind 开发出了世界上第一个深度强化学习 AI ,可以在模拟环境和真正的核聚变装置中实现对等离子体的自主控制。 这项研究成果登上了《Nature》杂志。 托卡马克是一种用于…

windows下安装mysql8.0压缩版
下面总结下安装过程: 首先解压下载好的压缩版本。将解压后mysql的bin文件目录配置系统环境path变量中使用cmd打开命令窗口,输入mysqld --initialize命令初始化mysql的data数据目录,记住初始化完毕后,会在解压目录下生成一个data文…

Linux实时监控工具Nmon使用
官网:http://nmon.sourceforge.net/pmwiki.php?nMain.HomePage 下载:http://sourceforge.net/projects/nmon/files/nmon_linux_14g.tar.gz 解压: #chmod ux nmon_x86_64_sles11 #chmod 777 nmon_x86_64_sles11 版本不同,对应文件…

英特尔2022年投资者大会:公布技术路线图及重要节点
在英特尔2022年投资者大会上,英特尔CEO帕特基辛格和各业务部门负责人概述了公司发展战略及长期增长规划的主要内容。在半导体需求旺盛的时代,英特尔的多项长期规划将充分把握转型增长的机遇。在演讲中,英特尔公布了其主要业务部门的产品路线图…

20151102adonet2
实现增删改查 ExecuteNonQuery:执行增删改语句,返回值为该命令所影响的行数. ExecuteReader:执行查询,并返回 一个DataReader对象. ExecuteScalar:执行查询,返回查询数.(删除修改时判断记录是否存在) string strSql string.Format("select count(*) from RNews where New…

day07 -文件的基本操作
1、什么是文件? 文件是操作系统为用户或应用程序提供的一个读写硬盘的虚拟单位文件的操作核心就:读、写即我们只需要对于进行读写操作,就是对操作系统发起请求,然后由操作系统将用户或者应用程序对文件的读写操作转换成具体的硬盘…

淘宝Tengine服务器开源
http://tengine.taobao.org/index_cn.htmlTengine是由 淘宝核心系统部基于Nginx开发的Web服务器,它在 Nginx的基础上,针对大访问量网站的需求,添加了很多功能和特性。Tengine的性能和稳定性已经在大型的网站如 淘宝网, 淘宝商城等…

22个案例详解Pandas数据分析/预处理时的实用技巧,超简单
作者 | 俊欣来源 | 关于数据分析与可视化今天小编打算来讲一讲数据分析方面的内容,整理和总结一下Pandas在数据预处理和数据分析方面的硬核干货,我们大致会说Pandas计算交叉列表Pandas将字符串与数值转化成时间类型Pandas将字符串转化成数值类型Pandas当…

PL/SQL 中Returning Into的用法
ORACLE的DML语句中可以指定RETURNING INTO语句。RETURNING INTO语句的使用在很多情况下可以简化PL/SQL编程,少一次select into语句。DELETE操作:RETURNING返回的是DELETE之前的结果; INSERT操作:RETURNING返回的是INSERT之后的结果…

Java常用多线程辅助工具---countdownLatch
为什么80%的码农都做不了架构师?>>> 前言 上一篇博文说到semaphore,一个加强版的synchronized,该多线程辅助工具适用于控制对资源操作或者访问的场景。现在有一张场景是,需要等各个线程都都执行完了再进行下一步的操作…

听说,英特尔要对外开放 x86 授权?
整理 | 郑丽媛出品 | CSDN(ID:CSDNnews)同为主流芯片架构,相较于可申请授权的 ARM 和开源的 RISC-V,x86 一直以来都保持着“高高在上”的立场——唯有英特尔和 AMD 拥有 x86 授权。但目前看来,x86 的“高冷…

Linux下gedit显示行号
Gedit 编辑->视图

关于String数组的用法
android ContextWrapper.getResources(ContextWrapper.java:89) getResources()报错原因是在OnCreate方法外 无法完成Context的初始化 正确做法: String[] names;names new String[6];names[0] getResources().getString(R.string.a);names[1] getResources().g…

使用RabbitMQ做数据接收和处理时,自动关闭
场景:N个客户端向MQ里发送数据;服务器上有另一个控制台程序(假设叫ServerClient)来处理这里数据(往数据库保存)。方向为Client * n→MQSERVER→ServerClient 问题:ServerClient自动关闭,没有错误日志&#…

在 Python 中妙用短路机制
作者 | 费弗里来源 | Python大数据分析本期我们即将学习的是:Python中短路机制的妙用。不同于物理学中的「短路」(Short circuit)那般危险,Python中的短路机制非常有用,跟很多其他编程语言中的短路机制作用类似&#x…

《Advanced PHP Programming》读书笔记
此书无中文版,但是写的极好!本来想翻译的,可是时间不允许了。 http://www.amazon.com/Advanced-PHP-Programming-George-Schlossnagle/dp/0672325616/refpd_rhf_dp_p_t_1约定:加粗字体表示章节,由于时间关系解释性的说…

cookie记录用户的浏览商品的路径
在电子商务的网站中,经常要记录用户的浏览路径,以判断用户到底对哪些商品感兴趣,或者哪些商品之间存在关联。 下面将使用cookie记录用户的浏览过的历史页面。该网站将每个页面的标题保存在该页面的$TITLE 变量中,用户每访问一次&a…