一、目的

     通过配置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  //下面配置文件需要密码信息

       VARNISH_SECRET_FILE=/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       '.*'                 //非交互式清理.*代表所有的缓存页面