通过配置Varnish缓存服务器,实现如下目标:
使用Varnish加速后端Apache Web服务
使用varnishadm命令管理缓存页面
使用varnishstat命令查看Varnish状态
二、方案,
服务器规划见我的另外一篇笔记:squid反向代理,通过源码编译安装Varnish缓存服务器
三、实施:主要是部署varnish缓存服务器
1、安装软件依赖包
yum -y install gcc readline-devel pcre-devel
2、创建程序的启动账户:useradd -s /sbin/nologin varnish
3、编译安装软件
tar -xf varnish-3.0.6.tar.gz //解压源码包
cd varnish-3.0.6/ //进入到解压的目录
./configure --prefix=/varnish //配置,指定安装路径为/varnish
make && make install //编译安装
4、复制启动脚本及配置文件
cp redhat/varnish.initrc /etc/init.d/varnish
cp redhat/varnish.sysconfig /etc/sysconfig/varnish
cp redhat/varnish_reload_vcl /usr/bin/
ln -s /usr/local/varnish/sbin/varnishd /usr/sbin/
ln -s /usr/local/varnish/bin/* /usr/bin
mkdir /etc/varnish
cp /usr/local/varnish/etc/varnish/default.vcl /etc/varnish/
uuidgen > /etc/varnish/secret
5、修改Varnish文件
vim /etc/sysconfig/varnish
66行:VARNISH_LISTEN_PORT=80 //修改默认端口
89行:VARNISH_STORAGE_SIZE=64M //定义缓存大小,因为这里是基于内存的缓存代理,依据自身服务器的
92行:VARNISH_STORAGE="malloc,${VARNISH_STORAGE_SIZE}" //定义基于内存方式缓存
6、修改代理配置文件
vim /etc/varnish/default.vcl
backend default {
.host = "192.168.2.103";
.port = "80";
}
7、启动服务
service varnish start 注:varnish启动脚本文件有问题,在rhel6上没问题
在rhel7上有问题,当出现 Reloading systemd: [ OK ] 时,可以ctrl+c结束掉
8、测试,在客户机上测试
curl http://192.168.4.102
9、其它
varnishlog //varnish日志
varnishncsa //访问日志
10、当网站更新文件后,由于在内存中的文件还在,故去访问时还是以前旧的文件,
要么等待一段时间,要么在代理服务器上手动刷新
varnishadm -S /etc/varnish/secret -T 127.0.0.1:6082 //进入后台管理缓存页面
storage.list //查看存储信息
ban.url .* // 清内存
varnishadm ban.url '.*' //非交互式清理.*代表所有的缓存页面
原文:http://blog.51cto.com/453412/2057949