配置Web服务器

将Web服务器配置为在默认端口80以外的端口上侦听,因为Varnish直接响应传入的HTTP请求,而不是Web服务器。

以下部分使用端口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. 将更改保存到Varnish配置文件并退出文本编辑器。

修改缺省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的服务器将加速。

    通常,这是您的Web服务器。 请参阅​ 清漆指南 ​中的后端服务器

  5. .port的值替换为Web服务器的侦听端口(在此示例中为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

在Web浏览器中,转到任何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