设为首页 收藏本站
查看: 1765|回复: 0

[经验分享] 高性能缓存加速器varnish(安装配置篇)

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-7-22 09:56:41 | 显示全部楼层 |阅读模式
一、安装前准备
1、安装环境:
系统:Centos 6.4   64位
软件:varnish-3.0.3
2、安装资源:
如果你是初次接触varnish不知道怎么安装和配置,可以到varnish的官方网站https://www.varnish-cache.org/进行查看样例,想要找到varnish的最新版本也到此网站下载。
3、安装相关工具:
因为安装varnish时本系统用到正则表达式,所以要安装一个工具pcre-devel,还有一个就是安装varnish的测试工具ncurses-devel。
[iyunv@huangzhong ~]# mount /dev/cdrom /media/cdrom/
[iyunv@huangzhong ~]# yum install pcre-devel
//安装测试工具ncurses-devel
[iyunv@huangzhong ~]# yum install ncurses-devel
二、varnish的安装配置(源码安装)
1、安装varnish
安装前首先到官方网站下载你所要安装的版本,这里在安装前准备中已经提到所以就不在提了,下载后,然后用工具上传到你要安装的系统然后进行安装,这里安装如下:
//解压源码安装包
[iyunv@huangzhong ~]# tar -zxvf varnish-3.0.3.tar.gz -C /usr/local/src/
//切换到解压目录下
[iyunv@huangzhong ~]# cd /usr/local/src/varnish-3.0.3/
//进行编译
[iyunv@huangzhong varnish-3.0.3]# ./configure --prefix=/usr/local/varnish  --enable-dependency-trackin --enable-debugging-symbols  --enable-developer-warnings
说明:--prefix=/usr/local/varnish指明varnish安装目录,--enable-developer-warnings是指启用提示警告,默认情况下是NO,--enable-debugging-symbols是调试一些bug信息的标志。
//执行make和make install
[iyunv@huangzhong varnish-3.0.3]# make && make install

2、启动varnish
//创建varnish运行用户
[iyunv@huangzhong varnish]# useradd -r www
//创建存放缓存目录
[iyunv@huangzhong varnish]# mkdir cache
//改变cache的运行身份
[iyunv@huangzhong varnish]# chown www cache/
//启动varnish
[iyunv@huangzhong ~]# /usr/local/varnish/sbin/varnishd -u  www  -g  www  > -f /usr/local/varnish/etc/varnish/default.vcl \
> -a 192.168.2.101:80 \
> -s file,/usr/local/varnish/cache/cache.data,2G \
> -w 1024,5 1200,10 \
> -t 3600 \
> -T 127.0.0.1:3500
参数说明:
-u 以什么用户运行
-g 以什么组运行
-f varnish配置文件
-a 绑定IP和端口  
-s varnish缓存文件位置与大小
-w 最小,最大线程和超时时间
-T varnish管理端口,主要用来清除缓存
注:centos5.4 32位文件系统限制缓存数据文件大小为2G
如果停止varnish则使用以下命令:
#pkill varnishd
3、varnish的一些主要配置
//编辑varnish的配置文件
[iyunv@huangzhong ~]# vim /usr/local/varnish/etc/varnish/default.vcl
//声明的Backend可以用在判断请求针对哪个后端服务器
backend web1 {
       .host = "192.168.2.101";
       .port = "80";
       .connect_timeout = 1s;      #连接超时时间
       .first_byte_timeout = 8s;
       .between_bytes_timeout = 5s;
}
//不会可以到官网上参考样例,下面是样例:
#backend web {
#       .host = "xx.xx.xx.xx";
#       .port = "80";
#}
//声明ACL
acl purge {
       "localhost";
       "127.0.0.1";
       "192.168.2.0"/24;
}
sub vcl_recv {
    if (req.request == "PURGE") {
        if (!client.ip ~ purge)
        {
            error 405 "Not allowed.";
        }
        return(lookup);
}
#判断请求针对哪个后端服务器
    if (req.http.host ~ "^www.server110.com") {               #web1对应的域名
        set req.backend = web1;
}
下面为参考样例:
    #elseif (req.http.host ~ "^(www)|(my).baidu.com") {        #web2对应的域名
    #   set req.backend = web2;
    #}
    else {
        error 404 "Caesar's cache-server ! Email:root@server110.com"; #如果域名不在以上范围的出错提示
        #set req.backend = web1;
    }
    if (req.request != "GET" && req.request != "HEAD") {
        return(pipe);
    }
    elseif (req.url ~ "\.(php|cgi)($|\?)")                #动态页面直接通过,不缓存
    {
        return(pass);
    }
    return(lookup);
}
sub vcl_hit {
    if (req.request == "PURGE") {
        set obj.ttl = 0s;
        error 200 "Purged.";
    }
}
sub vcl_miss
{
    return (fetch);
}
##让varnish服务器缓存的类型,从后端取得数据后调用
sub vcl_fetch
{
##对访问中get有包含jpg,png等格式的文件进行缓存,缓存时间为7天,s为秒
    if (req.request == "GET" && req.url ~ "\.(js|css|mp3|jpg|png|gif|swf|jpeg|ico)$")
    {
        set beresp.ttl = 7d;
    }
    ##对访问get中包含htm等静态页面,缓存300秒
    if (req.request == "GET" && req.url ~ "\/[0-9]\.htm$")
    {
        set beresp.ttl = 300s;
    }
    return (deliver);
}
####添加在页面head头信息中查看缓存命中情况########
sub vcl_deliver
{
    set resp.http.x-hits = obj.hits ;
    if (obj.hits > 0)
    {
        set resp.http.X-Cache = "HIT cqtel-bbs";
    }
    else
    {
        set resp.http.X-Cache = "MISS cqtel-bbs";
    }
}


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-22491-1-1.html 上篇帖子: Centos部署Xcache提升脚本编译效率 下篇帖子: 高性能缓存加速器varnish(概念篇)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

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