linux下检查rsync是否安装命令:
rpm -qa|grep rsync
飘易使用的环境是Centos 6.5 64位,web环境是LNMPA1.2一键包,默认已安装rsync,版本是 rsync-3.0.6-9.el6_4.1.x86_64。
前提,飘易使用rsync同步数据的目的是用于负载均衡,搭建多台ECS服务器的时候使用,需要注意的地方是:需要把程序文件和数据库、静态资源分离,数据库采用阿里云的RDS,资源文件采用阿里云的对象存储OSS(存放图片、附件等),这样存放程序的服务器就可以横向扩展。
【同步主服务器】:
1、创建2个文件,分别为:
rsync配置文件:/etc/rsyncd.conf 内容为:
#location: /etc/rsyncd.conf pid file = /var/run/rsyncd.pid port = 873 #服务端口,默认873 #address = 0.0.0.0 #监控的ip地址 uid = root gid = root use chroot = yes read only = yes #日志 #transfer logging = yes #log file = /var/log/rsync.log list = yes ignore errors auth users = tb secrets file = /etc/rsyncd.secrets #同步目录 [wwwroot] path = /home/wwwroot #排除-相对路径,多个空格隔开 #exclude = default/ [apache] path = /usr/local/apache/conf/vhost [nginx] path = /usr/local/nginx/conf/vhost
密码文件:/etc/rsyncd.secrets 内容为:
tb:tbpassword
格式为用户名:密码。
2、设置权限600
chmod 600 /etc/rsyncd.secrets #主服务端
3、操作命令
启动命令:
/usr/bin/rsync --daemon --config=/etc/rsyncd.conf
加入开机启动:
echo "/usr/bin/rsync --daemon --config=/etc/rsyncd.conf" >>/etc/rc.local
查看端口是否运行[rsync端口873]:
netstat -nltp | grep 873
杀死运行着的rsync,先查找,再kill:
ps -ef | grep rsync | grep -v grep kill 进程id号
或者直接杀死全部rsync进程:
killall rsync
【同步从服务器】:
1、创建密码文件 /etc/rsync.passwd 文件内容为主服务器里的 /etc/rsyncd.secrets 的对应密码:
tbpassword
2、设置权限600
chmod 600 /etc/rsync.passwd #从服务器
3、操作命令
手动同步命令(-v显示详细信息):
rsync -azp --delete --password-file=/etc/rsync.passwd tb@10.25.9.100::wwwroot /home/wwwroot
其中tb为同步的用户名,10.25.9.100为主服务器的内网IP(不走公网),wwwroot为主服务器里 /etc/rsyncd.conf 配置的对应的区块名称,最后的 /home/wwwroot 为要同步的从服务器上的物理路径。
[可选]通过crontab定期执行任务,实现数据定期同步(每小时)。
crontab -e 0 * * * * rsync -azp --delete --password-file=/etc/rsync.passwd tb@10.25.9.100::wwwroot /home/wwwroot &>>/var/log/rsync.log
开机启动时自动从源服务器下载文件:
开机启动:/etc/rc.local 文件最后加入以下命令:
rsync -azp --delete --password-file=/etc/rsync.passwd tb@10.25.9.100::wwwroot /home/wwwroot
或写日志方式:
rsync -azvp --delete --password-file=/etc/rsync.passwd tb@10.25.9.100::wwwroot /home/wwwroot &>>/var/log/rsync.log
说明:/etc/rc.local 系统默认软连接指向:/etc/rc.d/rc.local
LNMPA多主机头:
apache虚拟主机配置文件路径:/usr/local/apache/conf/vhost/
nginx虚拟主机配置文件路径:/usr/local/nginx/conf/vhost/
同步apache配置文件:
rsync -azp --delete --password-file=/etc/rsync.passwd tb@10.25.9.100::apache /usr/local/apache/conf/vhost
同步nginx配置文件:
rsync -azp --delete --password-file=/etc/rsync.passwd tb@10.25.9.100::nginx /usr/local/nginx/conf/vhost
如果配置文件有修改,最后需要重启lnmp:
lnmp restart
制作从服务器的自定义镜像注意点:
开机启动文件 /etc/rc.local 里:rsync不启用服务器--daemon模式, 而启用从服务器同步方式;
【其他注意说明】:
1、RDS数据库的白名单要加入新ECS的内网IP(从服务器);
2、Laravel框架需要开启的PHP函数: exec(),proc_open(),proc_get_status()
3、Laravel框架的storage目录需要777权限:
chmod -R 777 /home/wwwroot/www.xxx.cn/storage/
4、如有计划任务,只需要在主服务器上执行,避免重复执行!