| |
一、lighttpd介绍
在原来的系统中使用apache作为web页面的服务器,apache占用的内存很多,在虚拟机中,一个apache进程占用的内存大约是20M,最大的可能占到35M以上,占用的共享内存都在100多M以上,而且一个系统中一般都存在多个apache进程处理不同的请求,这样虚拟机中apache的进程占用的内存能达到100M。因此在运行多个虚拟机的server中极易出现由于内存不够而无法访问界面的情况。lighttpd是一个非常轻便的web服务器,虽然它的功能没有apache强大,但是可以满足大部分的服务要求。它的内存占用量一般是2M左右,占用的共享内存是20M左右,而且与apache实现机制不同的是,lighttpd采用单进程多路复用的方式响应请求,在系统中一般只有一个lighttpd进程响应服务请求。所以从内存占用量的角度看,lighttpd有很大的优势。
而且,apache需要使用mod_perl或fast-cgi才能提高访问速度,但是系统中配置了lighttpd后,其访问速度没有明显的下降,所以与apache相比,lighttpd是一个理想的web服务器。此外,lighttpd也可以通过配置fast-cgi加速页面的访问。
二、lighttpd的安装和配置
在gentoo环境中安装lighttpd,只需要使用emerge lighttpd命令就可以。安装完后,需要对lighttpd服务器进行配置。
lighttpd的配置文件保存在/etc/lighttpd目录下,在该目录下,有四个配置文件,其中lighttpd.conf是在启动lighttpd时读取的配置文件,其余的配置文件必须经由lighttpd.conf引用后才能生效。mime-types.conf定义了各种文件格式,在lighttpd.conf中默认引用该配置文件。mod_cgi.conf是cgi的配置文件,如果界面文件使用perl_cgi解释,需要在lighttpd.conf中引用该文件,使用该方式解释,其配置方法见下文。mod_fastcgi.conf是使用fast-cgi的配置文件。
2.1 lighttpd.conf的配置
lighttpd.conf文件的前几行分别定义了代码保存路径、日志文件保存路径和状态文件保存路径,如下:
var.basedir = "/usr/local/vsds/rw/perl/UI"
var.logdir = "/var/log/lighttpd"
var.statedir = "/var/lib/lighttpd"
在本例中配置cgi解释,所以在lighttpd中增加引用mod_cgi.conf的包,如下所示:
include "mod_cgi.conf"
server.modules定义了lighttpd运行时要使用的包,因为我们需要使用alias为界面代码保存的路径指定别名,所以需要使用mod_alias这个包,将其前面的"#"去掉就可以。
其次在该文件中还可以定义服务的端口号、日志文件的名字等,一般保持默认配置。
2.2 mod_cgi.conf的配置
在mod_cgi中指定界面文件保存路径的别名,是否在请求时要列出该目录下所有文件(对于下载目录有意义),对于保存perl文件的路径一般要指定其解释器(可选)。mod_cgi.conf文件的内容如下:
server.modules += ("mod_cgi")
# NOTE: this requires mod_alias
alias.url = (
"/cgi-bin/" => var.basedir + "/controller/",
"/icons/vsds/" => var.basedir + "/icons/vsds/",
"/disaster/" => "/usr/local/vsds/rw/perl/DUI/html/",
"/gif/" => "/usr/local/vsds/rw/perl/DUI/icons/",
"/controller/" => "/usr/local/vsds/rw/perl/DUI/controller/"
)
#
# Note that you'll also want to enable the
# cgi-bin alias via mod_alias (above).
#
$HTTP["url"] =~ "^/cgi-bin/" {
# disable directory listings
dir-listing.activate = "disable"
# only allow cgi's in this directory
cgi.assign = (
".pl" => "/usr/bin/perl",
".cgi" => "/usr/bin/perl"
)
}
$HTTP["url"] =~ "^/icons/vsds/" {
dir-listing.activate = "disable"
}
$HTTP["url"] =~ "^/disaster/" {
dir-listing.activate = "disable"
}
$HTTP["url"] =~ "^/gif/" {
dir-listing.activate = "disable"
}
$HTTP["url"] =~ "^/controller/" {
# disable directory listings
dir-listing.activate = "disable"
# only allow cgi's in this directory
cgi.assign = (
".pl" => "/usr/bin/perl",
".cgi" => "/usr/bin/perl"
)
}
在该配置文件中配置了多个请求,属性dir-listing.activate指定是否在请求该目录时列出所有文件,一般定义为“disable”。因为在一个完整的lighttpd.conf文件中只允许定义一个alias结构,在引用了mod_cgi.conf后,mod_cgi.conf中定义了alias模块,所以只能将所有的alias都定义在该文件中,包括图标路径、html路径和perl路径,如配置文件所示。
2.3 配置ssl
lighttpd支持通过ssl传送数据,而且配置也很简单。在配置ssl之前,需要先生成lighttpd的pem文件,生成.pem的命令如下:
cd /etc/ssl/certs
openssl req -new -x509 -keyout lighttpd.pem -out lighttpd.pem -days 365 -nodes
chown www-data:www-data lighttpd.pem
chmod 600 lighttpd.pem
在安装时,可以直接将lighttpd.pem拷贝到/etc/ssl/certs下,然后在lighttpd.conf文件中指定需要ssl认证,将lighttpd.conf中关于ssl配置语句前的"#"去掉,并在ssl.pemfile处指定正确的pem文件的路径。
ssl.engine = "enable"
ssl.pemfile = "/etc/ssl/certs/lighttpd.pem"
启动lighttpd服务,/etc/init.d/lighttpd start 就可以了 |
|