lighttpd 介绍及安装

摘要:
当支持纯静态对象(如图像和文件)时,lighttpd更快、更理想。至于它与Apache的比较,你可以搜索很多文档。在哪里可以下载lighttpd?1.编译并安装/完成configure--prefix=/usr/local/lighttpdmakemakeinstallconfigure后,将提供已激活模块和未激活模块的列表。您可以检查所需的所有模块是否已激活。启用的模块中必须有“mod_rewrite”。否则,您可以重新检查是否安装了pcre。

一,为什么要使用lighttpd?
    apache不可以吗?
    在支持纯静态的对象时,比如图片,文件等 ,
    lighttpd速度更快,更理想 (lighttp 图片处理好,nginx负载均衡好)
    至于它和apache的比较,很多文档,大家可以google一下

二,从何处下载lighttpd?
    http://www.lighttpd.net/download/
    这个是它的官方站

三,如何安装?
    1,编译安装
      ./configure --prefix=/usr/local/lighttpd
      make
      make install

configure完毕以后,会给出一个激活的模块和没有激活模块的清单,可以检查一下,是否自己需要的模块都已经激活,在enable的模块中一定要有“mod_rewrite”这一项,否则重新检查pcre是否安装。

    2,编译后配置
      cp doc/sysconfig.lighttpd /etc/sysconfig/lighttpd
      mkdir /etc/lighttpd
      cp doc/lighttpd.conf /etc/lighttpd/lighttpd.conf
 
      如果你的Linux是RedHat/CentOS,那么:
      cp doc/rc.lighttpd.redhat /etc/init.d/lighttpd
      如果你的Linux是SuSE,那么:
      cp doc/rc.lighttpd /etc/init.d/lighttpd
      其他Linux发行版本可以自行参考该文件内容进行修改。
      然后修改/etc/init.d/lighttpd,把
      LIGHTTPD_BIN=/usr/sbin/lighttpd
      改为
      LIGHTTPD_BIN=/usr/local/lighttpd/sbin/lighttpd
 
      此脚本用来控制lighttpd的启动关闭和重起:
      /etc/init.d/lighttpd start 
      /etc/init.d/lighttpd stop 
      /etc/init.d/lighttpd restart
    3,配置
      修改/etc/lighttpd/lighttpd.conf
      1)server.modules
      取消需要用到模块的注释,mod_rewrite,mod_access,mod_fastcgi,mod_simple_vhost,mod_cgi,      mod_compress,mod_accesslog是一般需要用到的。
      我们放开                               "mod_rewrite"
                                             "mod_compress",
 
      2)server.document-root, server.error-log,accesslog.filename需要指定相应的目录
         server.document-root        = "/www/phc/html/"
         mkdir /usr/local/lighttpd/logs
         chmod 777 /usr/local/lighttpd/logs/
          touch /usr/local/lighttpd/logs/error.log
          chmod 777 /usr/local/lighttpd/logs/error.log

         server.errorlog             = "/usr/local/lighttpd/logs/error.log"
accesslog.filename             = "|/usr/sbin/cronolog /usr/local/lighttpd/logs/%Y/%m/%d/accesslog.log"

      3)用什么权限来运行lighttpd
         server.username            = "nobody"
         server.groupname           = "nobody"
         从安全角度来说,不建议用root权限运行web server,可以自行指定普通用户权限。
 
       4)静态文件压缩
          mkdir /usr/local/lighttpd/compress
          chmod 777 /usr/local/lighttpd/compress/
compress.cache-dir         = "/usr/local/lighttpd/compress/"
compress.filetype          = ("text/plain", "text/html","text/javascript","text/css")

          可以指定某些静态资源类型使用压缩方式传输,节省带宽,
          对于大量AJAX应用来说,可以极大提高页面加载速度。

        5)server.port                = 81

        6)#$HTTP["url"] =~ "/.pdf$" {
    131 #  server.range-requests = "disable"
    132 #}


    4,优化

     1 最大连接数

            默认是1024
            修改 server.max-fds,大流量网站推荐2048.

            因为lighttpd基于线程,而apache(MPM-prefork)基于子进程,
            所以apache需要设置startservers,maxclients等,这里不需要

     2 stat() 缓存

               stat() 这样的系统调用,开销也是相当明显的.
              缓存能够节约时间和环境切换次数(context switches)

              一句话,lighttpd.conf加上
              server.stat-cache-engine = “fam”

              lighttpd还另外提供simple(缓存1秒内的stat()),disabled选项.
              相信没人会选disabled吧.

      3 常连接(HTTP Keep-Alive)

             一般来说,一个系统能够打开的文件个数是有限制的(文件描述符限制)
            常连接占用文件描述符,对非并发的访问没有什么意义.

            (文件描述符的数量和许多原因有关,比如日志文件数量,并发数目等)

           这是lighttpd在keep-alive方面的默认值.
server.max-keep-alive-requests = 128
server.max-keep-alive-idle = 30

换言之,lighttpd最多可以同时承受30秒长的常连接,每个连接最多请求128个文件.
但这个默认值确实不适合非并发这种多数情况.

lighttpd.conf 中减小
server.max-keep-alive-requests
server.max-keep-alive-idle
两个值,可以减缓这种现象.

甚至可以关闭lighttpd keep-alive.
server.max-keep-alive-requests = 0

4 事件处理

对于linux kernel 2.6来说,没有别的可说
lighttpd.conf中加上这一句足矣
server.event-handler = “linux-sysepoll”

另外,
linux 2.4 使用 linux-rtsig
freebsd 使用 freebsd-kqueue
unix 使用 poll

5 网络处理

lighttpd 大量使用了 sendfile() 这样一个高效的系统调用.
减少了从应用程序到网卡间的距离.
(同时也减少了lighttpd对cpu的占用,这部分占用转嫁到内核身上了)

根据平台,可以设置不同的参数.
server.network-backend = “linux-sendfile”
(linux)
freebsd: freebsd-sendfile
unix: writev

如果有兴趣的话,也可以看看lighttpd在async io(aio)上的实现,仅限 lighttpd 1.5
(linux-aio-sendfile, posix-aio, gthread-aio)

此外,网络方面,核心的参数也需要适当进行修改,
这里就不需要详细说明了.


    5,启动
    6,配置日志
    logrotate & cronolog
logrotate很粗暴,直接把进程砍了然后移动日志
cronolog就是比较不错的方式.
lighttpd用法:
accesslog.filename = " |/usr/sbin/cronolog /var/log/lighttpd/%Y/%m/%d/access_XXXX.log"


    7,安装pcre
      从何处下载?
      http://www.pcre.org/
       wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-7.4.tar.bz2
     安装过程:
       
  ./configure
  make clean
  make
  make install

8,支持fam
   gamin默认已安装了此包
   yum install gamin-devel
 
   另外配置时需添加:
   ./configure --prefix=/usr/local/lighttpd --with-fam

9,测试lighttpd的启动:
/usr/local/lighttpd/sbin/lighttpd -f /usr/local/lighttpd/etc/lighttpd.conf

10,防止盗链
  #$HTTP["referer"] !~ "^($|http://.*/.(chinafotopress/.com|chinafotopress/.cn))" {       
#    $HTTP["url"] =~ "/.(jpg|jpeg|png|gif|rar|zip|mp3)$" {
#       #url.redirect = (".*"    => "http://www.baidu.com/")
#        url.access-deny = (".jpg")
#    }
#}

#$HTTP["referer"] == "" {
#    $HTTP["url"] =~ "/.(jpg|jpeg|png|gif|rar|zip|mp3)$" {
#       #url.redirect = (".*"    => "http://www.baidu.com/")
#        url.access-deny = (".jpg")
#    }
#}

免责声明:文章转载自《lighttpd 介绍及安装》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Linux命令之rm为枚举类型添加描述信息 this 扩展 泛型约束 位运算[转]下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

python之路_爬虫之requests模块初始

一、校花网视频爬取 1、正常爬取 import requests import re import hashlib import time import os downLoad_path=r'D:DOWNLOAD' def get_page(url): response=requests.get(url) if response.stat...

全局图片防盗链处理

概念:防盗链是指用户不经过我们的网站直接访问我们的图片 我们给他一个错误的图片处理 原理:获取当前与上一次请求的url 对其进行网站域名与端口号比较 如果相同则返回真实图片(如果从别的网站链接过来不可能返回true)否则返回错误图片 过程: 1、新建一个一般处理程序处理 2、在webconfiguration中添加httpHandlers节点信息 pu...

c#实现多线程代码例子

相信大家都有用过网际快车等下载资源的经历,它里面是可以设置线程数的(近年版本默认是10,曾经默认是5)。它会将文件分成与线程数相同的部分,然后每个线程下载自己的那一部分,这样下载效率就有可能提高。相信大家都有加多线程数,提升下载效率的经历。但细心的用户会发现,在带宽一定的情况下,并不是线程越多,速度越快,而是在某一点达到峰值。在C#中用多线程并不难实现。它...

python 网络爬虫(二)

一、编写第一个网络爬虫 为了抓取网站,我们需要下载含有感兴趣的网页,该过程一般被称为爬取(crawling)。爬取一个网站有多种方法,而选择哪种方法更加合适,则取决于目标网站的结构。 首先探讨如何安全的下载网页,让后介绍3中爬去网站的常见方法: -- 爬取网站地图; -- 遍历每个网页的数据库 ID; -- 跟踪网页链接; 1、下载网页 要想爬取网页,我们...

【H5】15 表单 其四 数据发送

一旦在客户端上验证了表单数据,就可以提交表单了。 并且,由于我们在上一篇文章中介绍了验证,因此我们准备提交! 本文着眼于用户提交表单时会发生什么—数据将流向何处,以及到达表单后如何处理? 我们还将研究与发送表单数据相关的一些安全问题。 先决条件: 基本的计算机知识,对HTML的理解以及HTTP和服务器端编程的基本知识。 目的: 了解提交表单数据...

SDWebImage源码解析

但凡经过几年移动开发经验的人去大公司面试,都会有公司问到,使用过哪些第三方,看过他们的源码嘛?而SDWebImage就是经常被面试官和应聘者的提到的。下面将讲述SDWebImage的源码解析以及实现原理,希望可以帮助大家加深对SDWebImage实现原理的理解!!! 一、前言 SDWebImage专门用于iOS图片加载框架,提供了网络下载并缓存图片,通过使...