CentOS编译安装lighttpd配置静态资源服务器
December 7, 2010 – 7:23 pm简介
Lighttpd是一个德国人领导的开源软件,其根本的目的是提供一个专门针对高性能网站,安全、快速、兼容性好并且灵活的web server环境。具有非常低的内存开销,cpu占用率低,效能好,以及丰富的模块等特点。lighttpd是众多OpenSource轻量级的web server中较为优秀的一个。支持FastCGI, CGI, Auth, 输出压缩(output compress), URL重写, Alias等重要功能。就目前国内的应用来看,好像lighttpd都是和亲爱的python搭伙,参考网上的文章,我们拿lighttpd作为静态资源服务器,这样也好,毕竟nginx + php fast-cgi已经很强大了,我们就让lighttpd担负起静态资源服务器的重任吧。
测试环境
CentOS 5.5 x86_64,安装开发工具和开发库。
安装并启动
安装pcre开发库
安装lighttpd
cd lighttpd-1.4.26
./configure --prefix=/usr/local/lighttpd --with-pcre
make && make install
添加管理脚本
ln -s /usr/local/lighttpd/sbin/lighttpd /usr/sbin/lighttpd
创建配置文件
cp doc/lighttpd.conf /etc/lighttpd/lighttpd.conf
使用cronolog来分割服务器访问日志
cd cronolog-1.6.2
./configure
make && make install
创建日志和默认站点目录
修改lighttpd配置文件
sed -i 's#server.errorlog = "/var/log/lighttpd/error.log"#server.errorlog = "/www/logs/error.log"#' /etc/lighttpd/lighttpd.conf
sed -i 's#accesslog.filename = "/var/log/lighttpd/access.log"#accesslog.filename = "| /usr/local/sbin/cronolog /www/logs/access.log.%Y%m%d"#' /etc/lighttpd/lighttpd.conf
启动lighttpd
让lighttpd支持图片防盗链
首先开启mod_redirect模块,然后添加如下代码。
server.document-root = "/image/upload/"
$HTTP["referer"] !~ "^($|http://.*\.(xxx|yyy\.com|zzz\.cn))" {
$HTTP["url"] =~ "\.(jpg|jpeg|png|gif|rar|zip|mp3)$" {
url.redirect = (".*" => "http://www.xxx.com/404.html")
}
}
}
备注
1.用好lighttpd的configtest功能
修改配置文件,重新载入lighttpd时,有些错误是不在屏幕上打印的,这时就会误导你作出错误的判断。而lighttpd的管理脚本又没有configtest功能,所以我们在reload之前,最好测试一下配置文件是否有错误,使用方法如下:
Syntax OK
2.lighttpd的配置中,大括号不能独占一行
有的时候我们为了后期看程序时一目了然,清晰可读,一般会让大括号独占一行,这也是很多公司编码规则中的一条。经过多年维护其他人的程序,尤其是复杂的程序,大括号独占一行,有时候确实有阅读清晰的妙处,但是,lighttpd是不允许大括号独占一行的。配置代码如果这样写,是会报错的。

报错信息如下:
2010-12-08 10:11:41: (configfile.c.907) source: /etc/lighttpd/lighttpd.conf line: 171 pos: 9 parser failed somehow near here: (EOL)
我们修改不允许大括号独占一行,测试合格。
Syntax OK