开源中文网

您的位置: 首页 > Linux应用 > Lighttpd > 正文

Lighttpd安装日志

来源:  作者:

为什么使用Lighttpd,从性能方面来说,首先考虑单进程与多进程问题,这也是我为什么不想使用 Apache的原因,多进程服务器的惊群问题,简单来说多进程服务(例如Apache)在一个请求发送时候会唤醒所有sleep的进程,但是最终服务的只有一个,在进程数目很多,请求频繁的时候这会造成一个大困扰,系统会忙于切换进程,如果看Top会发现CPU使用在system的比例很高,至于 Lighttpd则使用单进程来响应quest,使用libevent,poll()作为event handler,如果在linux2.4下,还可以选择rtsig作为event handler。如果不使用大文件(>4G)支持,lighttpd使用sendfile()来发送文件,完全的zero-copy,在这方面性能表现是占优的。同时Lighttpd使用FastCGI来做动态脚本处理,经过实测,在性能表现上也可以接受。

另外就是原先使用Apache的用户迁移成本会比较少,Lighttpd语法与Apache接近,并且核心功能基本实现,我关注的就是 url_rewrite,PHP(这是当然的),alias,custom_log这几个模块,语法接近,并且也同样支持跟cronolog的管道配合日志,所以迁移之后功能都可以实现。另外我比较了Apache和Lighttpd的Suexec方案,虽然目前Lighttpd并没有官方模块来支持这一特性,但是就实现的难度来看,跟Apache1.3乃至Apache2+MPM差不多……(如果希望安全的使用Apache2+MPM+PHP,一样需要 FastCGI模式)

如此,我们就可以开始尝试了,首先是Lighttpd的下载,然后把PHP安装为cgi模式,你可能需要安装Libevent,如果需要url_rewrite支持,还需要pcre,安装基础安装可以看TutorialLighttpdAndPHP

安装PHP

./configure \
--prefix=/usr/local/php-cgi \
--enable-fastcgi \
--enable-discard-path \
--enable-force-redirect \
&&make \
&&make install

在php.ini里边修改你的设置

cgi.fix_pathinfo = 1

安装Lighttpd

./configure \
--prefix=/usr/local/lighttpd \
&& make \
&& make install 

设定文件范例 PHP部分

fastcgi.server = ( ".php" =>
(( "socket" => "/tmp/php-fastcgi.socket",
"bin-path" => "/usr/local/php-cgi/bin/php",
"idle-timeout" => 30,
"min-procs" => 1,
"max-procs" => 1,
"bin-environment" => (
"PHP_FCGI_CHILDREN" => "1",
"PHP_FCGI_MAX_REQUESTS" => "10000" ),
"bin-copy-environment" => (
"PATH", "SHELL", "USER" ),
"broken-scriptfilename" => "enable"
))
)

一个简单的启动/停止脚本

#!/bin/sh

LIGHTTPD_CONFIG=/usr/local/apache04/conf/httpd.conf
LIGHTTPD_BIN=/usr/local/apache04/sbin/lighttpd
LIGHTTPD_PID=/usr/local/apache04/lighttpd.pid
test -r $LIGHTTPD_CONFIG || exit 6

case "$1" in
start )
echo -n "Starting lighttpd"
$LIGHTTPD_BIN -f $LIGHTTPD_CONFIG
;;
stop )
echo -n "Shutting down lighttpd"
killall lighttpd
rm $LIGHTTPD_PID
;;
esac
exit 0

这样就可以跑起来了:)

Lighttpd

libevent

PCRE


Tags:Lighttpd 安装 日志
关于开源中文网 - 联系我们 - 广告服务 - 网站地图 - 版权声明