高效能HTTP加速器Varnish(安裝配置篇)(1)

來源:互聯網
上載者:User

一、安裝Varnish
Varnish的安裝非常簡單,下面逐步介紹:
1、安裝前的準備
 Varnish安裝環境如下表1所示:
表1
主機名稱              作業系統                    IP地址
Varnish-server CentOS release 5.4    192.168.12.246
Web-server     CentOS release 5.4    192.168.12.26
接著,建立varnish使用者以及使用者組,並且建立Varnish緩衝目錄和日誌目錄:
[root@varnish-server ~]#useradd  -s /sbin/nologin varnish
[root@varnish-server ~]#mkdir /data/varnish/cache
[root@varnish-server ~]#mkdir /data/varnish/log
[root@varnish-server ~]#chown -R varnish:varnish  /data/varnish/cache
[root@varnish-server ~]#chown -R varnish:varnish  /data/varnish/log
2、擷取varnish軟體
 Varnish的官方網站為http://varnish-cache.org, 這裡面有varnish的最新說明文檔,以及版本升級記錄,從此網站可以找到varnish在SourceForge的下載連結,目前,varnish的 最新版本是Varnish 2.1.2,下載完成後的包名為varnish-2.1.2.tar.gz,此處我們就以此版本為例,進行安裝配置。
3、安裝pcre
如果沒有安裝Pcre,在編譯varnish2.0以上版本時,會提示找不到pcre庫,而pcre庫是為了相容Regex,所以必須先安裝pcre庫。
[root@varnish-server ~]#tar zxvf pcre-7.9.tar.gz
[root@varnish-server ~]#cd pcre-7.9/
[root@varnish-server ~]#./configure --prefix=/usr/local/pcre/
[root@varnish-server ~]#make && make install
4、安裝varnish
這裡我們將varnish安裝到/usr/local/目錄下,操作如下:
[root@varnish-server ~]#tar -zxvf varnish-2.1.2.tar.gz
[root@varnish-server ~]#cd varnish-2.1.2
[root@varnish-server ~]#export PKG_CONFIG_PATH=/usr/local/pcre/lib/pkgconfig
[root@varnish-server ~]#./configure --prefix=/usr/local/varnish \
 >--enable-dependency-trackin
>--enable-debugging-symbols
>--enable-developer-warnings
[root@varnish-server ~]#make
[root@varnish-server ~]#make install
[root@varnish-server ~]#cp redhat/varnish.initrc  /etc/init.d/varnish
[root@varnish-server ~]#cp redhat/varnish.sysconfig  /etc/sysconfig/varnish
 其中,“PKG_CONFIG_PATH”是指定varnish尋找pcre庫的路徑,如果pcre安裝在了其它路徑下,在這裡指定相應的路徑即 可,Varnish預設尋找的pcre庫路徑為/usr/local/lib/ pkgconfig。最後兩步操作是拷貝一些varnish守護進程的初始化指令檔,這些指令碼用於varnish的啟動、關閉管理等方面,在下面章節中 會進行詳細講解。
 至此,varnish安裝完畢。

二、配置Varnish
1、VCL使用說明
VCL,即為Varnish Configuation Language,用來定義varnish的存取策略,VCL文法比較簡單,跟C和perl比較相似,可以使用指定運算子“=”,比較子“==”,邏 輯運算子“!,&&,!!”等形式。還支援正則表達樣和用“~”進行ACL匹配運算,同時還可以使用“set”這樣的關鍵字來指定變數。
需要注意的是,“\”字元在VCL裡沒有特別的含義,這點與其它語言略有不同,另外,VCL只是配置,並不是真正的程式設計語言,沒有迴圈,也沒有自訂變數。 
在講述Varnish配置之前,首先需要瞭解下varnish的配置文法,即VCL,下面對VCL常用的一些內建函數和公用變數進行詳細介紹。
VCL內建函數
1)vcl_recv函數
用於接收和處理請求,當請求到達並成功接收後被調用,通過判斷請求的資料來決定如何處理請求。
此函數一般以如下幾個關鍵字結束:
  pass:表示進入pass模式,把請求控制權交給vcl_pass函數。
  pipe:表示進入pipe模式,把請求控制權交給vcl_pipe函數。
  error code [reason]:表示返回“code”給用戶端,並放棄處理該請求,“code”是錯誤標識,例如200、405等,“reason”是錯誤提示資訊。
2)vcl_pipe函數
此函數在進入pipe模式時被調用,用於將請求直接傳遞至後端主機,在請求和返回的內容沒有改變的情況下,將不變的內容返回給用戶端,直到這個連結關閉。
此函數一般以如下幾個關鍵字結束:
error code [reason]
pipe
3)vcl_pass函數
此函數在進入pass模式時被調用,用於將請求直接傳遞至後端主機,後端主機應答資料後送給用戶端,但不進行任何緩衝,在當前串連下每次都返回最新的內容。
此函數一般以如下幾個關鍵字結束:
error code [reason]
pass
4)lookup
表示在緩衝裡尋找被請求的對象,並且根據尋找的結果把控制權交給函數vcl_hit或者函數vcl_miss。
5)vcl_hit函數
在執行lookup指令後,如果在緩衝中找到請求的內容,將自動調用該函數。
此函數一般以如下幾個關鍵字結束:
deliver:表示將找到的內容發送給用戶端,並把控制權交給函數vcl_deliver。
error code [reason]
pass
6)vcl_miss函數
在執行lookup指令後,如果沒有在緩衝中找到請求的內容時自動調用該方法,此函數可以用於判斷是否需要從後端伺服器取內容。
此函數一般以如下幾個關鍵字結束:
fetch:表示從後端擷取請求的內容,並把控制權交給vcl_fetch函數。
error code [reason]
pass
7)vcl_fetch函數
在從後端主機更新緩衝並且擷取內容後調用該方法,接著,通過判斷擷取的內容來決定是否將內容放入緩衝,還是直接返回給用戶端。
此函數一般以如下幾個關鍵字結束:
error code [reason]
pass
deliver
8)vcl_deliver函數
在緩衝中找到請求的內容後,發送給用戶端前調用此方法。此函數一般以如下幾個關鍵字結束:
  error code [reason]
  deliver
9)vcl_timeout 函數
此函數在緩衝內容到期前調用。一般以如下幾個關鍵字結束:
  discard:表示從緩衝中清除該內容。
  fetch
10)vcl_discard函數
在緩衝內容到期後或緩衝空間不夠時,自動調用該方法,一般以如下幾個關鍵字結束:
  keep:表示將內容繼續保留在緩衝中。
  discard
 


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.