热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Linux系统安装配置Varnish详细教程

目前varnish的最新版本为3.0.2,这里我们使用最新的稳定版本cd/usr/local/softwgethttp://repo.varnish-cache.org/source/varnish-3.0.2.tar.gztarzxvfvarnish-3.0.2.tar.gzcdvarnish-3.0.2./conf

目前varnish的最新版本为3.0.2,这里我们使用最新的稳定版本


cd /usr/local/soft
wget http://repo.varnish-cache.org/source/varnish-3.0.2.tar.gz
tar zxvf varnish-3.0.2.tar.gz
cd varnish-3.0.2
./configure --prefix=/usr/local/varnish
make && make install

如果在执行./configure命令的过程中遇到"No package 'libpcre' found"的错误提示信息的话,需要执行以下命令



export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig


即可(这个已经在前面配置nginx环境的时候,安装过了pcre库了,这里是环境变量的问题).

现在我们确认一下是否安装成功.

[root@bogon varnish-3.0.2]# ls /usr/local/varnish
bin etc include lib sbin share var

其中sbin目录里为varnish主程序文件,bin目录里为varnish的管理命令,etc目录为配置文件,share目录为手册,lib目录为一些库文件,include目录为一些程序所需的c语言里的.h头文件

varnish语法


[root@bogon varnish-3.0.2]#cd /usr/local/varnish/sbin
[root@bogon sbin]# ./varnishd --help
./varnishd: invalid option -- '-'
usage: varnishd [options]
    -a address:port              # HTTP listen address and port
    -b address:port              # backend address and port
                                 #    -b 
                                 #    -b ':'
    -C                           # print VCL code compiled to C language
    -d                           # debug
    -f file                      # VCL script
    -F                           # Run in foreground
    -h kind[,hashoptions]        # Hash specification
                                 #   -h critbit [default]
                                 #   -h simple_list
                                 #   -h classic
                                 #   -h classic,
    -i identity                  # Identity of varnish instance
    -l shl,free,fill             # Size of shared memory file
                                 #   shl: space for SHL records [80m]
                                 #   free: space for other allocations [1m]
                                 #   fill: prefill new file [+]
    -M address:port              # Reverse CLI destination.
    -n dir                       # varnishd working directory
    -P file                      # PID file
    -p param=value               # set parameter
    -s kind[,storageoptions]     # Backend storage specification
                                 #   -s malloc
                                 #   -s file  [default: use /tmp]
                                 #   -s file,
                                 #   -s file,,
                                 #   -s persist{experimenta}
                                 #   -s file,,,
    -t                           # Default TTL
    -S secret-file               # Secret file for CLI authentication
    -T address:port              # Telnet listen address and port
    -V                           # version
    -w int[,int[,int]]           # Number of worker threads
                                 #   -w 
                                 #   -w min,max
                                 #   -w min,max,timeout [default: -w2,500,300]
    -u user                      # Priviledge separation user id

参数详解:


-u 以什么用户运行

-g 用户组

-f varnish配置文件

-a 绑定ip和端口(前端监听端口,用户请求时,与参数-b指定的Backend机器通讯)

-b 后端监听端口(为了安全,这里一般为局域网的机器ip段)

-n 指定一个实例名

-T varnish管理端口,主要用来清除缓存

-s varnish缓存文件位置及大小(size默认的单位是bytes,可用的有K,M,G,T.默认没有限制)



运行varnish


mkdir /var/vcache
chown -R www:www /var/vcache
./varnishd -a 0.0.0.0:80 -b 127.0.0.1:81 -s malloc,1G -w2,500,300 -u www -g www -T 127.0.0.1:2000

注意:用户www:www我们上面在配置nginx的时候已经创建过了.
-a 这一句的意思是制定 varnish 监听所有 IP 发给 8080 端口的 http 请求,如果在生产环境下,您应该让varnish监听80,这也是默认的。
-b 表示监听本机的81端口(表示后面的nginx,不指定这个参数的话,需要修改配置文件default.vcl并,全同时使用-f 指定配置文件,一般为内网的机器ip地址,这样比较的安全)
?s 选项用来确定 varnish 使用的存储类型和存储容量,我使用的是 malloc 类型(malloc 是一个 C 函数,用于分配内存空间),  1G  定义多少内存被 malloced,1G = 1gigabyte。也可以使用文件形式存储,我在下面的vmware里用file的时候,会提示以下信息


WARNING: (-sfile) file size reduced to 4844968345 (80% of available disk space)
NB: Storage size limited to 2GB on 32 bit architecture,
NB: otherwise we could run out of address space.)

-T 127.0.0.1:2000 Varnish有一个基于文本的管理接口,启动它的话可以在不停止 varnish 的情况下来管理 varnish。您可以指定管理软件监听哪个接口。当然您不能让全世界的人都能访问您的varnish管理接口,因为他们可以很轻松的通过访问 varnish管理接口来获得您的root访问权限。我推荐只让它监听本机端口。如果您的系统里有您不完全信任的用户,您可以通过防火墙规则来限制他访问varnish 的管理端口。

配置开机自动启动Varnish


vi /etc/rc.local



在末尾增加以下内容:


ulimit -SHn 51200

/usr/local/varnish/sbin/varnishd -f /usr/local/varnish/vcl.conf -a
0.0.0.0:80 -s file,/var/vcache/varnish_cache.data,1G -g www -u www
-w 30000,51200,10 -T 127.0.0.1:3500

/usr/local/varnish/bin/varnishncsa -n /var/vcache -w
/var/log/varnish.log &



日志目录/var/vcache对于www:www用户要有操作权限.

如果没有指定-f参数,则使用varnish的默认配置文件/usr/local/varnish/etc/varnish/default.vcl

发现在给varnishd命令指定-n /var/vcache参数后,用varnishlog命令检测的时候,无法检查任何信息的.怀疑这里有问题.

检查varnish是否正常

这时我们可以通过浏览器里输入http://192.168.0.71,如果可能看到"Welcome to nginx!"字样则表示成功(视每个人的环境而定,只要保证和81端口看到的信息一样就可以了).来查看是否可以正常访问网站.

这里我用curl来检查文件头



[root@bogon lib]# curl -I http://192.168.0.71/
HTTP/1.1 200 OK
Server: nginx/1.1.1
Content-Type: text/html
Last-Modified: Thu, 29 Sep 2011 16:35:43 GMT
Content-Length: 151
Accept-Ranges: bytes
Date: Fri, 18 Nov 2011 03:31:23 GMT
X-Varnish: 942185170 942185168
Age: 10
Via: 1.1 varnish
Connection: keep-alive

可以看到红色的字,表示从varnish里读取了.

使用 varnish 后,web 应用程序是否加速,取决于一些原因。如果您的程序的每个会都使用COOKIEs或者您每个程序都需要三次握手认证,这样varnish就不能缓存更多的数据我们暂时忽略这个问题,等到“提高缓存命中率”这节的时候我们再继续讨论这个问题。想要知道varnish对您的网站做了什么,请查看 logs。

停止varnish

#pkill varnishd

注意:

Varnish与Squid不同,varnish默认会缓存所有的文件,包括动态的php程序文件,而squid默认只会缓存一些静态文件,动态的文件不会缓存的.


推荐阅读
  • 在1995年,Simon Plouffe 发现了一种特殊的求和方法来表示某些常数。两年后,Bailey 和 Borwein 在他们的论文中发表了这一发现,这种方法被命名为 Bailey-Borwein-Plouffe (BBP) 公式。该问题要求计算圆周率 π 的第 n 个十六进制数字。 ... [详细]
  • 2023年,Android开发前景如何?25岁还能转行吗?
    近期,关于Android开发行业的讨论在多个平台上热度不减,许多人担忧其未来发展。本文将探讨当前Android开发市场的现状、薪资水平及职业选择建议。 ... [详细]
  • 本文介绍了SIP(Session Initiation Protocol,会话发起协议)的基本概念、功能、消息格式及其实现机制。SIP是一种在IP网络上用于建立、管理和终止多媒体通信会话的应用层协议。 ... [详细]
  • 二维码的实现与应用
    本文介绍了二维码的基本概念、分类及其优缺点,并详细描述了如何使用Java编程语言结合第三方库(如ZXing和qrcode.jar)来实现二维码的生成与解析。 ... [详细]
  • 问题描述现在,不管开发一个多大的系统(至少我现在的部门是这样的),都会带一个日志功能;在实际开发过程中 ... [详细]
  • CRZ.im:一款极简的网址缩短服务及其安装指南
    本文介绍了一款名为CRZ.im的极简网址缩短服务,该服务采用PHP和SQLite开发,体积小巧,约10KB。本文还提供了详细的安装步骤,包括环境配置、域名解析及Nginx伪静态设置。 ... [详细]
  • 我的读书清单(持续更新)201705311.《一千零一夜》2006(四五年级)2.《中华上下五千年》2008(初一)3.《鲁滨孙漂流记》2008(初二)4.《钢铁是怎样炼成的》20 ... [详细]
  • 从CodeIgniter中提取图像处理组件
    本指南旨在帮助开发者在未使用CodeIgniter框架的情况下,如何独立使用其强大的图像处理功能,包括图像尺寸调整、创建缩略图、裁剪、旋转及添加水印等。 ... [详细]
  • Windows操作系统提供了Encrypting File System (EFS)作为内置的数据加密工具,特别适用于对NTFS分区上的文件和文件夹进行加密处理。本文将详细介绍如何使用EFS加密文件夹,以及加密过程中的注意事项。 ... [详细]
  • 本文探讨了在一个物理隔离的环境中构建数据交换平台所面临的挑战,包括但不限于数据加密、传输监控及确保文件交换的安全性和可靠性。同时,作者结合自身项目经验,分享了项目规划、实施过程中的关键决策及其背后的思考。 ... [详细]
  • 深入理解:AJAX学习指南
    本文详细探讨了AJAX的基本概念、工作原理及其在现代Web开发中的应用,旨在为初学者提供全面的学习资料。 ... [详细]
  • 新浪微博热搜暂停更新;即刻APP回归;Android 11 Beta版发布 | 科技新闻速递
    为您带来最新的科技资讯,涵盖社交媒体动态、软件更新及行业重大事件。CSDN携手您共同关注科技前沿。 ... [详细]
  • 本文将详细探讨PHP中C的作用,并对比其他编程语言如Java和C的特点及其适用场景。 ... [详细]
  • C语言是计算机科学和编程领域的基石,许多初学者在学习过程中会感到困惑。本文将详细介绍C语言的基本概念、关键语法和实用示例,帮助你快速上手C语言。 ... [详细]
  • 本文旨在探讨信息安全专业的职业规划路径,结合个人经历和专家建议,为即将毕业的学生提供实用的指导。 ... [详细]
author-avatar
权志龙qzl818_734
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有