• lighttpd+modcache实现对小图片的Cache - [技术笔记]

    2009-07-16

    分类: 技术笔记

    版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
    http://iyubo.blogbus.com/logs/42429307.html

    安装环境
    操作系统: CentOS release 5.2 (Final)
    Kernel: 2.6.18-92.el5PAE

    软件列表
    fam-latest.tar.gz
    gamin-0.1.10.tar.gz
    pcre-7.9.tar.gz
    lighttpd-1.4.23.modcache.v.1.8.0.tar.gz

    软件存放位置
    /data/software

    安装过程
    #cd /data/software/pkg
    安装依赖插件pcre, fam, gamin
    关于FAM http://oss.sgi.com/projects/fam/faq.html
    关于gamin http://www.gnome.org/~veillard/gamin/overview.html
    See also: http://trac.lighttpd.net/trac/wiki/server.stat-cache-engineDetails
    #tar zxvf ../pcre-7.9.tar.gz
    #cd pcre-7.9
    #./configure
    #make && make install
    #cd ..
    #tar zxvf ../fam-latest.tar.gz
    #cd fam-2.7.0/
    #./configure
    #make && make install
    #cd ..
    #tar zxvf ../gamin-0.1.10.tar.gz
    #cd gamin-0.1.10
    #./configure
    #make && make install

    安装lighttpd with modcache
    #cd /data/software/pkg
    #tar zxvf ../lighttpd-1.4.23.modcache.v.1.8.0.tar.gz
    #cd lighttpd-1.4.23
    #./configure --with-fam --prefix=/usr/local/lighttpd
    #make && make install

    编辑lighttpd配置文件
    #cp doc/lighttpd.conf /etc/
    #vi /etc/lighttpd.conf

    #启用的modules
    server.modules              = (
                                    "mod_redirect",
                                    "mod_access",
                                    "mod_status",
                                    "mod_cache",
                                    "mod_proxy",
                                    "mod_compress",
                                    "mod_expire",
                                    "mod_accesslog" )

    server.pid-file            = "/var/run/lighttpd.pid"

    server.max-keep-alive-requests = 16
    server.max-keep-alive-idle = 4
    server.max-read-idle = 60
    server.max-write-idle = 360

    #使用epoll作为事件处理
    server.event-handler = "linux-sysepoll"

    #使用sendfile
    server.network-backend = "linux-sendfile"

    #修改最大file descriptions,跟squid相同
    server.max-fds = 65535

    #启用fam作为stat处理方法
    server.stat-cache-engine = "fam"

    #此项打开以后缓存文件时将忽略?,即a.jpg?xxx和a.jpg?xyz都等同于a.jpg
    cache.support-queries = "enable"

    #指定本地缓存存放路径
    cache.bases = ("/srv/lcache")

    #定义刷新
    cache.refresh-pattern = (
            "\.(?i)(flv)$" => "0 fetchall-for-range-request flv-streaming", # to work with mod_flv_streaming for flv files
            "\.(?i)(js|css|xml)$" => "10080", # update js/css/xml every 7 days and on refresh requests
            "\.(?i)(htm|html|shtml)$" => "10080", # update html/htm/shtml every 7 days and on refresh requests
            "\.(?i)(jpg|bmp|jpeg|gif|png)$" => "60", # update graphics files every 2 hours
            "\.(?i)(rar|zip|wmv|avi|mp3|ape|rm|mpeg|mpg|wma|asf|rmvb|flv)$" => "0 fetchall-for-range-request", # cache media file forever
            "." => "60 update-on-refresh" # default to update every hour and on refresh requests
    )

    #允许purge的ip
    cache.purge-host = "^(192\.168\.)"

    #保存缓存时忽略站点主机名(需要多个站点缓存不同文件的不要启用)
    cache.ignore-hostname = "enable"

    #后端服务器(源站)
    proxy.server               = ( "/" =>
                                   ( "localhost" =>
                                     (
                                       "host" => "192.168.1.15",
                                       "port" => 80
                                     )
                                   )
                                 )

    #这项一定要启用
    proxy.worked-with-mod-cache = "enable"

    #设置指定IP允许查看服务器状态和缓存命中率
    $HTTP["remoteip"] =~ "192\.168\.1\.*" {
      status.status-url          = "/server-status"
      status.stastics-url        = "/cache-status"
    }

    #防盗链
    $HTTP["referer"] !~ "^($|http://.*\.(baidu\.com|google\.com|google\.cn))" {
        url.redirect = ( ".*" => "http://img1.test.com/a.jpg" )
    }

    启动lighttpd
    #/usr/local/lighttpd/sbin/lighttpd -f /etc/lighttpd.conf

    参考文档
    http://redmine.lighttpd.net/projects/1/wiki/Docs:Performance
    http://blog.fosketts.net/2009/06/29/tuning-lighttpd-linux/
    http://trac.lighttpd.net/trac/wiki/server.stat-cache-engineDetails

    关于日志rotate和启动脚本
    http://www.cyberciti.biz/tips/lighttpd-rotating-logs-with-logrotate.html
    http://www.cyberciti.biz/tips/redhat-enterprise-linux-lighttpd-fastcgi-php.html

     


    历史上的今天:

    受宠若惊 2009-07-16

    收藏到:Del.icio.us