Varnish是一种网站加速(反向代理,缓存服务器)。可使用Varnish实现网站动静分离,负载均衡,页面缓存,请求过滤(简单防采集等)。
Varnish官网:https://www.varnish-cache.org/
安装版本:Varnish Cache 4.0.3
下载地址:https://www.varnish-cache.org/content/varnish-cache-403
注意:Varnish网站有时会被墙。
Git 下载:
git clone https://github.com/varnish/Varnish-Cache /var/tmp/
依赖: 地址:https://www.varnish-cache.org/docs/4.0/installation/install.html
linux 版本为:Debian / Ubuntu
依赖包:红色不用安装,yum中好像也不存在
automake
autotools-dev
libedit-dev
libjemalloc-dev
libncurses-dev
libpcre3-dev
libtool
pkg-config
python-docutils
python-sphinx
linux 版本为:Red Hat / CentOS
依赖包:红色不用安装,yum中好像也不存在
autoconf
automake
jemalloc-devel
libedit-devel
libtool
ncurses-devel
pcre-devel
pkgconfig
python-docutils
python-sphinx
部分缺失包报错 ./configure 编译状态:
configure: error: no acceptable C compiler found in $PATH See `config.log‘ for more details
缺少 gcc 类的编译工具
configure: error: rst2man is needed to build Varnish, please install python-docutils.
缺少 python-docutils
configure: error: requires an X/Open-compatible Curses library
缺少 ncurses-devel
checking for PCRE... no configure: error: Package requirements (libpcre) were not met: No package ‘libpcre‘ found Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables PCRE_CFLAGS and PCRE_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details.
缺少 pcre-devel
configure: error: neither libedit nor another readline compatible library found
缺少 libedit-devel
部分 ./autogen.sh 错误状态:
./autogen.sh: line 29: automake: command not found WARNING: unable to determine automake version
缺少 automake,autoconf (这两个包使用yum 是一起安装的)
+ libtoolize --copy --force ./autogen.sh: line 44: libtoolize: command not found
缺少 libtool
下载:
wget https://repo.varnish-cache.org/source/varnish-4.0.3.tar.gz
解压:
tar -zxvf varnish-4.0.3.tar.gz
进入解压目录编译安装:
./autogen.sh 如果从Git库下载的安装包时才需要运行,用于生成configure编译文件。
./configure --prefix=/var/varnish/ 指定安装目录,可选项
make
make install
复制 vcl 文件(在编译安装目录下),如果安装目录里没有 default.vcl 文件。
复制到安装目录的var/varnish/目录下(当然并无必需要求在哪个目录,因为正式启动时还得指定这个文件的目录)
cp etc/example.vcl /var/varnish/var/varnish/default.vcl
进入安装目录
编辑复制的vcl文件(如果要修改转向端口号或HOST地址,默认端口号为8080),否则跳过。
vi var/varnish/default.vcl
修改下转向端口
backend default { .host = "127.0.0.1"; .port = "8080"; }
如果有安装 apache或nginx 得先关闭并且修改监听端口改为8080 (设置与varnish转向端口相同),然后启动 apache或nginx。
启动varnish (注意端口号不能被占用)
sbin/varnishd -f var/varnish/default.vcl -s malloc,1G -T 127.0.0.1:2000 -a 0.0.0.0:80
打开浏览输入地址: 127.0.0.1 或 localhost
./sbin/varnishd 启动参数说明:
官方地址 :https://www.varnish-cache.org/docs/4.0/reference/varnishd.html
-a address[:port][ -a address[:port][...]
监听指定的地址和端口的客户端请求。 该地址可以是主机名(“localhost”的),一个IPv4点分四组(“127.0.0.1”),或方括号括起来的IPv6地址(“[:: 1]”)。 如果未指定地址,varnishd将监听所有可用的IPv4和IPv6接口。 如果没有指定端口,如在/ etc列出的默认HTTP端口/服务的使用。 可多个监听地址和端口。如果指定了本地的地址则只能在本地访问。
-b host[:port]
使用指定的主机作为后端服务器。 如果没有指定端口,默认为8080。类似 -f 的VCL文件中backend命令可以指定反向入口地址与端口,但只能指定一个。是一个快捷启动方式。不能与 -f 同时存在
-C
打印编译成C语言和退出VCL代码。 指定VCL文件编译使用-f选项。
-d
启用调试模式:父进程运行在与标准输入/输出一个CLI连接的前景,和子进程必须明确使用CLI命令启动。 终止父进程也将终止子。
-f config
使用指定的VCL配置文件代替内置的默认值。不能与 -b 同时存在,但必需指定一个,否则服务无法启动
-F
在当前终端运行,会占用当前终端操作界面。
-g group
指定一个非特权组,它开始接受连接之前,子进程应该切换的名字。 这是用于指定组的运行时参数的快捷方式。
-h type[,options]
指定的哈希算法。 hash列表类型,以及长度.默认长度是16383.。
-i identity
指定服务器的身份。 这可以通过使用server.identity从VCL被访问
-l shl[,free[,fill]]
指定shmlog文件的大小。 shl 是共享内存日志记录(默认80M),free 是空闲空间,fill 是已经使用空间。内存大小可以设置‘K’,‘M‘ 等。
-M address:port
连接到这个端口,并提供了命令行界面。 把它看成是一个反向的外壳。 当与-M运行并没有定义的子进程后端(缓存)将无法启动初期。
-n name
临时文件实例名.如果以"/"开头,就必须是一个可用的路径.
-P file
写进程的PID到指定的文件。
-p param=value
设定参数指定为指定的值,参见运行时参数的参数列表。此选项可以多次使用,以指定多个参数。
-r param[,param...]
使列出的参数只读。用来保护参数。参见运行时参数的参数列表。
-s [name=]type[,options]
缓存设置,有三种方式:
malloc[,size] (内存+swap交换模式)
file[,path[,size[,granularity]]] (文件形式)
persistent,path,size (文件形式)
Malloc (malloc) 通过 malloc 获取内存,简单,速度快
Mmap file (file) 创建文件缓存
这个是varnish缓存的两种方式,可以在启动的时候通过参数指定。
granularity用于设定缓存空间分配单位,默认单位是字节,所有其它的大小都会被圆整。
size 是指定空间大小,可以是G,M,K等。
path 是文件目录
-T address[:port]
管理器端口。CLI 入口地址与端口,使用 talnet 命令可以进入 CLI 界面管理服务器,也可以使用varnishadm
-t ttl
指定缓存文件。 这是用于指定default_ttl运行时参数的快捷方式。
-u user
指定一个非特权用户,接受连接之前,子进程应该切换的名字。 这是指定的用户运行时参数的快捷方式。
如果同时指定用户和组,用户应先规定。
-V
显示版本号并退出。
停止varnish
pkill varnishd (直接杀死进程,只能使用上面的命令启动varnish)
或者
varnishadm stop (需要进入安装目录的bin目录下,只是关闭了子进程,可以使用varnishadm start 再次开启服务或者使用上面的启动命令)
本文出自 “秋风扫落叶” 博客,请务必保留此出处http://php2012web.blog.51cto.com/5585213/1640182
原文地址:http://php2012web.blog.51cto.com/5585213/1640182