設定網頁伺服器

將網頁伺服器設定為在預設連線埠80以外的連線埠上接聽,因為Varnish會直接回應傳入的HTTP要求,而非網頁伺服器。

以下各節以連線埠8080為例。

若要變更Apache 2.4接聽連線埠

  1. 在文字編輯器中開啟/etc/httpd/conf/httpd.conf
  2. 找到Listen指示詞。
  3. 將接聽連線埠的值變更為8080。 (您可以使用任何可用的接聽連線埠。)
  4. 將變更儲存至httpd.conf並結束文字編輯器。

修改Varnish系統設定

若要修改Varnish系統組態:

  1. 以具有root許可權的使用者身分,在文字編輯器中開啟您的「消失」設定檔:

    • CentOS 6: /etc/sysconfig/varnish
    • CentOS 7: /etc/varnish/varnish.params
    • Debian: /etc/default/varnish
    • Ubuntu: /etc/default/varnish
  2. 將Varnish接聽連線埠設定為80:

    code language-conf
    VARNISH_LISTEN_PORT=80
    

    對於Varnish 4.x,請確定DAEMON_OPTS包含-a引數的正確接聽連線埠(即使VARNISH_LISTEN_PORT設定為正確值):

    code language-conf
    DAEMON_OPTS="-a :80 \
       -T localhost:6082 \
       -f /etc/varnish/default.vcl \
       -S /etc/varnish/secret \
       -s malloc,256m"
    
  3. 將變更儲存至「清漆」組態檔,並退出文字編輯器。

修改預設VCL

本節探討如何提供最低限度的設定,好讓Varnish傳回HTTP回應標題。 這可讓您在設定Commerce應用程式使用Varnish之前,先驗證Varnish是否有效。

若要將清漆設定為最少:

  1. 備份default.vcl

    code language-bash
    cp /etc/varnish/default.vcl /etc/varnish/default.vcl.bak
    
  2. 在文字編輯器中開啟/etc/varnish/default.vcl

  3. 找到下列區段:

    code language-conf
    backend default {
        .host = "127.0.0.1";
        .port = "80";
    }
    
  4. .host的值取代為Varnish 後端 ​或​ 原始伺服器 ​的完整主機名稱或IP位址和接聽連線埠;也就是說,提供內容Varnish的伺服器將會加速。

    通常這是您的網頁伺服器。 請參閱​ 清漆指南 ​中的後端伺服器

  5. .port的值取代為網頁伺服器的接聽連線埠(此範例中為8080)。

    範例: Apache已安裝於主機192.0.2.55上,且Apache正在連線埠8080上接聽:

    code language-conf
    backend default {
        .host = "192.0.2.55";
        .port = "8080";
    }
    
    note info
    INFO
    如果Varnish和Apache在相同主機上執行,Adobe建議您使用IP位址或主機名稱,而非localhost
  6. 將變更儲存至default.vcl並結束文字編輯器。

  7. 重新啟動清漆:

    code language-bash
    service varnish restart
    

如果Varnish無法啟動,請嘗試從命令列執行,如下所示:

varnishd -d -f /etc/varnish/default.vcl

這應該會顯示錯誤訊息。

INFO
如果Varnish不是以服務方式啟動,您必須設定SELinux規則以允許其執行。

確認亮光是否正常運作

以下各節討論如何驗證Varnish是否正常運作,但​ 沒有 ​設定Commerce以使用它。 在設定Commerce之前,請先嘗試此做法。

依照顯示的順序,執行下列各節中討論的工作:

開始塗漆

輸入: service varnish start

如果Varnish無法作為服務啟動,請從命令列啟動它,如下所示:

  1. 啟動Varnish CLI:

    code language-bash
    varnishd -d -f /etc/varnish/default.vcl
    
  2. 啟動Varnish子程式:

    出現提示時,請輸入start

    系統會顯示下列訊息,確認啟動成功:

    code language-none
    child (29805) Started
    200 0
    
    Child (29805) said
    Child (29805) said Child starts
    

netstat

登入Varnish伺服器並輸入下列命令:

netstat -tulpn

請特別尋找下列輸出:

tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      32614/varnishd
tcp        0      0 127.0.0.1:58484             0.0.0.0:*                   LISTEN      32604/varnishd
tcp        0      0 :::8080                     :::*                        LISTEN      26822/httpd
tcp        0      0 ::1:48509                   :::*                        LISTEN      32604/varnishd

前述顯示於連線埠80上執行的Varnish以及於連線埠8080上執行的Apache。

如果您沒有看到varnishd的輸出,請確定Varnish正在執行。

檢視netstat選項

安裝Commerce軟體

安裝Commerce軟體(如果尚未安裝)。 提示輸入基底URL時,請使用Varnish主機和連線埠80 (適用於Varnish),因為Varnish會接收所有傳入的HTTP要求。

安裝Commerce時可能發生錯誤:

Error 503 Service Unavailable
Service Unavailable
XID: 303394517
Varnish cache server

如果您發生此錯誤,請編輯default.vcl並將逾時新增至backend段落,如下所示:

backend default {
   .host = "127.0.0.1";
   .port = "8080";
   .first_byte_timeout = 600s;
}

驗證HTTP回應標題

現在,您可以檢視HTML從任何頁面傳回的回應標題,以確認Varnish正在為頁面提供服務。

在檢視標題之前,您必須先為開發人員模式設定Commerce 。 有幾種方法可以做到,最簡單的方法就是在Commerce應用程式根目錄中修改.htaccess。 您也可以使用magento deploy:mode:set命令。

針對開發人員模式設定Commerce

若要將Commerce設為開發人員模式,請使用magento deploy:mode:set命令。

檢視清漆日誌

請確定Varnish正在執行,然後在Varnish伺服器上輸入下列命令:

varnishlog

在網頁瀏覽器中,前往任何Commerce頁面。

命令提示字元視窗中會顯示一長串回應標頭清單。 尋找類似以下內容的標頭:

-   BereqHeader    X-Varnish: 3
-   VCL_call       BACKEND_FETCH
-   VCL_return     fetch
-   BackendOpen    17 default(10.249.151.10,,8080) 10.249.151.10 60914
-   Backend        17 default(10.249.151.10,,8080)
-   Timestamp      Bereq: 1440449534.261791 0.000618 0.000618
-   ReqHeader      Host: 10.249.151.10
-   ReqHeader      Connection: keep-alive
-   ReqHeader      Content-Length: 86
-   ReqHeader      Cache-Control: max-age=0
-   ReqHeader      Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
-   ReqHeader      Origin: http://10.249.151.10

如果這類標頭​ ​顯示,請停止Varnish,檢查您的default.vcl,然後再試一次。

檢視HTML回應標頭

有幾種方式可檢視回應標題,包括使用瀏覽器外掛程式或瀏覽器檢測器。

下列範例使用curl。 您可以從任何可以使用HTTP存取Commerce伺服器的電腦輸入此命令。

curl -I -v --location-trusted '<your Commerce base URL>'

例如,

curl -I -v --location-trusted 'http://192.0.2.55/magento2'

尋找類似以下內容的標頭:

Content-Type: text/html; charset=iso-8859-1
X-Varnish: 15
Age: 0
Via: 1.1 varnish-v6
X-Magento-Cache-Debug: HIT
recommendation-more-help
386822bd-e32c-40a8-81c2-ed90ad1e198c