基于rsync和inotify实现web网站文件的同步,并基于IPTABLES做用户限制

一、拓扑图与简单说明

说明:

1.假设我们在申请了一个外网地址10.238.203.24-25/32,我们的内网服务器的地址为172.16.130.0/24网段;

2.我们要开放web和DNS供外网用户访问,其他的服务都禁止访问;

3.我们的域名为,其中互联网用户解析到的为10.238.203.24,内网用户解析到的地址为192.168.1.200,或者是192.168.1.201,DNS为外网用户为10.238.203.24,内网用户使用的为192.168.1.201

二、搭建APACHE,PHP,MYSQL

关于搭建APACHE,PHP,MYSQL的详细步骤,请移步本人相关博客,博客地址为

三、基于rsync+inotify实现文件实时同步

由于需要基于inotify的机制实现文件实时同步,那么我们需要将前面的两台web作为服务器端,后台php作为客户端

1.配置web的rsync服务

①、由于rsync由超级守护进程,所有必须要先安装xinetd超级守护进程,本处通过yum的方式安装

[root@httpweb2 ~]# yum install -y xinetd

②、配置rsync的配置文件

#global settings#配置全局段uid = nobody#运行程序的用户uidgid = nobody#运行程序的用户giduse chroot = no#是否将用户禁锢在家目录max connections = 5#最大的连接数strict modes = yes#是否完全检查pid file = /var/run/rsyncd.pid#程序的pid文件log file = /var/log/rsyncd.log#程序的log日志文件#directory to be synced#配置用户段[webserver]#共享模块的名称path = /www/html/wangfeng7399#共享模块的位置ignore errors = yes#是否忽略I/O错误read only = no#是否允许用户只读write only = no#是否允许用户只写host allow = 192.168.1.0/24#允许访问的ip地址host deny = *#允许访问的ip地址list = false#是否列出列表uid = root#传递数据的用户gid = root#传递数据的用户组auth user = webuser#允许访问的用户secrets file = /etc/rsync.passwd#用户密码的存放位置

③、生成用户的密码文件/etc/rsync.passwd

webuser:wangfeng7399

为了安全起见,请将/etc/rsync.passwd的权限设置成600

④、配置服务能够开机自动启动

[root@httpweb2 ~]# chkconfig rsync on[root@httpweb2 ~]# chkconfig xinetd on

⑤、将另外一台服务器也配置成如上所示

⑥、测试看是否能将数据上传到服务器上

我们可以看到在1.200上的共享目录中有了文件

2.搭建inotify服务器

①、可以配置epel源,进行yum安装,也可以在ftp://mirrors.yun-idc.com/epel/6/x86_64/inotify-tools-3.14-1.el6.x86_64.rpm下载使用

[root@php ~]# rpm -ivh inotify-tools-3.14-1.el6.x86_64.rpm

②写脚本实现对/www/html/wangfeng7399/文件夹进行监控,如文本修改,文件删除,新增等

#!/bin/bashsrc=/www/html/wangfeng7399/inotifywait -mr -e create,delete,modify,attrib $src \|while read files;dorsync -ar –delete $src webuser@192.168.1.200::webserver –password-file=/etc/user.passwdrsync -ar –delete $src webuser@192.168.1.201::webserver –password-file=/etc/user.passwddone~

③、启动inotify

nohup ./inotfiy.sh &

④、创建/etc/user.passwd文件

wangfeng7399

并将权限改为600

⑤、测试,本处不在给出测试结果

四、结合php和mysql做内网测试

五、做DNS解析

①、安装DNS,本处DNS使用的yum的安装方式

[root@httpweb2 named]# yum install bind -y

②、修改DNS的主配置文件

options {directory”/var/named”;rrset-order { order random; };};view inuser{ match-clients { 192.168.1.0/24; }; zone “.” IN {type hint;file “named.ca”;}; zone “wangfeng7399.com.” IN {type master;file “wangfeng7399.com.inuser”;};};view any{ match-clients { any; }; zone “.” IN {type hint;file “named.ca”;}; zone “wangfeng7399.com.” IN {type master;file “wangfeng7399.com.outuser”;};};

③、修改区域文件。

wangfeng7399.com.inuser

$TTL 600@IN SOA dns.wangfeng7399.com. admin.wangfeng7399.com.(20140329011H5M5D1D)@INNSdnsdnsINA192.168.1.109wwwINA192.168.1.109wwwINA192.168.1.200~

wangfeng7399.com.outuser

$TTL 600@IN SOA dns.wangfeng7399.com. admin.wangfeng7399.com.(20140329011H5M5D1D)@INNSdnsdnsINA10.238.203.24wwwINA10.238.203.24wwwINA10.238.203.25~~

④、内网测试

我们可以看到这两个的首解析记录不相同

基于域名访问

六、基于防火墙创建规则

①、为了服务器的安全,我们应该将所有的规则都设置为DROP

②、为了能让服务器做转发,我们应该开启forward功能,修改/etc/sysctl.conf

net.ipv4.ip_forward = 1

回首往事,日子里竟全是斑澜的光影,

基于rsync和inotify实现web网站文件的同步,并基于IPTABLES做用户限制

相关文章:

你感兴趣的文章:

标签云: