文档章节

centos6.4安装varnish4.0

j
 jims
发布于 2015/11/09 17:19
字数 1503
阅读 1351
收藏 0
1. 安装好CentOS6.4系统后,安装更新
yum update

2. 下载varnish4.0安装包并解压
https://github.com/varnish/Varnish-Cache 放到/usr/local目录下
[root@localhost ~]# cd /usr/local/
[root@localhost local]# ls
bin  etc  games  include  lib  lib64  libexec  sbin  share  src  Varnish-Cache-master.zip  vmtools
[root@localhost local]# chmod 775 Varnish-Cache-master
[root@localhost local]# unzip Varnish-Cache-master
[root@localhost local]# ls
bin  etc  games  include  lib  lib64  libexec  sbin  share  src  Varnish-Cache-master  Varnish-Cache-master.zip  vmtools

3. 开始安装
[root@localhost local]# cd Varnish-Cache-master
[root@localhost Varnish-Cache-master]# ls
autogen.des  ChangeLog     CONTRIBUTING  flint.lnt  lib      Makefile.am       man     varnishapi.pc.in
autogen.sh   config.phk    doc           include    LICENSE  Makefile.inc.phk  README  varnishapi-uninstalled.pc.in
bin          configure.ac  etc           INSTALL    m4       Makefile.phk      redhat  varnish.m4
[root@localhost Varnish-Cache-master]# chmod -R 755 *
[root@localhost Varnish-Cache-master]# ls
autogen.des  ChangeLog     CONTRIBUTING  flint.lnt  lib      Makefile.am       man     varnishapi.pc.in
autogen.sh   config.phk    doc           include    LICENSE  Makefile.inc.phk  README  varnishapi-uninstalled.pc.in
bin          configure.ac  etc           INSTALL    m4       Makefile.phk      redhat  varnish.m4
[root@localhost Varnish-Cache-master]#

[root@localhost Varnish-Cache-master]# ./autogen.sh
./autogen.sh: line 29: automake: command not found
WARNING: unable to determine automake version
+ libtoolize --copy --force
./autogen.sh: line 44: libtoolize: command not found
[root@localhost Varnish-Cache-master]#
报错,那就是依赖包未安装完全,所需依赖包如下:

 autoconf
 automake
 jemalloc-devel
 libedit-devel
 libtool
 ncurses-devel
 pcre-devel
 pkgconfig
 python-docutils
 python-sphinx
参考地址:https://www.varnish-cache.org/docs/4.0/installation/install.html

然后全部用yum install即可
[root@localhost Varnish-Cache-master]# yum install autoconf automake jemalloc-devel libedit-devel libtool ncurses-devel pcre-devel pkgconfig python-docutils python-sphinx

中间可能会提示无可用包,但是没关系,可以尝试继续安装varnish
No package jemalloc-devel available.

[root@localhost Varnish-Cache-master]# ./autogen.sh
+ libtoolize --copy --force
libtoolize: putting auxiliary files in AC_CONFIG_AUX_DIR, `build-aux'.
libtoolize: copying file `build-aux/ltmain.sh'
libtoolize: putting macros in AC_CONFIG_MACRO_DIR, `m4'.
libtoolize: copying file `m4/libtool.m4'
libtoolize: copying file `m4/ltoptions.m4'
libtoolize: copying file `m4/ltsugar.m4'
libtoolize: copying file `m4/ltversion.m4'
libtoolize: copying file `m4/lt~obsolete.m4'
+ aclocal -I m4
configure.ac:25: warning: AC_COMPILE_IFELSE was called before AC_USE_SYSTEM_EXTENSIONS
../../lib/autoconf/specific.m4:386: AC_USE_SYSTEM_EXTENSIONS is expanded from...
../../lib/autoconf/specific.m4:332: AC_GNU_SOURCE is expanded from...
configure.ac:25: the top level
configure.ac:25: warning: AC_RUN_IFELSE was called before AC_USE_SYSTEM_EXTENSIONS
+ autoheader
configure.ac:25: warning: AC_COMPILE_IFELSE was called before AC_USE_SYSTEM_EXTENSIONS
../../lib/autoconf/specific.m4:386: AC_USE_SYSTEM_EXTENSIONS is expanded from...
../../lib/autoconf/specific.m4:332: AC_GNU_SOURCE is expanded from...
configure.ac:25: the top level
configure.ac:25: warning: AC_RUN_IFELSE was called before AC_USE_SYSTEM_EXTENSIONS
+ automake --add-missing --copy --foreign
configure.ac:25: warning: AC_COMPILE_IFELSE was called before AC_USE_SYSTEM_EXTENSIONS
../../lib/autoconf/specific.m4:386: AC_USE_SYSTEM_EXTENSIONS is expanded from...
../../lib/autoconf/specific.m4:332: AC_GNU_SOURCE is expanded from...
configure.ac:25: the top level
configure.ac:25: warning: AC_RUN_IFELSE was called before AC_USE_SYSTEM_EXTENSIONS
configure.ac:15: installing `build-aux/config.guess'
configure.ac:15: installing `build-aux/config.sub'
configure.ac:19: installing `build-aux/install-sh'
configure.ac:19: installing `build-aux/missing'
bin/varnishadm/Makefile.am: installing `build-aux/depcomp'
+ autoconf
configure.ac:25: warning: AC_COMPILE_IFELSE was called before AC_USE_SYSTEM_EXTENSIONS
../../lib/autoconf/specific.m4:386: AC_USE_SYSTEM_EXTENSIONS is expanded from...
../../lib/autoconf/specific.m4:332: AC_GNU_SOURCE is expanded from...
configure.ac:25: the top level
configure.ac:25: warning: AC_RUN_IFELSE was called before AC_USE_SYSTEM_EXTENSIONS
[root@localhost Varnish-Cache-master]#

没报错 
[root@localhost Varnish-Cache-master]# ls
aclocal.m4      bin          config.log    CONTRIBUTING  include  m4                Makefile.phk  varnishapi.pc.in
autogen.des     build-aux    config.phk    doc           INSTALL  Makefile.am       man           varnishapi-uninstalled.pc.in
autogen.sh      ChangeLog    configure     etc           lib      Makefile.in       README        varnish.m4
autom4te.cache  config.h.in  configure.ac  flint.lnt     LICENSE  Makefile.inc.phk  redhat
[root@localhost Varnish-Cache-master]#

再configure,没报错,期间如有报错,可以根据报错内容网上搜一下解决办法
[root@localhost Varnish-Cache-master]# ./configure --prefix=/usr/local/varnish PKG_CONFIG_PATH=/usr/lib/pkgconfig

接着就make
[root@localhost Varnish-Cache-master]#make
[root@localhost Varnish-Cache-master]#make install

此时/usr/local目录底下就有了varnish目录
[root@localhost local]# cd varnish/
[root@localhost varnish]# pwd
/usr/local/varnish
[root@localhost varnish]# ls
bin  include  lib  sbin  share  var
[root@localhost varnish]#

到此varnish就安装完成了,但是。。。还要配置
4. 配置varnish
由于varnish3.0与varnish4.0的配置文件有较大改动,且一些变量名,函数等都有改动,所以不采用3.0的配置文件
其实旧的配置文件模版在这里:
/usr/local/Varnish-Cache-master/etc/example.vcl

网上找到4.0的配置模版:
http://loftor.com/archives/varnish-4_0-vcl.html
但这个模版还需要修改,有3个地方要修改
在/usr/local/varnish目录下新建etc目录用来存放配置文件
在/usr/local/varnish/etc目录下创建varnish配置文件web.conf 其实这里配置文件的命名是可以随意的。只不过后面将配置文件与varnish服务关联起来的时候,文件名一定要对应
将模版的内容全部copy到web.conf文件内,然后作修改
修改1:
backend default {
    .host = "127.0.0.1";
    .port = "81";
    .probe = {
    .url = "/ping";
    .timeout = 1s;
    .interval = 10s;
    .window = 5;
    .threshold = 2;
    }
    .first_byte_timeout = 300s;   # How long to wait before we receive a first byte from our backend?
    .connect_timeout  = 5s;     # How long to wait for a backend connection?
    .between_bytes_timeout = 2s;     # How long to wait between bytes received from our backend?
}

backend web1 {
    .host = "127.0.0.1";
    .port = "81";
}

backend web2 {
    .host = "127.0.0.1";
    .port = "81";
}
前面的backend default{}、backend web1{}、backend web1{}是需要缓存的源站,命名可随意,也可增删,里面的参数也可根据实际需求修改,这里我修改如下:
backend ddostest1 {
    .host = "192.168.6.102"; #源站IP
    .port = "80";
    .first_byte_timeout     = 300s;   # How long to wait before we receive a first byte from our backend?
    .connect_timeout        = 5s;     # How long to wait for a backend connection?
    .between_bytes_timeout  = 2s;     # How long to wait between bytes received from our backend?
}
修改2:
import directors;
sub vcl_init {
    new cluster1 = directors.round_robin();
    cluster1.add_backend(web1);    # Backend web1 defined above
    cluster1.add_backend(web2);    # Backend web2 defined above
}
修改后:
import directors;
sub vcl_init {
    new test = directors.round_robin();
    test.add_backend(ddostest1);    # 这里是加速节点,与上面的ddostest1对应
}
当然这里也是可以new多个的,只要与源站对应即可
修改3:
在sub vcl_recv {}里
将set req.backend_hint = cluster1.backend();注释掉
将set req.http.Host = regsub(req.http.Host, ":[0-9]+", "");
修改为:
if (req.http.host ~ "(?i)^(www.)?ddostest.com$") {
set req.backend_hint = test.backend();
    }
这里用到正则表达式,大致意思是从客户端请求的域名,只要是以ddostest.com结尾的域名,都使用test这个节点响应,然后保存。

5. 将varnish服务与配置文件web.conf关联起来,并开机自启动:
在/etc/init.d/目录下新建varnish文件,并给予755权限,内容如下:
# chkconfig: 2345 10 90 
# description: varnish ....
#!/bin/sh

start()
{
        echo -n $"starting varnish..."
        /usr/local/varnish/sbin/varnishd -P /tmp/varnish.pid -a 0.0.0.0:80 -T 127.0.0.1:3500 -f /usr/local/varnish/etc/web.conf -n /var/varnish_cache -s malloc,1G -P client_http11=on
        echo
}

stop()
{
        echo -n $"stopping varnish..."
        pkill varnish
        echo
}

restart()
{
   stop
   sleep 2
   start
}

case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
*)
echo $"Usage: $0 {start|stop|restart}"
esac

之后还要创建缓存目录/var/varnish_cache
关闭防火墙,开机自启动varnish服务
[root@localhost var]# service iptables stop
iptables: Flushing firewall rules: [  OK  ]
iptables: Setting chains to policy ACCEPT: filter [  OK  ]
iptables: Unloading modules:                            [  OK  ]
[root@localhost var]# chkconfig
iptables        0:off   1:off   2:on    3:on    4:on    5:on    6:off
要将所有终端防火墙关闭
[root@localhost var]# chkconfig iptables --level 2345 off

将varnish加入chkconfig
[root@localhost var]# chkconfig --add varnish
[root@localhost var]# chkconfig
varnish         0:off   1:off   2:on    3:on    4:on    5:on    6:off
[root@localhost var]# chkconfig varnish --level 016 on
启动varnish服务
[root@localhost var]# service varnish start
starting varnish...

6. 测试
源站:192.168.6.102
加速节点:192.168.6.106
客户端:192.168.6.99
在客户端hosts文件里将www.ddostest.com域名与加速节点绑定
127.0.0.1       localhost
192.168.6.106   www.ddostest.com
直接访问源站:
 
ping站点域名www.ddostest.com
 
访问站点域名www.ddostest.com:
 

完毕!如有说错的内容,还请指教!

本文转载自:http://bbs.csdn.net/topics/391023832

j
粉丝 4
博文 172
码字总数 30033
作品 0
合肥
私信 提问
加载中

评论(2)

j
jims 博主

引用来自“阿cat”的评论

太乱了
未整理,请看原文地址
MGL_TECH
MGL_TECH
太乱了
varnish 4.0 官方文档翻译1-管理员文档

varnish 管理员文档 varnish缓存是web应用加速器,同时也作为http反向缓存代理被人熟知。你可以安装varnish在任何http的前端,同时配置它缓存内容。varnish真的很快,单个代理的分发速度可以...

wild-life
2015/05/09
267
0
SSH远程访问 : 开启Centos系统的SSH服务

无论是Centos6.4系统的虚拟电脑还是服务器,始终感觉直接在命令行中操作不方便;比如全选、复制、粘贴、翻页等等。比如服务器就需要在机房给服务器接上显示器、键盘才操作感觉更麻烦。所以就...

麦可叔叔
2017/11/03
26
0
最新的hyper-v 不支持最新的centos6.4?

我在hyper-v server 2012和windows 8里面的都安装了centos6.4,最新的centos64位版本,装完以后,发现都没有图形化界面,只有命令行,以前安装过程中都是可视化的过程,结果hyper-v里面却是很...

搁浅St
2013/04/17
1K
1
NFS+TFTP+DHCPD+PXE自动化运维(多系统)

# NFS+TFTP+DHCPD+PXE自动化运维(多系统)1.配置前准备 2.dhcpd服务配置 3. tftp服务配置3.1 tftp服务配置 3.2 tftp目录配置 3.3 修改/tftpboot/pxelinux.cfg/default文件,添加如下内容即可...

18616373425
2018/01/08
0
0
分布式文件系统MooseFS

MogileFS是一种分布式文件存储系统。可支持文件自动备份的功能,提高可用性和高扩展性。MogileFS不支持对一个文件内部的随机或顺序读写,因此只适合做一部分应用,如图片服务,静态HTML服务等...

duyunlong
2013/11/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

完美解决H5滚动滑动穿透方案:不使用系统滚动

网上有很多黑科技解决这个问题,都不是从根本去解决,例如通过js控制弹出时html加上position:fixed; 弹窗关闭后再去掉该样式,总觉得不太对,像是打补丁。 今天终于找到了滚动穿透的原因和完...

未来cc
34分钟前
5
0
Hibernate 4 升级到 5 后显示未知实体错误

提示的错误信息如下: org.hibernate.MappingException: Unknown entity: com.ossez.reoc.common.crm.DoNotCall at org.hibernate.metamodel.internal.MetamodelImpl.entityPersister(Met......

honeymoose
35分钟前
3
0
如何选择一个性能测试工具(LoadRunner和Locust的一次对比)

如何选择一个性能测试工具(LoadRunner和Locust的一次对比) LoadRunner LoadRunner,是一种预测系统行为和性能的负载测试工具。通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认...

测者陈磊
42分钟前
5
0
【1014】LNMP架构(一)

【1014】LNMP架构(一) 一、LNMP架构介绍 在LAMP架构中,MySQL/Mariabd:一个关系型数据库,用来存储数据(用户名、密码、文章内容)。静态的,例如图片或者html,nginx会直接处理,从而加快...

飞翔的竹蜻蜓
43分钟前
4
0
Linux常用命令 access denied(权限不足)

赋予文件权限 access denied (1) chmod 777+文件名 万能的解决权限问题的方法(2) chmod –R 777 * 参数-R : 对目前目录下的所有档案与子目录进行相同的权限变更(即以递回的方式逐个变...

最菜最菜之小菜鸟
54分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部