lighttpd的安装和基本模块的使用介绍

    前端时间以为系统的需要,就弄了个lighttpd,主要是使用flowplayer和lighttpd搭建一个在线的flv流媒体播放功能。而且lighttpd也是有mod_flv_streaming模块来支持flv视频的流播放功能,不过我也是只是简单的使用了其中的功能,并不是很深入,但是入门还是可以的。

    首先就是lighttpd的安装了,lighttp的安装需要pcre-7.6.tar.gz,主要是正则式的解析,安装包如下:

1.pcre-7.6.tar.gz    (http://www.pcre.org/)
2.lighttpd-1.4.19.tar.gz   (http://www.lighttpd.net/download/)

一、安装pcre和lighttpd

01 // pcre的安装
02 #tar xf pcre-7.6.tar.gz
03 #cd pcre-7.6
04 #./configure
05 #make clean
06 #make
07 #make install
08
09 // lighttpd的编译安装
10 #tar xf lighttpd-1.4.19.tar.gz
11 #cd lighttpd-1.4.19
12 #./configure --prefix=/usr/local/lighttpd
13 #make clean
14 #make
15 #make install
16
17 // lighttpd的配置文件、用户组和用户的配置
18 #mkdir /usr/local/lighttpd/etc
19 #cp doc/lighttpd.conf /usr/local/lighttpd/etc
20 #groupadd lighttpd
21 #useradd -g lighttpd lighttpd
22
23 // lighttpd的日志文件设置
24 #mkdir /usr/local/lighttpd/logs
25 #vi /etc/init.d/lighttpd
26 修改LIGHTTPD_CONFIG=/etc/sysconfig/lighttpd为/usr/local/lighttpd/etc/lighttpd.conf
27 修改LIGHTTPD_BIN=/usr/sbin/lighttpd为/usr/local/lighttpd/sbin/lighttpd

二、lighttpd的简单配置和主要参数说明

#vi /usr/local/lighttpd/etc/lighttpd.conf
 server.modules 根据需要启动模块
 server.document-root 改为你的网站的根目录(如/www)
 server.errorlog 改为错误日志的路径(如/usr/local/lighttpd/logs/error.log)
 accesslog.filename 改为访问日志的路径(如/usr/local/lighttpd/logs/access.log)

三、启动lighttpd

#/usr/local/lighttpd/sbin/lighttpd -f /usr/local/lighttpd/etc/lighttpd.conf

  然后我们在/www下建立一个index.html,输入hello,然后访问该服务器即可看到该页面,即表明lighttpd安装成功!
lighttpd的命令如下:
#/usr/local/lighttpd/sbin/lighttpd --help
-f <name> 指定配置文件的路径
-m <name> 指定模块的加载目录,默认是/usr/local/lighttpd/lib
-p        在屏幕上显示解析后的配置文件信息(运行信息),要指定-f参数
-t        检测配置文件的正确行,要指定-f参数
-D        设置lighttpd非后台运行,默认是后台运行
-v        显示lighttpd的版本
-V        显示lighttpd的编译时特性信息
-h        显示帮助信息,同--help

四、lighttpd的模块配置

    lighttpd按照上面的安装步骤后,其所有模块都已经安装在/usr/local/lighttpd/lib目录下了,我们设置在server.modules中的模块名称和lib目录下的模块文件的名称一致即可,如mod_secdownload.so就是表示mod_secdownload模块。我们可以在server.modules的列表中增加mod_secdownload来使lighttpd支持mod_secdownload。另外还可以使用这样的语法来增加模块:server.modules += ("mod_secdownload")

1)rewrite 模块配置
    如果要配置rewrite模块,则直接在lighttpd.conf文件中书写:
url.rewrite-once = (
  "^/show-([0-9]+)\.html" => "$1.html",
  "^/v/show-([0-9]+)\.html" => "$1.html"
)

    如果有多个,则使用,分割开写即可,如上说述!另外还有url.rewrite-repeat等方式,请参看文档http://trac.lighttpd.net/trac/wiki/Docs%3AConfigurationOptions!其基本的正则式和apache的rewrite模块基本一样,只是书写形式不一样而已。比如按照上面的rewrite规则,我们在www目录下建立文件:123.html,然后访问:http://localhost:8080/show-123.html即可以访问到123.html这个文件了,和直接访问:http://localhost:8080/123.html是一样的效果。
 

2)secdownload 模块配置
    secdownload是安全下载模块,其主要原理就是根据时间戳来判断请求是否已经超时了,如果超过了指定的时间那么将不允许访问指定的资源,否则就是可以访问。其在lighttpd.conf文件中的配置如下:

secdownload.secret          = "my-password"
secdownload.document-root   = "/home/my-download/"
secdownload.uri-prefix      = "/rs/dl/"
secdownload.timeout         = 60

    先来说下lighttpd针对该模块的url要求,如果使用lighttpd的secdownload模块,那么其请求的url地址必须满足特定的要求才可以,其要求的url格式如下:

<uri-prefix>/<token>/<timestamp-in-hex>/<rel-path>

    其url地址由四个部分组成,分别说明如下:
1.<uri-prefix>:配置文件中secdownload.uri-prefix指定的前缀;

2.<token>:是由配置文件中指定的secdownload.secret要下载的文件的路径(必须以/开头)时间戳三者连接后的MD5加密后的字符串,注意官方网站上提供的例子是php的,其中php的time()获取的就是从1970年到当前的标准时间(单位是秒)的8进制表示形式,如果是使用java的话,那么可以通过如下代码来获取:

1 String timestamp = String.format("%08x", System.currentTimeMillis()/1000);

   因为System.currentTimeMillis()获取的是毫秒,所以应该除1000,这样才可以。比如我要下载的文件的文件存放路径为:/home/my-download/aa.txt。注意到这里的路径前缀就是配置文件中的secdownload.document-root的值,最好是将secdownload.document-root的值设置在当前lighttpd的server.document-root目录之外,这样就可以避免直接下载了。那么针对这个文件动态生成token的java代码就应该是如下了:

1 String timestamp = String.format("%08x", System.currentTimeMillis()/1000);
2 String encoder = Encrypt.MD5("my-password" + "/aa.txt" + timestamp);

    其中Encrypt.MD5是我自己的一个MD5加密方法,大家可以自己写一个,注意该方法中三个部分我是分开写的,第一个就是我们在lighttpd配置文件中设置的secdownload.secret,第二个就是我们要下载的文件名称(包括路径),是相对secdownload.document-root的路径而言的,第三个部分就是我们获取到的当前的时间戳了。这样我们就可以动态的生成了一个满足lighttpd要求的token。

3.<timestamp-in-hex>:就是我们刚才生成的时间戳,即上面的timestamp了;

4.<rel-path>:这个就是我们要下载的文件,也就是aa.txt了。

    配置文件中secdownload.timeout是用来校验时间戳在多长时间后失效的,我们这里设置的是1分钟,即60秒。这表明,从我们生成下载地址后的60s内如果没有人点击这个地址那么该链接就将失效。这样也就可以基本防止文件被随意下载了。

3)mod_proxy 代理模块配置
    该模块主要是用来连接lighttpd和动态服务器的,如tomcat,在配置文件中输入如下:

$HTTP["url"] =~ ".jsp|.go|.do|action" {
    proxy.balance = "fair"
    proxy.server = ( "" => ( ( "host" => "127.0.0.1", "port" => 8080 ),("host" => "127.0.0.1", "port" => 18080) ))
}

    其中host字段表示代理服务器的配置(ip和端口),如果有多个则可以配置负载服务器,这里配置的是两个。proxy.loadblance用来做负载,具体的没有研究过,大家可以参看官方文档详细了解下。

    这里主要简单的说了lighttpd的安装部署和简单模块的使用,希望可以和大家一起相互交流~~~

阅读更多

没有更多推荐了,返回首页