`
hqman
  • 浏览: 363145 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

[转] lighttpd 设置

阅读更多
一,为什么要使用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"

  # ...
}
分享到:
评论

相关推荐

    修复CGI无法通过html传递参数表问题的lighttpd

    1. 检查lighttpd配置文件(通常为`lighttpd.conf`),确保CGI模块已经启用,并且CGI脚本的执行路径设置正确。 2. 确认lighttpd版本是否为1.4.26,如果是,可以考虑升级到更高版本,因为新版本可能已经解决了这个问题...

    wordpress在lighttpd下的重写规则及注意细节

    此外,对于使用Kloxo这类服务器控制面板的用户,还可以通过图形界面来设置Lighttpd的重写规则,而无需直接编辑配置文件。在Kloxo的域名管理界面中选择对应的域名,然后找到Lighttpd的重写规则设置部分,按照指导添加...

    Web服务器选型(Apache+Nginx+Lighttpd)之性能对比测试报告.pdf

    测试方案采用了Apache自带的`ab`命令,通过设置不同的并发请求数量(500至10000)以及两种不同大小的静态文件(1K以下和59K)进行压力测试。测试版本分别为Apache 2.2.14、Nginx 0.9.6和Lighttpd 1.4.28。测试指标...

    Linux服务器端Web服务三剑客(Apache Lighttpd Nginx).docx

    ### Linux服务器端Web服务三剑客(Apache Lighttpd Nginx) #### 一、Apache ##### 概述 Apache HTTP Server(简称Apache)是由Apache软件基金会维护的一个开源Web服务项目,支持跨平台操作,因其强大的安全性与...

    杰奇CMS安装教程详解

    - **Web服务器**:如Apache/Apache2或lighttpd。 - **虚拟主机**:如果是租用的虚拟主机,则需联系虚拟主机提供商确认服务器是否已安装了以上软件。 2. **数据库准备**:由于杰奇CMS支持与其他软件共享数据库,...

    在Centos系统搭建Ostube2.6开源flv流媒体服务器

    Ostube2.6在部署过程中存在一定的局限性,例如,传统的LAMP(Linux、Apache、MySQL、PHP)环境并不包含FLV流媒体的模块,因此,如果使用Apache作为Web服务器,则需要额外配置或选择支持流媒体的服务器如Lighttpd或...

    【批量下载】spawn-fcgi-1.6.4.tar等.zip

    例如,可以设置spawn-fcgi监听特定端口,然后Web服务器(如Nginx或Lighttpd)通过FastCGI协议与之通信。 5. 在Web服务器的配置文件中,指定使用spawn-fcgi启动的应用程序和连接参数,完成FastCGI的集成。 总的来说...

    ddwrt-bwmon:DD-WRT的独立带宽监视器

    (可选)从服务-> Web服务器-> Lighttpd服务器启用lighttpd支持。 将其保留在默认端口81上,不要启用WAN访问。 通过ssh登录到路由器。 您可以在Windows上使用腻子来执行此操作,或者在Linux上仅使用ssh来执行此操作...

    Web服务器搭建工具

    常见的Web服务器有Apache、Nginx、IIS和Lighttpd等。 2. HTTP协议:HTTP(超文本传输协议)是互联网上应用最为广泛的一种网络协议,用于客户端(如浏览器)和服务器之间的通信。 3. 网站托管:将网站内容上传到Web...

    RPi-PXE-Server:将Raspberry Pi设置为PXE-Server

    - 可选地,可以使用lighttpd或其他Web服务器提供非NFS的映像下载。 - 配置服务器以在适当目录下提供映像文件。 10. **测试与调试**: - 重启Raspberry Pi和目标设备,确保目标设备能够正确地通过PXE启动。 - ...

    engelsystem:混乱事件的轮班计划系统

    Web服务器,即lighttpd,nginx或Apache 下载 转到“页面并下载最新的稳定发行文件。 将文件解压缩到您的webroot,然后继续进行配置和设置说明。 配置和设置 Web服务器必须对storage目录具有写访问权,而对所有其他...

    tuls:TSD用户土地服务

    Web服务器堆栈(Lighttpd,PostgreSQL,PHP) 类似于Github的Web服务(Gitea) 备份服务(rsnapshot) 不需要root 快速开始 TSD外部(具有Internet连接) 克隆存储库并切换到目录git clone ... && cd ... 下载...

    基于WEB的文件系统

    在部署时,用户可能需要配置HTTPD服务器的设置,如虚拟主机、路由规则和权限控制,以确保正确且安全地提供文件服务。 总结,基于WEB的文件系统通过HTTPD服务器实现了通过Web浏览器访问和管理文件的功能,简化了用户...

    杰奇1.7完全功能破解版(含注册机及wap)

    Web 服务器 JIEQI CMS 可以完美工作在 Apache/Apache2、IIS、lighttpd 等 Web 服务器平台上 * 虚拟主机 虽然我们建议您在独立服务器上运行 JIEQI CMS 系统,但我们也为需要在虚拟主机上运行 JIEQI CMS 系统的用户...

    web服务器搭建和域名访问网站.docx

    - **Lighttpd**: 轻量级的Web服务器,适合对资源占用有严格要求的应用场景。 #### 3. 搭建Web服务器的步骤 1. **选择合适的Web服务器软件**:根据项目需求和个人偏好选择上述提到的任一Web服务器。 2. **安装Web...

    ImageForward(图片转发服务)

    ImageForward的Linux版本可能采用了轻量级的服务器软件如Nginx或Lighttpd,结合脚本语言如Python或Node.js来实现图片转发功能。 - **Windows版本**:对于习惯于Windows环境或者需要在Windows服务器上运行的用户,...

    Pluto1_9_9_2.rar

    设置了维护模式的4个固定通道 V1.9: 动态网页 无限制的网页制作与配置,网页扩展名为.video 伪jsp的解析,兼容以前的两个固定.jsp网页的支持 统一了调试环境与生产环境,代码与调试路劲为pluto\code\Win64\...

    linux webserver(GCC 源代码)

    在Linux环境中,Web服务器如Apache、Nginx或Lighttpd等,通常由C或C++编写,因为这两种语言提供了高效和灵活的系统级编程能力。GCC作为一套开源的编译器工具链,包括了C、C++、Objective-C、Fortran、Ada和Go等多种...

    S-MVC:一个简单,轻量级和可自定义PHP MVC框架

    如果您在另一台Web服务器(nginx,lighttpd)上,则必须修改Web服务器的配置文件以替换.htaccess角色。安装在下载.zip文件将其解压缩到您的Web服务器文件夹中打开浏览器,然后转到服务器地址。 您会看到一个索引...

Global site tag (gtag.js) - Google Analytics