varnish40使用说明书官方文档Word下载.docx
《varnish40使用说明书官方文档Word下载.docx》由会员分享,可在线阅读,更多相关《varnish40使用说明书官方文档Word下载.docx(63页珍藏版)》请在冰豆网上搜索。
Varnish
Software
VarnishInstallationvarnish的安装
本节包含了varnish安装的准备工作,一步一步的安装过程,怎样获取帮助,在哪里寻求帮助,已经怎样报告bug。
也包含了帮助你在某些特殊的系统上安装varnish的注意事项.
Prerequisites需要的配置
如果你要安装Varnish你必须满足一下条件:
∙全新的,高配置的电脑。
∙64位的Linux、FreeBSD或者Solaris(x86only)
∙Root权限
varnish也可以安装在其他的Unix操作系统上,但是我们是没有广泛和系统的测试。
varnish也时不时的被提及工作在:
∙32位的Linux、FreeBSD
∙OSX,
∙NetBSD,
∙OpenBSD,
∙Windows上的Cywin
InstallingVarnish安装Varnish
对于开源软件你可以选择二进制包安装或者自己编译源码安装。
二进制安装或者源码安装只和个人的口味有关系。
如果你不知道选哪一个,我们推荐你读整个章节,然后选你觉得最合适那一个。
Sourceorpackages?
源码还是二进制包
安装Varnish具体的系统包管理和当前操作系统相关的,典型例子:
FreeBSD:
二进制包安装
pkg_add
-r
varnish
源码安装
cd
/usr/ports/varnish
&
make
install
clean
Red-Hat/CentOS
我们尽量保持最新版的varnish预编译rpm在repo.varnish-cache.org查看在线的Red-Hat安装指南获取更多信息vanish包含在EPEL仓库里,由于新版本的varnish语法和老版本的冲突,所以只要老版本的可用。
因此我们建议你直接从我们的仓库安装最新版的varnish,就像之前说的那样。
Debian/Ubuntu
Varnish是独立的在Debian和Ubuntu上。
获取varnish可以运行
sudo
apt-get
请注意这个varnish可能不是最新版的。
如果你需要最新版的Varnish,请查看Debian和Ubuntu在线安装指南
CompilingVarnishfromsource源码编译安装
如果你的系统没有二进制包,或者你想通过源码包编译亦或是其他原因,跟进下面的步骤:
从http:
//repo.varnish-cache.org/source/下载合适的tar包,
或者你想修改Varnish,可以clone我们的git仓库,
git
clone
git:
//git.varnish-cache.org/varnish-cache
构建Debian/Ubuntu上的依赖环境
为了从源码构建Varnish你需要安装一些包,在Debian或者Ubuntu上,需要这些:
∙automake
∙autotools-dev
∙libedit-dev
∙libjemalloc-dev
∙libncurses-dev
∙libpcre3-dev
∙libtool
∙pkg-config
∙python-docutils
∙python-sphinx
构建Red-Hat/CentOS的依赖环境
在Red-had或者CentOS下面这些包是需要安装的:
∙autoconf
∙jemalloc-devel
∙libedit-devel
∙ncurses-devel
∙pcre-devel
∙pkgconfig
编译varnish
配置的是基于依赖关系满足的条件,一旦满足了,你就可以执行以下指令:
varnish-cache
sh
autogen.sh
configure
make
configure脚本可以引入一些参数,但是现在请忘记这些,我们可以在varnish运行的时候来添加参数。
安装之前,你可能想运行测试套件,测试的话要花上好几分钟,你可以来杯茶了。
。
check
如果出现一两个错误,请不要担心,但是如果有一些失败的,特别的像b00000.vtc是测试失败,那确实是有问题了,你需要检查下configure是否异常了。
Installing安装
最后呢,真正对与勇敢的心的测试:
install
Varnish将安装在/usr/local,varnishd二进制是在/usr/local/sbin/varnishd,默认的配置文件在/usr/local/etc/varnish/default.vcl。
GetHelp获取帮助
关于直接获取varnish团队的支持,我们会在时间允许的情况下尽量多的帮助大家,并试图尽可能的简化这一过程。
但是请在联系我们前花一点时间,整理您的想法和明白表达您的问题,如果您只告诉我们“我的varnish不能工作了”,而没有进一步的信息,这将是毫无意义的。
IRCCHANNEL
最直接的获得我们帮助的方法就是加入我们的IRC通道。
varnishonserverirc.linpro.no含义:
时区是欧洲+美国如果您要发表您的VCL或者相关文档,可以使用
MAILINGLISTS
打开或关闭邮件列表请访问MailManhttp:
//lists.varnish-cache.org/mailman/listinfo
COMMERCIALSUPPORT
商业支持,请联系**************************.UPLEX*************
ReportingBugs报告bug
Platformspecificnotes特殊系统注意事项
本节你会了解到某些系统在运行varnish之前,你需要如何调整系统。
varnish4.0简要教程
这部分教程包含了varnish基本原理。
囊括了什么是varnish、它怎样工作,同时也包含了开始使用和运行varnish。
这部分过后你可能想继续了解用户向导(varnish用户引导)。
如果你正在web上读这些呢注意每页左边的Nexttopic和Previoustopic
使用varnish作为web代理缓存的原理
varnish是一个http反向代理的缓存。
它从客户端接收请求然后尝试从缓存中获取数据来响应客户端的请求,如果varnish不能从缓存中获得数据来响应客户端,它将转发请求到后端(backendservers),获取响应同时存储,最后交付给客户端。
如果varnish已经缓存了某个响应,它比你传统的后端服务器的响应要快很多,所以你需要尽可能是更多的请求直接从varnish的缓存中获取响应。
varnish决定是缓存内容或者是从后端服务器获取响应。
后端服务器能通过http响应头中的Cache-Control来同事varnish缓存内容。
在某些条件下varnish将不缓存内容,最常见的是使用cookie。
当一个被标记有cookie的客户端web请求,varnish默认是不缓存。
这些众多的varnish功能特点都是可以通过写vcl来改变的。
performance性能
varnish使用现代先进的架构设计。
通常依赖于网络的速度,而不是性能问题。
你应该更关心你的web应用的处理能力,而不是varnish的性能。
Flexibility灵活的
提高varnish缓存性能的关键点,是它灵活的配置语言,VCL。
VCL允许你编写如何处理请求的规则。
通过使用规则你可以决定如何处理内容,从哪里获取内容,以及怎样修改请求和响应。
Supportedplatforms支持的平台
varnish开发来是运行当前的Linux和FreeBSD的版本上,当然最好能就运行在这些系统之上。
感谢这些贡献者也让varnish能运行在NetBSD,OpenBSD,OSX以及各种各样的Solaris系统,像OracleSolaris,OmniOSandSmartOS。
AbouttheVarnishdevelopmentprocessvarnish开发流程
varnish是一个社区驱动项目。
VarnishGoverningBoard监督varnish的开发,成员包括Poul-HenningKamp(Architect),RogierMulhuijzen(Fastly)andLasseKarstensen(VarnishSoftware).如果你想为varnish做出贡献,请查看这个链接:
https:
//www.varnish-cache.org/trac/wiki/Contributing
StartingVarnish
本教程假定你已经运行了Varnish在Ubuntu,Debian,EnterpriseLinux或者是CentOS上。
如果你要运行varnish在另一些系统上,你需要费点脑力来转换了。
以后你就可以尽情的使用它了,即便是在你的weird(怪癖的)的系统上确定你已经成功的安装好了varnish(下面的操作在InstallingVarnish之上)当你正确的安装好varnish后就可以使用
start
来启动varnish,如果varnish没有启动,刚刚的指令将启动varnish,现在你的vanish运行起来了。
通过浏览器来访问http:
//127.0.0.1:
6081/(使用你自己机器的ip来替换127.0.0.1)。
默认配置转发请求给web应用。
Varnish认为web应用是监听在8080端口。
如果没有web应用监听在本机的8080端口,varnish将报错。
当出现问题的时候,varnishcache友好的提供给你一个页面像"
Error503ServiceUnavailable"
你可以运行web应用在其他端口或者其他主机。
现在我们编辑配置文件,让他指向某个工作的主机。
选一个你喜欢的编辑器,编辑/etc/varnish/default.vcl这个文件大部分是注释掉的,有些没有,像下面的:
vcl
4.0;
backend
default
{
.host
=
"
127.0.0.1"
;
.port
8080"
}
现在我们改变这个vcl配置文件,指向某个活动主机,幸运的是http:
//www.varnish-cache.org/是活动的,我们就用这个http:
//www.varnish-cache.org/在vcl中替换成下面这样。
vcl4.0;
www.varnish-cache.org"
80"
执行
reload
使Varnish重载它的配置文件。
如果成功,你在浏览器访问http:
6081将看到一些目录列表。
你没有看到varnish的官方站点是因为你客户端请求的头里没有设置合适的Host,然后服务器以默认的文件夹列表来响应。
PutVarnishonport80让varnish监听在80端口
出于测试目的我们一直让varnish运行在一个高的端口。
现在我们让varnish监听在80端口首先停止varnish:
servicevarnishstop我们需要编辑配置文件然后启动Varnish
Debian/Ubuntu是这个配置文件/etc/default/varnish。
这个文件看起来像这样:
DAEMONOPTS="
-a:
6081\-Tlocalhost:
6082\-f/etc/varnish/default.vcl\-S/etc/varnish/secret\-smalloc,256m"
修改成这样DAEMONOPTS="
80\-Tlocalhost:
RedHatEnterpriseLinux/CentOS
RedHat/CentOS配置文件路径为/etc/sysconfig/varnish,修改方式相同
RestartingVarnishagain
修改完成后就可以重启Varnish:
start.
现在所有人访问你的网站都会通过Varnish了。
Backendservers后端服务
Varnish有个后端或者源服务器的概念。
一个后端服务器是提供内容的服务器,Varnish将通过使用缓存内容来加速。
第一个任务是告知Varnish哪里可以获取到这些内容。
开启你喜欢的编辑器,打开默认的配置文件。
如果你通过源码安装默认的配置文件是这个/usr/local/etc/varnish/default.vcl如果你通过包安装(想apt-get或者yum),它可能是这个/etc/varnish/default.vcl。
如果你跟进这个教程,本节你的配置文件看起来是这样的:
vcl4.0;
配置文件的意思是我们在varnish里配置了一个后端,从www.varnish-cache.org的80端口获取内容。
如果你不想做一个varnish-cache.org的镜像,我们需要调整Varnish从你自己的源服务器获取内容。
我们已经绑定Varnish在80端口,现在我们需要把它和源服务器联系起来。
像下面这个例子,我们假冒了个监听在localhost8080端口的源服务器。
varnish可以定义很多个后端,甚至是将这个后端添加到一个集群里面使它们达到服务在均衡的目的,Varnish根据当前的调度算法挑选出一个后端下一步,让我们看看varnish有什么独特的地方,同时我们能用它做点什么。
Peculiarities特性
varnishcache和其他的一些项目是有所不同的,其中一个就是你已经看到的VCL。
本机我们将快速向你展示你需要了解到的关于varnish的其他特性
Configuration配置
varnish用VCL来编写配置文件。
当varnish使用配置文件,它将配置文件转换成C代码,载入到C的编译器,然后执行这样的话你调整的各种各样设置,你编写的处理请求的vcl规则将被处理。
varnishadm
varnish缓存有个管理控制台(varnishadm),你可以通过使用命令varnishadm来连接管理控制台,为了认证你需要有/etc/varnish/secret的读取权限。
你可以利用varnishadm来停止、开启缓存进程、载入VCL规则、调整负载均衡器、清除缓存等等,然后退出。
varnishadm内建命令help帮助你了解到varnishadm能做些什么。
varnishlog
Varnish默认不记录日志到磁盘,而是记录在一块内存里,实际上是日志流。
任何时间你都可以连接它,看看发生了什么。
Varnish记录了一些信息。
你也可以使用varnishlog来查看日志流
Nowwhat?
varnish简要教程现在就完了,你的varnish现在应该已经跑起来了。
你应该看看varnish的日志,你的VCL配置文件也是粗糙的。
下一步,你可能需要看看Varnish用户引导,我们能看到更多varnish详细的特点,
TheVarnishUsersGuidevarnish用户手册
TheBigVarnishPicturevarnish概况
本节将回答这个问题:
“varnish”到底是什么,命名的点点滴滴。
varnish两个主要的部分是在varnisd项目中的两个进程。
第一个进程被叫做“themanager”,主要功能是告诉你,系统管理员,发生了什么。
第二个进程被叫做“theworker”或者是“thechild”,这个进程是实际处理你http请求的进程。
当你启动varnishd,manager进程启动,一旦manager处理完所有的命令行参数,child进程就开始启动了。
如果child进程down掉,manager进程会重启child,自动的,无需干预。
这样设计的主要原因是为了安全考虑,manager为了能监听在80端口,以root运行,但是child进程只需要很小的权限。
manager进程是互动的,提供了CLI-命令行接口,可以手动,脚本以及程序调用。
CLI提供Varnish处理HTTP请求的几乎全部控制,同时我们已经竭尽全力,以确保你不应该需要重新启动varnish,除非你需要修改最底层的东西。
CLI是远程访问安全的,使用简单灵活的PSK--PreSharedKey,所以很容易集成到你的业务或者绑定到你的CMS
所有的这些都包含在StartingandrunningVarnish
比如,子进程怎样处理http请求,缓存什么,哪个http头需要移除等等,都是用一个轻量级的编程语言,叫VCL--Varnish配置语言。
manager进程将编译VCL程序同时检查是否出错,但是是child进程来运行VCL程序,在处理请求时。
因为VCL编译成C代码,C代码编译成机器指令,因此即便是复杂的VCL程序执行也是毫秒级的,不会对性能产生影响。
如果你不是一个真正的程序员,不要烦恼,VCL是很简单:
sub
vcl_recv
#
Remove
the
cookie
header
to
enable
caching
unset
req.http.cookie;
CLI允许你随时编译和加载行的VCL程序,你也可以实时的转换两套程序,不需要重启child进程,同时不会丢失http请求。
VCL代码可以使用VMODs扩展模块来扩展,如果你可以甚至是C代码。
因此varnish能对你的http请求做什么,真的是没有限制的。
VCL-VarnishConfigurationLanguage
描绘了VCL以及它能详细的做什么,varnish使用共享内存分块的方式报告和记录实时状态。
对于每个http请求,大量的详细的记录是追加到log的内存块。
其他进程可以查看日志记录,过滤,以Apache/NCSA风格为例。
其他的内存块是用来统计计数的,实时的,精确到毫秒级的监控缓存,资源使用情况以及各项性能指标。
varnish有大量的工具可以使用共享内存,varnishlog,varnishstats,varnishncsa等等,你也可以使用API库编写你自己的工具,只要你需要。
Reportingandstatistics
报告和统计说明所有的工作原理。
对varnish感兴趣的最可能的原因,是你想让你的网站工作的更好。
加速一个web站点是有很多方面的。
一个简单的策略是使用缓存,设计物理分割的多等级的使用ESI的CDN缓存,宕机自动切换。
启动和运行varnish
本节包含了启动,运行,停止varnish,命令行参数,如何与运行着的varnish进程进行通信,配置存储和套接字,安全性和如何保护varnish免受攻击。
Securityfirst安全第一
如果你仅仅抓专注于运行varnish,或者所有人都是这个观点,那么就可以跳过该节了.我们保护你的方方面面当http请求来的时候.
如果你的web基础设施是外包的,管理是分开的,那么你就需要考虑安全了.Varnish在4个权威的等级提供安全,大致关系到怎样让命令生效和在哪儿生效.
Commandlinearguments命令行参数
最高安全定理是决定和定义varnish的启动参数在一个表单里面,我们使用这个策略是为了新的操作也是安全的.最重要的的决定是确保这些:
∙WhoshouldhaveaccesstotheCommandLineInterface?
谁有命令行的权限?
∙Whichparameterscantheychange?
他们可以修改哪些参数?
∙Willinline-Ccodebeallowed?
哪些内建C代码是被允许的?
∙If/howVMODswillberestricted?
是否VMODs是被限制,怎样被限制?
CLIinterfaceaccessCLI接口权限
命令行接口可以通过三个方式进入.Varnish监听状态时,提供给CLI链接一个TCP套接字。
你可以绑定这个套接字在内核接受的任意地方。
-T
127.0.0.1:
631
localhost:
9999
192.168.1.1:
34
'
[fe80:
:
1]:
8082'
默认配置'
-Tlocalhost:
0'
将挑选一个随机端口,通过使用varnishadm(8)可以在共享内存中了解到。
使用localhost地址,仅仅限制本机的链接。
你也可以绑定端口在网络可达的物理地址,然后让其他机器直接连接。
这不是保密的,CLI命令讲作为非加密的ASCII文本进