西西軟件園多重安全檢測下載網(wǎng)站、值得信賴的軟件下載站!
軟件
軟件
文章
搜索

首頁西西教程操作系統(tǒng) → linux下面Varnish的安裝配置教程

linux下面Varnish的安裝配置教程

相關(guān)軟件相關(guān)文章發(fā)表評論 來源:IBM時間:2013/5/12 19:57:05字體大。A-A+

作者:西西點擊:98次評論:0次標(biāo)簽: linux

Varnish 簡介

Varnish 是一款高性能且開源的反向代理服務(wù)器和 HTTP 加速器,其采用全新的軟件體系機(jī)構(gòu),和現(xiàn)在的硬件體系緊密配合,與傳統(tǒng)的 squid 相比,varnish 具有性能更高、速度更快、管理更加方便等諸多優(yōu)點,很多大型的網(wǎng)站都開始嘗試使用 varnish 來替換 squid,這些都促進(jìn) varnish 迅速發(fā)展起來。

官方網(wǎng)站

https://www.varnish-cache.org/installation/debian/ 

目前最新版本是。3.0.3


  1. curl http://repo.varnish-cache.org/debian/GPG-key.txt | apt-key add -
  2. echo "deb http://repo.varnish-cache.org/debian/ wheezy varnish-3.0" >> /etc/apt/sources.list
  3. apt-get update
  4. apt-get install varnish

挪威的最大的在線報紙 Verdens Gang(vg.no) 使用 3 臺 Varnish 代替了原來的 12 臺 Squid,性能比以前更好,這是 Varnish 最成功的應(yīng)用案例。

Varnish 文件緩存的工作流程

Varnish 與一般服務(wù)器軟件類似,分為 master 進(jìn)程和 child 進(jìn)程。Master 進(jìn)程讀入存儲配置文件,調(diào)用合適的存儲類型,然后創(chuàng)建 / 讀入相應(yīng)大小的緩存文件,接著 master 初始化管理該存儲空間的結(jié)構(gòu)體,然后 fork 并監(jiān)控 child 進(jìn)程。Child 進(jìn)程在主線程的初始化的過程中,將前面打開的存儲文件整個 mmap 到內(nèi)存中,此時創(chuàng)建并初始化空閑結(jié)構(gòu)體,掛到存儲管理結(jié)構(gòu)體,以待分配。Child 進(jìn)程分配若干線程進(jìn)行工作,主要包括一些管理線程和很多 worker 線程。

接著,開始真正的工作,varnish 的某個負(fù)責(zé)接收新 HTTP 連接線程開始等待用戶,如果有新的 HTTP 連接過來,它總負(fù)責(zé)接收,然后喚醒某個等待中的線程,并把具體的處理過程交給它。Worker 線程讀入 HTTP 請求的 URI,查找已有的 object,如果命中則直接返回并回復(fù)用戶。如果沒有命中,則需要將所請求的內(nèi)容,從后端服務(wù)器中取過來,存到緩存中,然后再回復(fù)。

分配緩存的過程是這樣的:它根據(jù)所讀到 object 的大小,創(chuàng)建相應(yīng)大小的緩存文件。為了讀寫方便,程序會把每個 object 的大小變?yōu)樽罱咏浯笮〉膬?nèi)存頁面倍數(shù)。然后從現(xiàn)有的空閑存儲結(jié)構(gòu)體中查找,找到最合適的大小的空閑存儲塊,分配給它。如果空閑塊沒有用完,就把多余的內(nèi) 存另外組成一個空閑存儲塊,掛到管理結(jié)構(gòu)體上。如果緩存已滿,就根據(jù) LRU 機(jī)制,把最舊的 object 釋放掉。

釋放緩存的過程是這樣的:有一個超時線程,檢測緩存中所有 object 的生存期,如果超初設(shè)定的 TTL(Time To Live)沒有被訪問,就刪除之,并且釋放相應(yīng)的結(jié)構(gòu)體及存儲內(nèi)存。注意釋放時會檢查該存儲內(nèi)存塊前面或后面的空閑內(nèi)存塊,如果前面或后面的空閑內(nèi)存和該 釋放內(nèi)存是連續(xù)的,就將它們合并成更大一塊內(nèi)存。

整個文件緩存的管理,沒有考慮文件與內(nèi)存的關(guān)系,實際上是將所有的 object 都考慮是在內(nèi)存中,如果系統(tǒng)內(nèi)存不足,系統(tǒng)會自動將其換到 swap 空間,而不需要 varnish 程序去控制。

Varnish 安裝

下載 varnish 安裝包

建議下載最新穩(wěn)定版本(現(xiàn)在最新 varnish 版本為 3.0.2),varnish 提供源代碼安裝包和可執(zhí)行程序安裝包,按照您的習(xí)慣下載適合您平臺的任一安裝包即可。

安裝 varnish

源代碼安裝包安裝

首先安裝 pcre 庫,pcre 庫是為兼容正則表達(dá)式,如果不安裝,在安裝 varnish2.0 版本以上時,會提示找不到 pcre 庫。以下是 pcre 的安裝過程,其代碼如清單 1 所示:

清單 1. pcre 庫安裝代碼 
tar zxvf pcre.tar.gz 
     cd pcre/ 
     ./configure --prefix=/usr/local/pcre/ 
     Make && make install

安裝 varnish,其代碼如清單 2 所示:


清單 2. varnish 安裝代碼 
tar xzvf varnish-3.0.2.tar.gz 
        cd varnish-3.0.2 
        export PKG_CONFIG_PATH =/usr/local/pcre/lib/pkgconfig 
        ./configure --prefix=/usr/local/varnish  	
        make 
        make install

可執(zhí)行程序安裝包安裝


RedHat 系統(tǒng)環(huán)境下的安裝 varnish,您需要安裝以下軟件:automake、autoconf、libtool、ncurses-devel、libxslt、groff、 pcre-devel、pkgconfig,然后進(jìn)行 varnish 的安裝,安裝代碼如清單 3 所示:


清單 3. varnish 安裝代碼 
rpm -i varnish-2.1.4-2.el5.x86_64.rpm

啟動 varnish


清單 4. varnish 啟動代碼 
varnishd -f /etc/varnish/default.vcl -s file,/var/varnish_cache,1G \
 -T 127.0.0.1:2000 -a 0.0.0.0:9082

各參數(shù)的含義如下:

-f 指定 varnish 的配置文件位置

-s 指定 varnish 緩存存放的方式,常用的方式有:“-s file,,”。

-T address:port 設(shè)定 varnish 的 telnet 管理地址及其端口

-a address:port 表示 varnish 對 http 的監(jiān)聽地址及其端口

Varnish 配置

VCL 簡介

VCL(varnish configuration language)是 varnish 配置語言,其用來定義 varnish 的存取策略。VCL 語法比較簡單,跟 C 和 Perl 比較相似。主要有以下幾點:

  • 塊是由花括號分隔,語句以分號結(jié)束,使用‘ # ’符號可以添加注釋。
  • VCL 使用指定運算符“=”、比較運算符“==”、邏輯運算符“!,&&,!!”等形式,還支持正則表達(dá)式和用“~”進(jìn)行 ACL 匹配運算。
  • VCL 沒有用戶自己定義的變量,你可以在 backend、request 或 object 上設(shè)置變量值,采用 set 關(guān)鍵字進(jìn)行設(shè)置。例如 set req.backend = director_employeeui;
  • 兩個字符串的連接,他們之間沒有任何運算符。代碼如清單 5 所示:

清單 5. 字符串連接代碼 
set req.http.X-hit = " hit" "it";

  • \”字符在 VCL 里沒有特別的含義,這點與其他語言略有不同。
  • VCL 可以使用 set 關(guān)鍵字設(shè)置任何 HTTP 頭,可以使用 remove 或是 unset 關(guān)鍵字移除 HTTP 頭。
  • VCL 有 if/else 的判斷語句,但是沒有循環(huán)語句。

VCL backend

聲明并初始化一個后端對象,代碼如清單 6 所示


清單 6. backend 聲明代碼 
backend www { 
	   .host = "www.example.com"; 
	   .port = "9082"; 
	 }

后端對象的使用,代碼如清單 7 所示


清單 7. backend 的使用代碼 
if (req.http.host ~ "^(www.)?example.com$") { 
	    set req.backend = www; 
	 }

VCL 后端的集合 director

VCL 可以把多個 backends 聚合成一個組,這些組被叫做 director,這樣可以增強(qiáng)性能和彈力,當(dāng)組里一個 backend 掛掉后,可以選擇另一個健康的 backend。VCL 有多種 director,不同的 director 采用不同的算法選擇 backend,主要有以下幾種:

  • The random director

Random director 會根據(jù)所設(shè)置的權(quán)值(weight)來選擇 backend,.retries 參數(shù)表示嘗試找到一個 backend 的最大次數(shù),.weight 參數(shù)表示權(quán)值

  • The round-robin director

Round-robin director 在選擇 backend 時,會采用循環(huán)的方式依次選擇。

  • The client director

Client director 根據(jù) client.identity 來選擇 backend,您可以設(shè)置 client.identity 的值為 session cookie 來標(biāo)識 backend。

backend probes

VCL 可以設(shè)置 probe 來檢測一個 backend 是否健康,定義一個 backend probes 代碼如清單 8 所示:


清單 8. 定義 backend probes 代碼 
backend www { 
	  .host = "www.example.com"; 
	  .port = "9082"; 
	  .probe = { 
	    .url = "/test.jpg";// 哪個 url 需要 varnish 請求
	    .timeout = 1 s;// 等待多長時間超時
	    .interval = 5s// 檢查的時間間隔
             .window = 5;// 維持 5 個 sliding window 的結(jié)果
	    .threshold = 3;// 至少有三次 window 是成功的,就宣告 backend 健康
	  } 
	 }

ACL

ACL 可創(chuàng)建一個客戶端的訪問控制列表,你可以使用 ACL 控制哪些客戶端可以訪問,哪些客戶端禁止訪問。定義 ACL 代碼如清單 9 所示:


清單 9. ACL 定義代碼 
Acl local{ 
	   "localhost"; 
	   "192.0.2.0"/24; 
	   !"192.0.2.23";// 除去該 IP 
	 }

VCL 內(nèi)置函數(shù)

vcl_recv 函數(shù)

用于接收和處理請求。當(dāng)請求到達(dá)并成功接收后被調(diào)用,通過判斷請求的數(shù)據(jù)來決定如何處理請求。例如如何響應(yīng)、怎么響應(yīng)、使用哪個后端服務(wù)器等。

此函數(shù)一般以如下幾個關(guān)鍵字結(jié)束。

pass:表示進(jìn)入 pass 模式,把請求控制權(quán)交給 vcl_pass 函數(shù)。

pipe:表示進(jìn)入 pipe 模式,把請求控制權(quán)交給 vcl_pipe 函數(shù)。

lookup:表示進(jìn)入 lookup 模式,把請求控制權(quán)交給 lookup 指令處理,在緩存中查找被請求的對象,并且根據(jù)查找的結(jié)果把控制權(quán)交給函數(shù) vcl_hit 或函數(shù) vcl_miss。

error code [reason]:表示返回“code”給客戶端,并放棄處理該請求。“code”是錯誤標(biāo)識,例如 200 和 405 等!皉eason”是錯誤提示信息。

vcl_pipe 函數(shù)

此函數(shù)在進(jìn)入 pipe 模式時被調(diào)用,用于將請求直接傳遞至后端主機(jī),在請求和返回的內(nèi)容沒有改變的情況下,將不變的內(nèi)容返回給客戶端,直到這個連接被關(guān)閉。

此函數(shù)一般以如下幾個關(guān)鍵字結(jié)束。

error code [reason]。

pipe。

vcl_pass 函數(shù)

此函數(shù)在進(jìn)入 pass 模式時被調(diào)用,用于將請求直接傳遞至后端主機(jī)。后端主機(jī)在應(yīng)答數(shù)據(jù)后將應(yīng)答數(shù)據(jù)發(fā)送給客戶端,但不進(jìn)行任何緩存,在當(dāng)前連接下每次都返回最新的內(nèi)容。

此函數(shù)一般以如下幾個關(guān)鍵字結(jié)束。

error code [reason]。

pass。

restart 重新啟動流程,增加啟動次數(shù),如果重新啟動次數(shù)高于 max_restarts 發(fā)出一個錯誤警告

vcl_hash

當(dāng)您想把一個數(shù)據(jù)添加到 hash 上時,調(diào)用此函數(shù)。

此函數(shù)一般以如下幾個關(guān)鍵字結(jié)束。

Hash。

vcl_hit 函數(shù)

在執(zhí)行 lookup 指令后,在緩存中找到請求的內(nèi)容后將自動調(diào)用該函數(shù)。

此函數(shù)一般以如下幾個關(guān)鍵字結(jié)束。

deliver:表示將找到的內(nèi)容發(fā)送給客戶端,并把控制權(quán)交給函數(shù) vcl_deliver。

error code [reason] 。

pass。

restart 重新啟動流程,增加啟動次數(shù),如果重新啟動次數(shù)高于 max_restarts 發(fā)出一個錯誤警告

vcl_miss 函數(shù)

在執(zhí)行 lookup 指令后,在緩存中沒有找到請求的內(nèi)容時自動調(diào)用該方法。此函數(shù)可用于判斷是否需要從后端服務(wù)器獲取內(nèi)容。

此函數(shù)一般以如下幾個關(guān)鍵字結(jié)束。

fetch:表示從后端獲取請求的內(nèi)容,并把控制權(quán)交給 vcl_fetch 函數(shù)。

error code [reason] 。

pass。

vcl_fetch 函數(shù)

在后端主機(jī)更新緩存并且獲取內(nèi)容后調(diào)用該方法,接著,通過判斷獲取的內(nèi)容來決定是將內(nèi)容放入緩存,還是直接返回給客戶端。

此函數(shù)一般以如下幾個關(guān)鍵字結(jié)束。

error code [reason]。

pass。

deliver。

esi。

restart 重新啟動流程,增加啟動次數(shù),如果重新啟動次數(shù)高于 max_restarts 發(fā)出一個錯誤警告

vcl_deliver 函數(shù)

將在緩存中找到請求的內(nèi)容發(fā)送給客戶端前調(diào)用此方法。

此函數(shù)一般以如下幾個關(guān)鍵字結(jié)束。

error code [reason]。

deliver。

restart 重新啟動流程,增加啟動次數(shù),如果重新啟動次數(shù)高于 max_restarts 發(fā)出一個錯誤警告

vcl_error

出現(xiàn)錯誤時調(diào)用此函數(shù)。

此函數(shù)一般以如下幾個關(guān)鍵字結(jié)束。

deliver。

restart。

VCL 處理流程

VCL 處理的流程圖如圖 1 所示


圖 1.VCL 處理流程 
圖 1.VCL 處理流程 

Varnish 處理 HTTP 請求的過程大致分為如下幾個步驟。

  • Receive 狀態(tài)(vcl_recv)。也就是請求處理的入口狀態(tài),根據(jù) VCL 規(guī)則判斷該請求應(yīng)該 pass(vcl_pass)或是 pipe(vcl_pipe),還是進(jìn)入 lookup(本地查詢)。
  • Lookup 狀態(tài)。進(jìn)入該狀態(tài)后,會在 hash 表中查找數(shù)據(jù),若找到,則進(jìn)入 hit(vcl_hit)狀態(tài),否則進(jìn)入 miss(vcl_miss)狀態(tài)。
  • Pass(vcl_pass)狀態(tài)。在此狀態(tài)下,會直接進(jìn)入后端請求,即進(jìn)入 fetch(vcl_fetch)狀態(tài)
  • Fetch(vcl_fetch)狀態(tài)。在 fetch 狀態(tài)下,對請求進(jìn)行后端獲取,發(fā)送請求,獲得數(shù)據(jù),并根據(jù)設(shè)置進(jìn)行本地存儲。
  • Deliver(vcl_deliver)狀態(tài)。將獲取到的數(shù)據(jù)發(fā)給客戶端,然后完成本次請求。

VCL 內(nèi)置公共變量

VCL 內(nèi)置的公共變量可以用在不同的 VCL 函數(shù)中,下面根據(jù)使用的不同階段進(jìn)行介紹

當(dāng)請求到達(dá)時,可以使用的公共變量表 1 所示


表 1. 請求到達(dá)時可用公共變量 
公共變量名含義
req.backend指定對應(yīng)的后端主機(jī)
server.ip表示服務(wù)器 IP
client.ip表示客戶端 IP
req.quest只是請求的類型,例如 GET、HEAD 等
req.url指定請求的地址
req.proto表示客戶端發(fā)起請求的 HTTP 協(xié)議版本
req.http.header表示對應(yīng)請求中的 HTTP 頭部信息
req.restarts表示重啟次數(shù),默認(rèn)最大值為 4

Varnish 在向后端主機(jī)請求時,可是用的公共變量如表 2 所示


表 2. 向后端主機(jī)請求時可用公共變量 
公共變量名含義
beresp.requset指定請求類型,例如 GET、HEAD 等
beresp.url表示請求地址
beresp.proto表示客戶端發(fā)起請求的 HTTP 協(xié)議版本
beresp.http.header表示對應(yīng)請求中 HTTP 頭部信息
beresp.ttl表示緩存的生存周期,cache 保留時間(s)

從 cache 或是后端主機(jī)獲取內(nèi)容后,可以使用的公共變量如表 3 所示


表 3. 后端主機(jī)獲取內(nèi)容時可使用公共變量 
公共變量名含義
obj.status返回內(nèi)容的請求狀態(tài)碼,例如 200、302、504 等
obj.cacheable返回的內(nèi)容是否可以緩存
obj.valid是否有效的 HTTP 請求
obj.response返回內(nèi)容的請求狀態(tài)信息
obj.proto返回內(nèi)容的 HTTP 版本
obj.ttl返回內(nèi)容的生存周期,也就是緩存時間,單位秒
obj.lastuse返回上一次請求到現(xiàn)在的時間間隔,單位秒

對客戶端應(yīng)答時,可以使用的公共變量如表 4 所示

表 4. 對客戶端相應(yīng)時可使用公共變量 
公共變量名稱含義
resp.status返回給客戶端的 HTTP 代碼狀態(tài)
resp.proto返回給客戶端的 HTTP 協(xié)議版本
resp.http.header返回給客戶端的 HTTP 頭部消息
resp.response返回給客戶端的 HTTP 頭部狀態(tài)

VCL 調(diào)試

VCL 為配置文件語言,無法像 c/c++ 那樣進(jìn)行單步調(diào)試,當(dāng) VCL 運行的效果和預(yù)期效果不一樣時,很難發(fā)現(xiàn)哪出現(xiàn)邏輯錯誤,這時除了查看代碼查找錯誤外,我們還可以采用內(nèi)置 C 語言和瀏覽器查看返回對象中的狀態(tài)來查找邏輯的錯誤。

我們可以采用內(nèi)置 C 語言來打印相應(yīng)的信息,例如我們可以在相應(yīng)的地方打印信息,來查看 VCL 流程的執(zhí)行是否正確。內(nèi)置 C 語言打印信息代碼如清單 10 所示:


清單 10. 打印信息代碼 
C{ 
	    #include// 首先要包含頭文件
      }C 
      C{ 
	    Syslog(LOG_INFO,"VCL run here in function xxx in line xxx"); 
      }C

啟動 varnish 后,我們可以采用 tail -f /var/log/messages 命令在 /var/log/messages 中查看相應(yīng)的打印信息。查看的打印信息如圖 2 所示:


圖 2. varnish 打印信息 
圖 2. varnish 打印信息 

我們還可以將某些變量的值設(shè)置到返回給瀏覽器的對象上,然后在瀏覽器中查看該變量的值。設(shè)置變量值代碼如清單 11 所示:


清單 11. varnish 變量設(shè)置代碼 
set beresp.http.X-Cookie-Debug-req-cookie = req.http.Cookie;

在 chrome 瀏覽器中查看 beresp.http.X-Cookie-Debug-req-cookie 的值,結(jié)果如圖 3 所示

圖 3. 在瀏覽器中查看 varnish 變量的值 
圖 3. 在瀏覽器中查看 varnish 變量的值

小結(jié)

本文介簡單介紹了 varnish,并對其工作流程、安裝以及配置進(jìn)行了詳細(xì)講解。通過本文,可以很快的掌握 varnish。


常用操作的命令

清除所有緩存
/usr/local/varnish/bin/varnishadm -T 192.168.9.201:3000 url.purge *$

清除image目錄下所有緩存 
/usr/local/varnish/bin/varnishadm -T 192.168.9.201:3000 url.purge /image/

查看Varnish服務(wù)器連接數(shù)與命中率
/usr/local/varnish/bin/varnishstat –n /data/varnish/cache/varnish_cache.data

#============================ 內(nèi)核優(yōu)化 ==============================
vi /etc/sysctl.conf
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
#net.ipv4.tcp_fin_timeout = 30
#net.ipv4.tcp_keepalive_time = 300
net.ipv4.ip_local_port_range = 1024 65000
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_max_tw_buckets = 5000

net.ipv4.tcp_max_syn_backlog = 65536
net.core.netdev_max_backlog =  32768
net.core.somaxconn = 32768

net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216

net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 2

net.ipv4.tcp_tw_recycle = 1
#net.ipv4.tcp_tw_len = 1
net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_mem = 94500000 915000000 927000000
net.ipv4.tcp_max_orphans = 3276800

/sbin/sysctl -p

#===================== Varnish添加到服務(wù)自啟動 ======================
配置啟動文件
vi /etc/init.d/varnish
#! /bin/sh
#
# varnish Control the varnish HTTP accelerator
#
# chkconfig: - 90 10
# description: Varnish is a high-perfomance HTTP accelerator
# processname: varnishd
# config: /etc/sysconfig/varnish
# pidfile: /var/run/varnish/varnishd.pid

### BEGIN INIT INFO
# Provides: varnish
# Required-Start: $network $local_fs $remote_fs
# Required-Stop: $network $local_fs $remote_fs
# Should-Start: $syslog
# Short-Description: start and stop varnishd
# Description: Varnish is a high-perfomance HTTP accelerator
### END INIT INFO

# Source function library.
. /etc/init.d/functions

retval=0
pidfile=/var/run/varnish.pid

exec="/usr/local/varnish/sbin/varnishd"
prog="varnishd"
config="/usr/local/varnish/etc/varnish/varnish"
lockfile="/var/lock/subsys/varnish"

# Include varnish defaults
[ -e /usr/local/varnish/etc/varnish/varnish ] && . /usr/local/varnish/etc/varnish/varnish


start() {

    if [ ! -x $exec ]
    then
        echo $exec not found
        exit 5
    fi

    if [ ! -f $config ]
    then
        echo $config not found
        exit 6
    fi
    echo -n "Starting varnish HTTP accelerator: "

    # Open files (usually 1024, which is way too small for varnish)
    ulimit -n ${NFILES:-131072}

    # Varnish wants to lock shared memory log in memory. 
    ulimit -l ${MEMLOCK:-82000}

        # $DAEMON_OPTS is set in /etc/sysconfig/varnish. At least, one
        # has to set up a backend, or /tmp will be used, which is a bad idea.
    if [ "$DAEMON_OPTS" = "" ]; then
        echo "\$DAEMON_OPTS empty."
        echo -n "Please put configuration options in $config"
        return 6
    else
        # Varnish always gives output on STDOUT
        daemon   $exec -P $pidfile "$DAEMON_OPTS" > /dev/null 2>&1
        retval=$?
        if [ $retval -eq 0 ]
        then
            touch $lockfile
            echo_success
            echo
        else
            echo_failure
        fi
        return $retval
    fi
}

stop() {
    echo -n "Stopping varnish HTTP accelerator: "
    killproc $prog
    retval=$?
    echo
    [ $retval -eq 0 ] && rm -f $lockfile
    return $retval
}

restart() {
    stop
    start
}

reload() {
    restart
}

force_reload() {
    restart
}

rh_status() {
    status $prog
}

rh_status_q() {
    rh_status >/dev/null 2>&1
}

# See how we were called.
case "$1" in
    start)
        rh_status_q && exit 0
        $1
        ;;
    stop)
        rh_status_q || exit 0
        $1
        ;;
    restart)
        $1
        ;;
    reload)
        rh_status_q || exit 7
        $1
        ;;
    force-reload)
        force_reload
        ;;
    status)
        rh_status
        ;;
    condrestart|try-restart)
        rh_status_q || exit 0
        restart
        ;;
    *)
    echo "Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}"

    exit 2
esac

exit $?

varnish的配置調(diào)用文件,是用來告訴程序從哪里讀取配置文件,啟動參數(shù)有哪些等

vi /usr/local/varnish/etc/varnish
# Configuration file for varnish
#
# /etc/init.d/varnish expects the variable $DAEMON_OPTS to be set from this
# shell script fragment.
#

# Maximum number of open files (for ulimit -n)
NFILES=131072

# Locked shared memory (for ulimit -l)
# Default log size is 82MB + header
MEMLOCK=1000000

## Alternative 2, Configuration with VCL
DAEMON_OPTS="-a 192.168.9.201:80 \
             -f /usr/local/varnish/etc/varnish/kerry.vcl \
             -T 192.168.9.201:3000 \
             -u www -g www \
             -n /data/varnish/cache \
             -s file,/data/varnish/cache/varnish_cache.data,1G"

添加到系統(tǒng)服務(wù),開機(jī)自啟動
chmod +x /etc/init.d/varnish 
/sbin/chkconfig --add varnish
/sbin/chkconfig --level 2345 varnish on

開啟varnish
/etc/init.d/varnish start

關(guān)閉varnish
/etc/init.d/varnish stop



    相關(guān)評論

    閱讀本文后您有什么感想? 已有人給出評價!

    • 8 喜歡喜歡
    • 3 頂
    • 1 難過難過
    • 5 囧
    • 3 圍觀圍觀
    • 2 無聊無聊

    熱門評論

    最新評論

    發(fā)表評論 查看所有評論(0)

    昵稱:
    表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
    字?jǐn)?shù): 0/500 (您的評論需要經(jīng)過審核才能顯示)