查看: 7124|回复: 0
打印 上一主题 下一主题

Lighttpd介绍与安装

[复制链接]
跳转到指定楼层
1#
发表于 2008-12-1 18:26:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
台州网址导航
lighttpd是一个德国人领导的开源软件,其根本的目的是提供一个专门针对高性能网站,安全、快速、兼容性好并且灵活的webserver环境。具有非常低的内存开销,cpu占用率低,效能好,以及丰富的模块等特点。lighttpd是众多OpenSource轻量级的webserver中较为优秀的一个。支持FastCGI, CGI, Auth, 输出压缩(output compress), URL重写, Alias等重要功能,而Apache之所以流行,很大程度也是因为功能丰富,在lighttpd上很多功能都有相应的实现了,这点对于apache的用户是非常重要的,因为迁移到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确实非常不错,apache主要的问题是密集并发下,不断的fork()和切换,以及较高(相对于 lighttpd而言)的内存占用,使系统的资源几尽枯竭。而lighttpd采用了Multiplex技术,代码经过优化,体积非常小,资源占用很低,而且反应速度相当快。

    利用apache的rewrite技术,将繁重的cgi/fastcgi任务交给lighttpd来完成,充分利用两者的优点,现在那台服务器的负载下降了一个数量级,而且反应速度也提高了一个甚至是2个数量级!

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

    安装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

    这样就可以跑起来了:)
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖
台州维博网络(www.tzweb.com)专门运用PHP+MYSQL/ASP.NET+MSSQL技术开发网站门户平台系统等。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

网站推广
关于我们
  • 台州朗动科技(Tzweb.com)拥有多年开发网站平台系统门户手机客户端等业务的成功经验。主要从事:政企网站,系统平台,微信公众号,各类小程序,手机APP客户端,浙里办微应用,浙政钉微应用、主机域名、虚拟空间、后期维护等服务,满足不同企业公司的需求,是台州地区领先的网络技术服务商!

Hi,扫描关注我

Copyright © 2005-2026 站长论坛 All rights reserved

Powered by 站长论坛 with TZWEB Update Techonolgy Support

快速回复 返回顶部 返回列表