用svn和Rsync和php做本地开发环境、测试服务器、远程服务器同步和更新

Svn 和 rsync 架构的版本控制和自动更新测试服务器

1、服务器搭建结构





     12
Click Here To EnLarge  













 

2、工作流程原理 

1)本地开发环境都保持和svn版本控制服务器一致的文本拷贝

2)当本地更新或者新增数据的时候,提交到svn服务器

3)本地WEB测试服务器的目录也通过svn服务器更新最新的文本拷贝,通过使用 svn--hooks脚本 ,当svn服务器有遇到客户端commit更新的时候自动更新本地wen测试服务器的工作目录。

svn--hooks脚本说明:

打开svn的服务器端目录 /home/svnroot/repository/web/hooks

 

1、准备工作 cp post-commit.tmpl post-commit ; chmod a+x post-commit;确定相应目录的可写权限;

确认svn认证模式等相关信息。

2、首先确定post-commit文件是否被调用,可以在post-commit其中加入 sleep 10 这样的语句,

如果客户端提交之后等了一段时间,几乎可以肯定执行了这个文件,或者用写日志等方法。

3、post-commit能执行后基本问题都是权限问题,环境变量问题

把需要处理的目录都改成 rw 的,脚本中要写入用户名和密码。

然后就是写shell脚本

#!/bin/sh

cd /www/admin              先进去测试服务器web目录

SVN=/usr/local/bin/svn        定义svn所在路径

WEB=/www/admin           定义变量

export LANG=en_US.UTF-8    输出环境变量

$SVN update $WEB --username xxx --password xxx   相当于在工作目录运行svn up



本例需要输出环境变量en_US.UTF-8,否则如果有中文文件会无法顺利执行。

4)当在本地服务器测试OK后,用rsync上传到远程WEB服务器。

Rsync使用的命令行下运行,为了方便,通过php调用rsync命令,在web端就可以做rsync的上传工作。 



3、利用rsync自动更新测试服务器数据到对外应用服务器

Rsync -avzuCP --exclude-from=/www/adm_send.conf /www/admin/ username@xxx.xxx.xxx.xxx::test  --progress --password-file=/www/passwd

--exclude-from 表示要排除上传哪些文件或者那些后缀的文件,直接写在/www/adm_send.conf里面,用回车隔开,如下:

admin/doAddProFromcsv/

site_data/

.dat

.log

.txt

.xml

add_admin.php



/www/admin/    要上传的当前目录

username@xxx.xxx.xxx.xxx::test  username表示rsync的用户名,@后面是要上传的服务器IP地址。::后面的test是rsync配置文件里面要上传的rsync目录名称

 --progress --password-file=/www/passwd  表示username用户的密码文件放的位置,当需要输入密码的时候直接从密码文件读取。密码文件 /www/passwd 必须只有拥有者可读,设置 chmod 600  /www/passwd

我们的rsync的命令是使用php调用的,而php运行默认只有apache权限,所以前面加一句: 

/usr/bin/sudo 

完整的更新脚本如下:

/usr/bin/sudo Rsync -avzuCP --exclude-from=/www/adm_send.conf /www/admin/ username@xxx.xxx.xxx.xxx::test  --progress --password-file=/www/passwd





4、安全性考虑

1、rsync上传服务端默认是空密码的,必须加上密码。

   Rsync密码设置方法:

   新建密码文件

vi /etc/rsyncd.passwd

输入用户名密码,用冒号:隔开,如下:

shangdi:shangdi123



修改密码文件的权限

chmod 600 /etc/rsyncd.passwd



修改配置文件,导入密码文件

vi  /etc/rsyncd.conf

添加如下一行:

secrets file=/etc/rsyncd.passwd 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值