高性能缓存加速器varnish(安装配置篇)

高性能缓存加速器varnish(安装配置篇)

一、安装前准备

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。

[root@huangzhong ~]# mount /dev/cdrom /media/cdrom/

[root@huangzhong ~]# yum install pcre-devel

//安装测试工具ncurses-devel

[root@huangzhong ~]# yum install ncurses-devel

二、varnish的安装配置(源码安装)

1、安装varnish

安装前首先到官方网站下载你所要安装的版本,这里在安装前准备中已经提到所以就不在提了,下载后,然后用工具上传到你要安装的系统然后进行安装,这里安装如下:

//解压源码安装包

[root@huangzhong ~]# tar -zxvf varnish-3.0.3.tar.gz -C /usr/local/src/

//切换到解压目录下

[root@huangzhong ~]# cd /usr/local/src/varnish-3.0.3/

//进行编译

[root@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

[root@huangzhong varnish-3.0.3]# make && make install

 

2、启动varnish

//创建varnish运行用户

[root@huangzhong varnish]# useradd -r www 

//创建存放缓存目录

[root@huangzhong varnish]# mkdir cache

//改变cache的运行身份

[root@huangzhong varnish]# chown www cache/

//启动varnish

[root@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的配置文件

[root@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:[email protected]"; #如果域名不在以上范围的出错提示

        #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"; 

    }

}


你可能感兴趣的:(varnish,varnish安装,varnish配置)