配置Web服务器
将Web服务器配置为在默认端口80以外的端口上侦听,因为Varnish直接响应传入的HTTP请求,而不是Web服务器。
以下部分使用端口8080作为示例。
要更改Apache 2.4侦听端口:
- 在文本编辑器中打开
/etc/httpd/conf/httpd.conf
。 - 找到
Listen
指令。 - 将侦听端口的值更改为
8080
。 (可以使用任何可用的侦听端口。) - 将更改保存到
httpd.conf
并退出文本编辑器。
修改Varnish系统配置
要修改Varnish系统配置:
-
作为具有
root
权限的用户,在文本编辑器中打开“消失”配置文件:- CentOS 6:
/etc/sysconfig/varnish
- CentOS 7:
/etc/varnish/varnish.params
- Debian:
/etc/default/varnish
- Ubuntu:
/etc/default/varnish
- CentOS 6:
-
将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"
-
将更改保存到Varnish配置文件并退出文本编辑器。
修改缺省VCL
本节讨论如何提供最小配置,以便Varnish返回HTTP响应标头。 这使您可以在配置Commerce应用程序使用Varnish之前验证Varnish是否正常工作。
要最大限度地配置清漆,请执行以下操作:
-
备份
default.vcl
:code language-bash cp /etc/varnish/default.vcl /etc/varnish/default.vcl.bak
-
在文本编辑器中打开
/etc/varnish/default.vcl
。 -
找到以下段:
code language-conf backend default { .host = "127.0.0.1"; .port = "80"; }
-
将
.host
的值替换为Varnish 后端 或 原始服务器 的完全限定的主机名或IP地址和侦听端口;即,提供内容Varnish的服务器将加速。通常,这是您的Web服务器。 请参阅 清漆指南 中的后端服务器。
-
将
.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
。 -
将更改保存到
default.vcl
并退出文本编辑器。 -
重新启动清漆:
code language-bash service varnish restart
如果Varnish无法启动,请尝试从命令行运行它,如下所示:
varnishd -d -f /etc/varnish/default.vcl
这应显示错误消息。
验证清漆是否正常工作
以下各节讨论如何验证Varnish是否正常工作,但 不使用 配置Commerce以使用它。 在配置Commerce之前,您应该尝试此操作。
按照显示的顺序执行以下各节中讨论的任务:
开始涂漆
输入: service varnish start
如果Varnish无法作为服务启动,请从命令行启动它,如下所示:
-
启动Varnish CLI:
code language-bash varnishd -d -f /etc/varnish/default.vcl
-
启动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