高性能緩存加速器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"; 

    }

}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章