前言
<> 非常感谢Kason老师,您是我们成功的蜡烛,燃烧着自己,照亮我们前进的道路。
varnish配置动静分离时,这些问题困扰了两周:
- 环境:varnish做为反代,你们都知道的:varnish,Nginx,haproxy都可以做为反代服务器,varnish比较擅长缓存。后端主机一个提供动态资源及变化的资源(PHP,css,js),一个提供静态资源(images)
- 每次访问varnish的6081端口,PHPinfo.PHP和PHP-MysqL.PHP都可以正常访问,肯定没有问题,但访问wodpress时,要么是NOT FOUND要么是直接将目录索引显示出来。
> 总结:
> 对中小型站点的整个架构没有一个完整、清晰的认识。
> 我只是将老师的配置粘贴进去,从不去想真正的含义。
> * 学到puppet时,越觉得前面的东西是多么重要,了解一个个架构,才能更好的驾驶运维工具本身。
站点架构
- 在接入层将动静分离,一般varnish不会做动静分离
- varnish接收到图片和js,css文件后,将其反代到不同的主机。图片至分布式文件系统,js,css文件反代至业务层。
- 所以如果在varnish动静分离,首先要确保各个资源都代理至正确的主机,而后将所有的资源全部代理至动态服务器。
环境
配置前提
所有节点时间同步。
关闭防火墙、SELinux。
yum源:EPEL、Base。
- ~]# ntpdate 0.centos.pool.ntp.org
- ~]# iptables -F
- ~]# setenforce 0
配置静态服务器
安装程序包
- ~]# yum -y install httpd
启动服务
- ~]# systemctl start httpd.service
测试访问
- http://172.16.0.68/
- Testing 123..
配置动态服务器
安装程序包
启动httpd服务
- ~]# systemctl start httpd.service
测试访问httpd服务
- http://172.16.0.69/
- Testing 123..
配置mariadb-server
- ~]# vim /etc/my.cnf.d/server.cnf
- [MysqLd]
- skip_name_resolve = ON
- innodb_file_per_table = ON
启动mariadb服务
- ~]# systemctl start mariadb.service
- ~]# netstat -tnl
- Active Internet connections (only servers)
- Proto Recv-Q Send-Q Local Address Foreign Address State
- tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN
- tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
- tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN
- tcp6 0 0 :::80 :::* LISTEN
- tcp6 0 0 :::22 :::* LISTEN
- tcp6 0 0 ::1:25 :::* LISTEN
授权用户,供wordpress使用
测试连接MysqL
- ~]# MysqL -uwpuser -pwppass -h172.16.0.69
提供开源PHP资源
- ~]# cp wordpress-4.9.1-zh_CN.tar.gz /var/www/html/
展开PHP程序,为其链接
- ~]# tar xf wordpress-4.9.1-zh_CN.tar.gz
- ~]# ln -sv wordpress wp
- ~]# ll
- total 9912
- -rw-------. 1 root root 1637 Dec 6 02:45 anaconda-ks.cfg
- -rw-r--r--. 1 root root 1556 Jan 14 14:58 genaral_test.sh
- drwxr-xr-x. 1 nobody nfsnobody 498 Nov 30 20:20 wordpress
- -rw-r--r--. 1 root root 10130710 Dec 1 18:57 wordpress-4.9.1-zh_CN.tar.gz
- lrwxrwxrwx. 1 root root 9 Jan 14 15:41 wp -> wordpress
- -rw-r--r--. 1 root root 832 Jan 14 14:58 yum.sh
提供连接mariadb-server的配置
提供测试页面
web测试页面
- ~]# cat /var/www/html/index.html
- <h1>172.16.0.69</h1>
PHP环境测试
PHP-MysqL测试页面
测试连接
给静态服务器一份PHP程序
- ~]# scp -r /var/www/html/{wordpress,wp} 172.16.0.68:/var/www/html
配置varnish缓存服务器
安装varnish
- ~]# yum -y install varnish
配置varnish
- ~]# vim /etc/varnish/varnish.params
- ‘VARNISH_LISTEN_PORT=80
- VARNISH_STORAGE="file,/data/varnish/cache,1g"
- ~]# vim /etc/varnish/default.vcl
- backend default {
- .host = "172.16.0.68";
- .port = "80";
- }
- backend appsrv {
- .host = "172.16.0.69";
- .port = "80";
- }
- sub vcl_recv {
- if (req.url ~ "(?i)\.(PHP|jsp|do)$") {
- set req.backend_hint = appsrv;
- }
- if (req.url ~ "(?i)\.(css|js)$") {
- set req.backend_hint = appsrv;
- }
- if (req.url ~ "(?i)\.(jpg|jpeg|png|gif)$") {
- set req.backend_hint = default;
- } else {
- set req.backend_hint = appsrv;
- }
- }
准备目录
- ~]# install -d -v -o varnish -g varnish /data/varnish/cache
启动varnish
- ~]# systemctl start varnish.service
- ~]# netstat -tnl
- Active Internet connections (only servers)
- Proto Recv-Q Send-Q Local Address Foreign Address State
- tcp 0 0 127.0.0.1:6082 0.0.0.0:* LISTEN
- tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN