一、前言
由于现在所在公司并没有现成的静态文件服务器,但是在做项目的时候碰到需要频繁上传并修改图片的地方,为了减少不必要的麻烦所以需要一个静态文件服务器来解决问题。
本来是准备搭建一个文件服务器采用FastDFS等类似的文件系统来搭建,但是文件系统搭建起来并没有经验而且还比较耗时间去尝试,一旦文件出了问题并不一定能够修复,综上公司大佬提出rsync+inotifiy方案:实时监控文件系统中莫个文件夹中文件的变化然后将改变的文件同步到一台可以通过公网访问的服务器上面,让普通用户可以访问。
如图1所示:服务器1主要负责后台管理服务但是并不能从公网直接访问,而服务器2可以通过公网访问,所以当后台管理人员上传文件到服务器1上面某个指定文件夹内,然后通过同步复制到服务器2上面让普通用户可以直接通过公网来访问静态资源解决了没有静态资源服务器的问题。
图1 网络拓扑图
二、安装环境
服务器:
同步目录:
三、安装
(下面操作均是在centos6.X上进行的操作)
service1 目标端安装如下:
安装rsync服务
修改rsync的配置文件
centos是由xinetd来管理rsync服务,所以需要设置服务开机自启动和启动服务。
设置开机自启动
启动服务:
新建同步过程中的配置文件:vi /etc/rsyncd.conf
这里好像注释不管用所以要把所有的注释拿掉
配置同步用户的密码文件:
分别设置刚刚新建的文件的权限(权限一定要修改)
接下来设置另外一台服务器service2数据源安装配置:
同样是首先安装rsync服务和修改rsync的配置文件/etc/xinetd.d/rsync步骤与操作与上一样。
然后新建密码文件
(名字好像不能叫passwd.*之类的每次设置后保存时都会卡住)
保存后修改文件权限为600
接下来手动实行同步
目标端service1此时情况
在数据源端service2执行如下命令
首先创建一个1.txt文件,然后执行同步命令
命令中rsync@service1::my_rsync部分,rsync表示的是同步的用户,service1代表目标端地址,my_rsync代表目标端同步的模块名称
执行完命令后在目标端可以查看到1.txt被同步过去则表示同步成功。
有关rsync同步命令可以参考网上很多的文章。
要想实现自动同步还需要安装Inotify-tools触发实时同步。
直接通过命令行:yum install inotify-tools进行安装或者下载文件自己进行编译安装也可以。
下面进行自己安装(公司的yum源好像是网易的并不能直接通过yum命令进行安装)
编译安装前准备
安装gcc
下载inotify-tools源码
解压:
进入解压后的文件进行编译安装
安装结束后配置inotify-tools
vi /etc/sysctl.conf 最后面添加
sysctl -p使修改的配置生效
最后新建一个脚本文件vi rsync.sh
最后执行如下命令
使其可以在终端关闭后能够继续运行实现自动同步。
领取专属 10元无门槛券
私享最新 技术干货