Lighttpd 中文网

栏目:技巧与优化      4,350 views

前提:还是针对高负载,静态页面,freebsd系统的web应用。
如果非要在LSWS(LiteSpeed Web Server)和lighttpd中间做的选择的话,我觉得是困难的。从现存的网上资料中很难有个权威的说法。因为测试没有特别的标准。例如在当前情况下,web server的配置是不是达到最优,甚至当你只对一中webserver测试的时候,你也会发现同种配置下连续测试,他们的结果都可能在波动。所以有时候很可能分不清哪种配置是最优秀的,适合当前情况。在这种情况下只能经过大量的反复的实验和观察。
下面是LSWS官方网站的一个测试图,可以看出LSWS和lighttpd在keep alive情况下差不大,当然不排除他们对自己的web server的偏向,或则他们更熟悉自己的server彻底配置。
图片太大,显示不完,建议拽出来看。[url]http://www.litespeedtech.com/images/bench/ka.gif[url]
就使用的技术而言,lighttpd使用了Linux 2.6+使用epoll,而在FreeBSD上使用了kqueue。默认的都是poll,而我们的系统是freebsd,很不幸的是,当我在bsd上使用 kqueue特性时,测试的结果显示,效率明显变低。我没想明白为什么,c10k的文章我没有足够时间去读,可以做个参考。

标签:
阅读全文      尚无回复

栏目:安装与配置      5,911 views

最近都在玩Linux,有点体会。和大家分享下lighttpd在WebDAV的应用。在这里,我以Fedora Core 4来制作有关lighttpd的WebDAV服务器。
因为Fedora Extras的lighttpd-1.3.16-2.fc4中没有包含WebDAV的组件,所以我使用从lighttpd的官方站(http://www.lighttpd.net/)下载的最新版”SRPM(lighttpd-1.4.10-1.src.rpm)”来制作RPM。之所以从SRPM再来制作RPM,是因为RPM的lighttpd是以SSL为OFF状态下编译完成的。

如果你下载了lighttpd-1.4.10-1.src.rpm,就在命令行下把SSL修改成如下:

# rpmbuild –rebuild –with ssl lighttpd-1.4.10-1.src.rpm

在/usr/src/redhat/RPMS/i386里将lighttpd-1.4.10-1.i386.rpm编译好并安装。由于在yum命令行上安装Fedora Extras的lighttpd,就必须remove一下。以防保险还必须将/etc/lighttpd/lighttpd.conf做下备份。

标签: ,
阅读全文      1 枚回复

栏目:安装与配置      4,638 views

花了差不多一天時間整理的.
不過 lighttpd 部份的 config 還是沒有修改
看來下一篇寫的是相關的 config 修改吧..

################
# 基本環境安裝
################

# 更新並升級軟體庫
sudo apt-get update
sudo apt-get upgrade

# 安裝 GCC , G++, make, ZIP
sudo apt-get install gcc
sudo apt-get install g++
sudo apt-get install make
sudo apt-get install unzip

# 安裝 termcap (MYSQL 編譯所需)
sudo apt-get install ncurses-dev

# 切換為 ROOT 方便之後工作
sudo su -

栏目:技巧与优化      4,508 views

#lighttpd默认只启动一个进程工作,但也支持apache那样启动多个进程

server.max-worker = 4

# max-connections == max-fds/2 (maybe /3)
server.max-connections = 1024
server.max-fds = 2048

Module: mod_mem_cache
需要mod_mem_cache支持
-------------------------------
mem-cache.filetypes
content-type arrays which want to put into memory.

mem-cache.filetypes=(”text/css”)
Default: not set, cache all files

栏目:技巧与优化 , 模块mod      5,666 views

vi /jeffrey/app/lighttpd-1.4.19/conf/lighttpd.conf

server.modules              = (
…..
“mod_access”,
“mod_flv_streaming”,
…….)

flv-streaming.extensions = ( “.flv” )

/app/lighttpd-1.4.19/sbin/lighttpd -f /app/lighttpd-1.4.19/conf/lighttpd.conf

注: 简单修改一下 自带的doc/rc.lighttpd文件,就可以作服务控制脚本了

flowplayer播放器
下载: http://flowplayer.org/
将代码放入lighttpd的webroot目录下,并修改相应html代码,
具体可参照http://flowplayer.org/player/configuration.htm

栏目:安装与配置 , 模块mod      2,766 views

模块不是官方自带,需要手工下载。
插件下载页面:http://www.linux.com.cn/modcache/
wget http://www.linux.com.cn/modcache/lighttpd-1.4.19.modcache.v.1.6.0.patch
# patch -p0 < lighttpd-1.4.19.modcache.v.1.6.0.patch
# sh autogen.sh

配置:
“mod_cache”,
“mod_proxy”,
cache.bases=(”/data/cache”)
cache.enable = “enable”
cache.domains = (”zhangjianfeng.com$”)
cache.support-queries = “enable”
cache.purge-host = “^(192\.168\.|218\.50\.15\.)”
cache.refresh-pattern = (
“/$” => “5 update-on-refresh no-expire-header”,
“\.(?i)(flv)$” => “0 fetchall-for-range-request flv-streaming”,
“\.(?i)(js|css|xml)$” => “240″,
“\.(?i)(htm|html|shtml)$” => “30″,
“\.(?i)(jpg|bmp|jpeg|gif|png)$” => “2880″,
“\.(?i)(rar|zip|wmv|avi|mp3|ape|rm|mpeg|mpg|wma|asf|rmvb|flv)$” => “0 fetchall-for-range-request”,
“.” => “30 update-on-refresh”
)

栏目:安装与配置      2,437 views

一. 编辑lighttpd.conf
server.modules = (

“mod_secdownload”,
“mod_flv_streaming”,
“mod_h264_streaming”,

)
# mod_secdownload必须放在上面,不然拖动无效.即?start=无效
# 可以手工wget http://xxx.com/path/filename.mp4?start=100/1000等测试

栏目:安装与配置 , 技巧与优化      5,436 views

一. 基本安装

二.性能调整

三. 参数配置

# 静态文件压缩

# mod_expire扩展

# rewirte & redirect

配置虚拟主机

lighttpd限制IP和限制速度

限制单IP最大数

栏目:系统安全      17,270 views

Apache 中有防止DoS攻击的模块mod_evasive。lighttpd中也可以用mod_evasive来限制并发连接数防止DDOS攻击

在lighttpd.conf中添加如下代码来启用mod_evasive,对于zip,mp3等文件下载不启用此限制,否则用户下载文件超过2个的时候会弹出网站无法连接窗口,影响用户体验。

$HTTP[“url”] =~ ”\.(zip|mp3|mp4|rar|pdf)$” {
evasive.max-conns-per-ip = 2
}

重启lighttpd 生效。

栏目:源码分析      2,398 views

9  Bitset.c源码分析
9.1 bitset数据结构体定义
bitset定义在对应的bitset.h头文件内,结构如下:
typedef struct {
size_t *bits;
size_t nbits;
} bitset;

字段bits类似于记录保存比特的数组(通过一连串的size_t类型存储空间),而nbits记录该数组内的比特元素数目。
为了更好的理解这个结构体的字段元素,只要看其对应的初始化函数bitset_init就行了。在该函数内,传入的参数nbits表示初始化分配的bit元素个数,而对于bits指向的空间分配必须是size_t类型的整数倍(size_t 是为了方便系统之间的移植而定义的,在32位系统上 定义为 unsigned int,在64位系统上 定义为 unsigned long,更准确地说法是 在 32位系统上是32位无符号整形,在 64位系统上是64位无符号整形,size_t一般用来表示一种计数,比如有多少东西被拷贝等。)因此BITSET_USED宏就是起这个(计算nbits是size_t类型长度的多少整数倍)作用。BITSET_USED宏内涉及到的另外一个宏BITSET_BITS用于计算size_t类型长度(CHAR_BIT定义在/usr/include/limits.h头文件内,例如为“# define CHAR_BIT 8”,表示一个字节有多少比特)。
举个例子,如下图所示(在32位机器上),当参数nbits为25时,虽然25小于一个size_t类型长度(32),但仍需分配一个size_t类型长度的内存空间。