一,为什么要使用lighttpd?
    apache不可以吗?
    在支持纯静态的对象时,比如图片,文件等 ,
    lighttpd速度更快,更理想
    至于它和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")
#    }
#}
日志处理
Sometimes, Google Analytics just isn't enough when it comes to keeping and interpreting server stats. After finding a suitable log file analyzer, AWStats, the next step involved separating out the log files on a per domain basis. When the server was first set up, everything was shuttled to one set of access and error log files. While AWStats could technically analyze this log, the suggested set up involves having one set per domain. This article details the process of separating out the log files and making sure that these new files get rotated correctly.
Create Log Directories
While it would be possible to keep all of the files in one directory and to just name them relative to the domain, for this tutorial we will assume that we will create subdirectories based on the domain name. The first step would be to create a directory for each domain.
sudo -u www-data mkdir /var/log/lighttpd/www.example1.com
sudo -u www-data mkdir /var/log/lighttpd/www.example2.com
Update lighttpd.conf
After creating the directories, it's time to update the lighttpd conf file in /etc/lighttpd. We'll want to set the log files by host name. We already had directives setting the server.document-root for these domains so we only added the bolded lines.
$HTTP["host"] =~ "(^|\.)example1.com"$" {
server.document-root = "/var/www/www.example1.com",
server.errorlog = "/var/log/lighttpd/www.example1.com/error.log",
accesslog.filename = "/var/log/lighttpd/www.example1.com/access.log",
}
$HTTP["host"] =~ "(^|\.)example2.com$" {
server.document-root = "/var/www/www.example2.com",
server.errorlog = "/var/log/lighttpd/www.example2.com/error.log",
accesslog.filename = "/var/log/lighttpd/www.example2.com/access.log",
}
After adding these directives, you will need to restart the server.
sudo /etc/init.d/lighttpd restart
Update Logrotate
Finally, we will want logrotate to rotate these new directories. Since our main goal is to integrate the logs with AWStats, it made sense to add a separate entry for each log directory. However, if you don't need call different scripts for the different domains, feel free to create one directive. We just copied the existing logrotate configuration and editted it for each of the domains. Below are examples of what this might look like.
/var/log/lighttpd/*.log {
daily
missingok
copytruncate
rotate 60
compress
notifempty
sharedscripts
postrotate
if [ -f /var/run/lighttpd.pid ]; then \
kill -HUP $(
fi;
endscript
}
/var/log/lighttpd/www.example1.com/*.log {
daily
missingok
copytruncate
rotate 60
compress
notifempty
sharedscripts
postrotate
if [ -f /var/run/lighttpd.pid ]; then \
kill -HUP $(
fi;
endscript
}
/var/log/lighttpd/www.example2.com/*.log {
daily
missingok
copytruncate
rotate 60
compress
notifempty
sharedscripts
postrotate
if [ -f /var/run/lighttpd.pid ]; then \
kill -HUP $(
fi;
endscript
}
To make just one configuration entry, it would look like this:
"/var/log/lighttpd/*.log" "/var/log/lighttpd/www.example1.com/*.log" "/var/log/lighttpd/www.example2.com/*.log" {
daily
missingok
copytruncate
rotate 60
compress
notifempty
sharedscripts
postrotate
if [ -f /var/run/lighttpd.pid ]; then \
kill -HUP $(
fi;
endscript
}
Sources
    * Lighttpd rotating log files with logrotate tool
    * Howto: Lighttpd web server setting up virtual hosting
Trackback URL for this post:
http://tracy.hurleyit.com/trackback/1140
lighttpd虚拟主机配置
$HTTP["host"] == "bbs.xxx.com" {
server.name = "bbs.xxx.com"
server.document-root = "/var/www/bbs"
server.errorlog = "/var/www/bbs/error.log"
accesslog.filename = "/var/www/bbs/access.log"
}
else
lighttpd.conf解释
server.use-ipv6 = "disable" # 缺省为禁用
server.event-handler = "linux-sysepoll" # Linux环境下epoll系统调用可提高吞吐量
#server.max-worker = 10 # 如果你的系统资源没跑满,可考虑调高 lighttpd进程数
server.max-fds = 4096 # 默认的,应该够用了,可根据实际情况调整
server.max-connections = 4096 # 默认等于 server.max-fds
server.network-backend = "linux-sendfile"
server.max-keep-alive-requests = 0 # 在一个keep-alive会话终止连接前能接受处理的最大请求数。0为禁止
# 设置要加载的module
server.modules = (
  "mod_rewrite",
  "mod_redirect",
# "mod_alias",
  "mod_access",
# "mod_cml",
# "mod_trigger_b4_dl",
  "mod_auth",
  "mod_expire",
# "mod_status",
# "mod_setenv",
  "mod_proxy_core",
  "mod_proxy_backend_http",
  "mod_proxy_backend_fastcgi",
# "mod_proxy_backend_scgi",
# "mod_proxy_backend_ajp13",
# "mod_simple_vhost",
  "mod_evhost",
# "mod_userdir",
# "mod_cgi",
  "mod_compress",
# "mod_ssi",
# "mod_usertrack",
# "mod_secdownload",
# "mod_rrdtool",
  "mod_accesslog" )
# 网站根目录
server.document-root = "/var/www/"
# 错误日志位置
server.errorlog = "/var/log/lighttpd/error.log"
# 网站Index
index-file.names = ( "index.php", "index.html",
  "index.htm", "default.htm" )
# 访问日志, 以及日志格式 (combined), 使用X-Forwarded-For可越过代理读取真实ip
accesslog.filename = "/var/log/lighttpd/access.log"
accesslog.format = "%{X-Forwarded-For}i %v %u %t \"%r\" %s %b \"%{User-Agent}i\" \"%{Referer}i\""
# 设置禁止访问的文件扩展名
url.access-deny = ( "~", ".inc", ".tpl" )
# 服务监听端口
server.port = 80
# 进程id记录位置
server.pid-file = "/var/run/lighttpd.pid"
# virtual directory listings 如果没有找到index文件就列出目录。建议disable。
dir-listing.activate = "disable"
# 服务运行使用的用户及用户组
server.username = "www"
server.groupname = "www"
# gzip压缩存放的目录以及需要压缩的文件类型
compress.cache-dir = "/tmp/lighttpd/cache/compress/"
compress.filetype = ("text/plain", "text/html")
# fastcgi module
# for PHP don't forget to set cgi.fix_pathinfo = 1 in the php.ini
$HTTP["url"] =~ "\.php$" {
  proxy-core.balancer = "round-robin"
  proxy-core.allow-x-sendfile = "enable"
# proxy-core.check-local = "enable"
  proxy-core.protocol = "fastcgi"
  proxy-core.backends = ( "unix:/tmp/php-fastcgi1.sock","unix:/tmp/php-fastcgi2.sock" )
  proxy-core.max-pool-size = 16
}
# 权限控制
auth.backend = "htpasswd"
auth.backend.htpasswd.userfile = "/var/www/htpasswd.userfile"
# 基于 evhost 的虚拟主机 针对域名
$HTTP["host"] == "a.lostk.com" {
  server.document-root = "/var/www/lostk/"
  server.errorlog = "/var/log/lighttpd/lostk-error.log"
  accesslog.filename = "/var/log/lighttpd/lostk-access.log"
  # 设定文件过期时间
  expire.url = (
  "/css/" => "access 2 hours",
  "/js/" => "access 2 hours",
  )
  # url 跳转
  url.redirect = (
  "^/$" => "/xxx/index.html",
  )
  # url 重写 (cakephp可用)
  url.rewrite = (
  "^/(css|js)/(.*)$" => "/$1/$2",
  "^/([^.]+)$" => "/index.php?url=$1",
  )
  # 权限控制
  auth.require = ( "" =>
  (
  "method" => "basic",
  "realm" => "admin only",
  "require" => "user=admin1|user=admin2" # 允许的用户, 用户列表文件 在上面配置的auth.backend.htpasswd.userfile 里
  ),
  )
}
# 针对端口的虚拟主机
$SERVER["socket"] == "192.168.0.1:8000" {
  server.document-root = "/var/www/xxx/"
  server.errorlog = "/var/log/lighttpd/test-error.log"
  accesslog.filename = "/var/log/lighttpd/test-access.log"
  # ...
}

lighttpd配置介绍相关推荐

  1. Centos 7 冗余备份磁盘配置介绍

    Centos 7 冗余备份磁盘配置介绍 我们上一盘介绍了Centos 7 磁盘阵列配置介绍,今天继续上一篇的配置介绍,通过上一篇的配置介绍我们发现了一个问题.,运维人员需要在硬盘硬件出现故障后,手动增 ...

  2. iphonex重量_精仿苹果iPhone X手机配置介绍

    精仿苹果iPhone X手机配置介绍 [上市时间] 2017年10月最新版 [屏幕色彩] 1600万 [分 辨 率] 1920X1080 [屏幕尺寸] 5.8英寸IPS全视角电容式触摸屏 [处 理 器 ...

  3. SQL Server 2016 AlwaysOn 安装及配置介绍

    SQL Server 2016  AlwaysOn 安装及配置介绍 Always On 可用性组功能是一个提供替代数据库镜像的企业级方案的高可用性和灾难恢复解决方案. SQL Server 2012 ...

  4. 最新架构amd服务器cpu,AMD Zen架构处理器全新性能配置介绍

    AMD CEO日前在台北电脑展上首次展示了一颗基于Zen全新架构的下代处理器,这也是我们第一次看到其真身,下面就详情来看看了解下吧! AMD处理器常年被Intel压制,尤其是在服务器上已经基本没有存在 ...

  5. Window VNC远程控制LINUX:VNC详细配置介绍

    Window VNC远程控制LINUX:VNC详细配置介绍 //---------------------------------------vnc linux下的详细配置 1.VNC的启动/停止/重 ...

  6. Tsung MQTT协议简介及MQTT xml文档配置介绍

    MQTT协议简介及MQTT xml文档配置介绍 by:授客 QQ:1033553122 1. MQTT协议介绍 MQTT(Message Queuing Telemetry Transport,消息队 ...

  7. 鸟哥的Linux私房菜(基础篇)- 第二十四章、 X Window 配置介绍

    第二十四章. X Window 配置介绍 最近升级日期:2009/08/07 在 Linux 上头的图形介面我们称之为 X Window System,简称为 X 或 X11 罗!为何称之为系统呢?这 ...

  8. n3k配置vpc是否还需要配置hsrp_VPC配置介绍

    VPC(Virtual Port-Channel)是Cisco Nexus系列交换机中的一个特性.它支持一个跨机箱的二层Port-Channel.对于第三方设备来说(交换机或服务器)物理上是连接到了两 ...

  9. LINUX服务器搭建和常用配置介绍

    服务器搭建 : 搭建私有CA服务器 : http://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_linux_011_ca.html 搭建samba服务器 : ...

最新文章

  1. sqlserver定时差异备份_一分钟看懂完全备份、差异备份以及增量备份
  2. MongoDB工具最新开发 源代码更新 兼 进展报告 - 集群功能开发
  3. WiseCloud成为全球首批Kubernetes官方认证平台产品-CNCF官方发布
  4. 内网网段范围_局域网中多网段的划分
  5. Java字符串与包装类
  6. 【7】jQuery学习——入门jQuery选择器之过滤选择器-可见性过滤选择器
  7. Wordpress基础:精简头部wp_head
  8. 七个帮助你处理Web页面层布局的jQuery插件
  9. python pandas写入_51-python3 pandas读写excel
  10. 在shop++二次开发中金额数据类型BigDecimal转换,注意细节。
  11. Windows里Anaconda-Navigator无法打开(解决)
  12. Asp.net开发必备51种代码
  13. 打开网页右下角广告栏慢慢出现,点击慢慢消失
  14. 微信小程序之view布局
  15. High-Sierra,MacOS10.13,增加IntelHD3000显存的方法
  16. 数据库出错提示Duplicate entry * for key *的解决方法
  17. chart.js使用学习——混合图表
  18. 线性回归模型度量参数2- Multiple R R-Squared adjusted R-squared
  19. [BZOJ3161]孤舟蓑笠翁
  20. Python爬虫入门-fiddler抓取手机新闻评论

热门文章

  1. 学习微博情感分类的特定情感词嵌入(A14, ACL2014)*
  2. 金蝶云星空与旺店通·旗舰奇门对接集成调拨单查询连通其它入库业务单创建(KD直接调拨单对接WDT其他入库单-其他业务)
  3. 网上搜罗的C语言入门必做的题
  4. linux 1080ti显卡驱动,英伟达显卡驱动官方下载-nvidia geforce gtx 1080Ti驱动下载【正式版】-西西软件下载...
  5. C 语言进阶:造一个简单的浏览器
  6. 利用配置组策略解决Chrome浏览器第三方扩展被停用的问题
  7. 【升级U8+】升级U8错误:违反了 PRIMARY KEY 约束‘PK_NB_VisibleField’
  8. Lua封装C++实践(三)——Lua注册C++构造函数
  9. 怎么给pdf加水印,常用的4个方法
  10. cubase怎么添加midi设备_Cubase中MIDI设备的如何创建面板