rsync主动同步代码

2年前用的一个方法,原因是crontab去定时同步代码,如果服务器之间连接稍有故障,负载就会飙升。

方案:
1.拿一台机器当中转机
2.需要同步代码的前端机器都搭建rsync服务端
3.同步代码到中转机,然后执行一个shell脚本,代码同步到前端机

rsync的服务端即前端机建立一个/etc/rsyncd.conf文件,内容:

uid = root
gid = root
use chroot = no
max connections = 4
strict modes =yes
port = 873
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
log file = /var/log/rsyncd.log

[app]
path = /www/404xs.com/app.404xs.com/
comment = app.404xs.com
ignore errors
read only = no
list = yes
secrets file = /etc/rsync.pas
hosts allow = 10.0.0.100
hosts deny = 0.0.0.0/0

[www]
path = /www/404xs.com/www.404xs.com/
comment = www.404xs.com
ignore errors
read only = no
list = yes
secrets file = /etc/rsync.pas
hosts allow = 10.0.0.100
hosts deny = 0.0.0.0/0

新建一个/etc/rsync.pas文件,内容为“用户名:密码”

404xs:404xsrsync

可以看到,我的其中一台前端需要提供app和www这两个二级域名的服务
启动前端机的rsync服务/usr/bin/rsync –daemon –config=/etc/rsyncd.conf 可以把这句写进/etc/rc.local

然后在工作机上建立与前端机相同的rsync.pas文件
在来个同步脚本sync_app

find /www/404xs.com/app.404xs.com/ -name ".svn"|xargs rm -r
/usr/bin/rsync -vzrtopg --delete --progress --password-file=/etc/rsync.pas --exclude-from=/www/404xs.com/app.404xs.com/exclude.txt /www/404xs.com/app.404xs.com/ xs8@10.0.0.11::app
/usr/bin/rsync -vzrtopg --delete --progress --password-file=/etc/rsync.pas --exclude-from=/www/404xs.com/app.404xs.com/exclude.txt /www/404xs.com/app.404xs.com/ xs8@10.0.0.12::app

给予执行权限chmod +x /opt/sbin/sync_app

你可以看到我排除了一些文件不进行同步,这个exclude文件内容如下

exclude.txt
application/cache
application/logs

从需要同步的目录算起,下面哪些不需要同步,写上就行,一行一个文件或者目录

这样,当我更改代码以后,先上传到我的工作机,然后执行/opt/sbin/sync_app就会将代码发布到所有前端提供服务的机器上了

Comment (1)

  1. Pingback: 网站架构的初思 | HHT原创小站

Leave a Comment

电子邮件地址不会被公开。 必填项已用*标注