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开发库

yum -y install pcre-devel

安装lighttpd

tar zxf lighttpd-1.4.26.tar.gz
cd lighttpd-1.4.26
./configure --prefix=/usr/local/lighttpd --with-pcre
make && make install

添加管理脚本

cp doc/rc.lighttpd.redhat /etc/init.d/lighttpd1426
ln -s /usr/local/lighttpd/sbin/lighttpd /usr/sbin/lighttpd

创建配置文件

mkdir /etc/lighttpd
cp doc/lighttpd.conf /etc/lighttpd/lighttpd.conf

使用cronolog来分割服务器访问日志

tar zxf cronolog-1.6.2.tar.gz
cd cronolog-1.6.2
./configure
make && make install

创建日志和默认站点目录

mkdir /www /www/logs /www/htdocs

修改lighttpd配置文件

sed -i 's#server.document-root        = "/srv/www/htdocs/"#server.document-root = "/www/htdocs"#' /etc/lighttpd/lighttpd.conf
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

/etc/init.d/lighttpd1426 start

让lighttpd支持图片防盗链

首先开启mod_redirect模块,然后添加如下代码。

$HTTP["host"] == "upload.xxx.com" {
    
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之前,最好测试一下配置文件是否有错误,使用方法如下:

[root@vps1 ~]# /usr/local/lighttpd/sbin/lighttpd -f /etc/lighttpd/lighttpd.conf -t
Syntax OK

2.lighttpd的配置中,大括号不能独占一行
有的时候我们为了后期看程序时一目了然,清晰可读,一般会让大括号独占一行,这也是很多公司编码规则中的一条。经过多年维护其他人的程序,尤其是复杂的程序,大括号独占一行,有时候确实有阅读清晰的妙处,但是,lighttpd是不允许大括号独占一行的。配置代码如果这样写,是会报错的。

报错信息如下:

[root@vps1 ~]# /usr/local/lighttpd/sbin/lighttpd -f /etc/lighttpd/lighttpd.conf -t
2010-12-08 10:11:41: (configfile.c.907) source: /etc/lighttpd/lighttpd.conf line: 171 pos: 9 parser failed somehow near here: (EOL)

我们修改不允许大括号独占一行,测试合格。

[root@vps1 ~]# /usr/local/lighttpd/sbin/lighttpd -f /etc/lighttpd/lighttpd.conf -t
Syntax OK

Post a Comment