在CentOS/RHEL 6.x上安装并配置Varnish缓存服务器

时间:2019-08-20 17:58:15  来源:igfitidea点击:

Varnish是一个著名的web加速器,它通过web缓存技术加快服务器的速度。
Varnish下载地址 http://repo.varnish-cache.org/redhat/
我们将使用rpm包在CentOS 7/RHEL 7上安装Varnish 4。

系统环境

  • 操作系统:CentOS release 6.4 (Final)
  • 架构 : x86_64
  • IP地址: 192.168.1.22
  • Web服务器: Apache version 2.2.15-29

下载rpm包

wget http://repo.varnish-cache.org/redhat/varnish-3.0/el6/noarch/varnish-release-3.0-1.el6.noarch.rpm

使用yum命令安装varnish

yum install varnish

备份default.vcl文件

cp -p /etc/varnish/default.vcl /etc/varnish/default.vcl.orig

检查服务状态

默认varnish的运行端口是6021。

使用netstat命令检查它正在运行的端口号:

/etc/init.d/varnish start
[root@varnish ~]# netstat -tanp|grep varnish
tcp        0      0 0.0.0.0:6081                0.0.0.0:*                   LISTEN      1640/varnishd       
tcp        0      0 127.0.0.1:6082              0.0.0.0:*                   LISTEN      1639/varnishd       
tcp        0      0 :::6081                     :::*                        LISTEN      1640/varnishd       
[root@varnish ~]#

更改端口号

因为默认情况下web服务器运行在端口号80,所以我们将更改此端口号,以便varnish可以缓存web应用程序。
我们将在80端口上运行Varnish。

vi /etc/sysconfig/varnish

VARNISH_LISTEN_PORT=80

因为varnish和apache的同一个服务器上,所以IP地址直接使用127.0.0.1。
端口8080是apache修改后使用的监听端口。

vi /etc/varnish/default.vcl

backend default {
.host = "127.0.0.1";
.port = "8080";
}

将apache的端口号改为8080端口。

apache中的虚拟主机有两种,分为基于名称和基于IP。
根据需求配置web服务器。

下面我们将使用基于IP的虚拟主机。

备份httpd.conf文件

cp -p /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.orig

将apache的80号监听端口改为8080。

vi /etc/httpd/conf/httpd.conf

Listen *:8080

现在配置我们的第一个虚拟主机

在/etc/httpd/conf/httpd.conf最后一行后添加以下内容

vi /etc/httpd/conf/httpd.conf

<VirtualHost *:8080>
  ServerAdmin [email protected]
  DocumentRoot /var/www/html/
  ErrorLog logs/sample-error.log
  CustomLog logs/sampleaccess_log common
</VirtualHost>

创建一个index.html文件用于测试

echo "hello" >> /var/www/html/index.html

现在重启Varnish和apache

/etc/init.d/varnish restart ;/etc/init.d/httpd restart;/etc/init.d/varnish restart

测试

在web浏览器输入服务器ip地址

http://192.168.1.22

或者使用下面命令检查

Hyman@theitroad:/tmp$ curl -I http://192.168.1.22
HTTP/1.1 200 OK
Server: Apache/2.2.15 (CentOS)
Last-Modified: Wed, 25 Sep 2013 15:59:46 GMT
ETag: "24d18-20-4e73757a7d276"
Content-Type: text/html; charset=UTF-8
Content-Length: 32
Accept-Ranges: bytes
Date: Wed, 25 Sep 2013 16:05:24 GMT
X-Varnish: 1980745874 1980745871
Age: 4
Via: 1.1 varnish
Connection: keep-alive

Hyman@theitroad:/tmp$

注意Age的变化。如果一直是0,表示Varnish没有缓存,这时需要检查所有的配置

启用Varnish日志记录

完成以上配置后,我们可能会注意到Varnish没有进行日志记录。

[root@varnish log]# ls -l /var/log/varnish/
total 0
[root@varnish log]#

要启用Varnish日志,需启动服务 varnishlogvarnishncsa

正在启动Varnish日志服务

[root@varnish log]# /etc/init.d/varnishlog start
Starting varnish logging daemon:                           [  OK  ]
[root@varnish log]# ls -l /var/log/varnish/
total 4
-rw-r--r-- 1 root root 168 Sep 25 21:40 varnish.log
[root@varnish log]#

启动VarnishNCSA服务

[root@varnish log]# /etc/init.d/varnishncsa start
Starting varnish ncsa logging daemon:                      [  OK  ]
[root@varnish log]# ls -l /var/log/varnish/
total 4
-rw-r--r-- 1 root root 1008 Sep 25 21:41 varnish.log
-rw-r--r-- 1 root root    0 Sep 25 21:41 varnishncsa.log
[root@varnish log]#