设为首页 收藏本站
查看: 690|回复: 0

[经验分享] svn+钩子程序+rsync 自动化同步代码

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-7-31 09:03:02 | 显示全部楼层 |阅读模式
svn+钩子程序+rsync 自动化同步代码
实验环境如下:
     IP地址            服务器功能             路径                           同步机制
192.168.3.206          svn               svn路径:/data/svn                 rsync客户端
192.168.3.210          代码服务器        代码目录:/data/html               rsync服务端
注:用户提交svn代码后,svn会自动把数据放在/data/rsync目录,然后把/data/rsync数据自动更新到代码服务器/data/html目录
一、svn安装配置
svn服务器操作如下:
1、安装     
yum install -y subversion
svnversion --version #判断是否安装成功
#创建用户以及组
groupadd svn
useradd svn -g svn   -s /sbin/nologin
#有了SVN软件后还需要建立SVN库。
mkdir -p /data/svn
cd  /data/svn
svnadmin create coding
chown -R svn.svn coding
2、配置
#账号密码、分组、控制
2.1先设置authz
vim /data/svn/coding/conf/authz
[groups]
manage = system_svn,liuzhuang
coding = system_svn,test01
[/]
@manage = rw
[coding:/]
@coding = rw
[coding:/test]
@coding = rw

注:这里分成两个组,分别是manage,coding,都有读写权限.
2.2再设置passwd
vim /data/svn/coding/conf/passwd
#添加下面内容
system_svn = PASS             #此用户是svn连接用户
liuzhuang = pass123
test01 = pass123

#格式为:用户名=密码

2.3最后设定svnserve.conf
vim /data/svn/coding/conf/svnserve.conf
#找到下面内容需修改成下面一样就OK.
anon-access = none # 使非授权用户无法访问
auth-access = write # 使授权用户有写权限
password-db = password #密码文件路径
authz-db = authz   # 访问控制文件
realm = coding # 认证命名空间,subversion会在认证提示里显示,并且作为凭证缓存的关键字。
采用默认配置. 以上语句都必须顶格写, 左侧不能留空格, 否则会出错.

注:以上配置文件需要放在文本最顶端,前面不能有空格,不然会报错。
3、连接
svnserve -d -r /data/svn
echo " svnserve -d -r /data/svn" >>/etc/rc.local  #开机自动启动svn服务
#修改监听端口如下
svnserve -d -r /data/svn --listen-port 3391
这样同一台服务器可以运行多个svnserver
svn://192.168.3.206:3690/coding  #输入用户和密码就可以成功提交svn代码了.
如果能够正常使用,到这里说明svn服务搭建ok.

二、rsync安装配置
代码服务器操作如下:
mkdir -p /data/html    #建立代码目录
1、下载rsync版本
cd  /root/soft
wget  http://rsync.samba.org/ftp/rsync/src/rsync-3.0.7.tar.gz
2、解压rsync
tar  zxvf  rsync-3.0.7.tar.gz  
cd rsync-3.0.7
./configure --prefix=/usr/local/rsync
make &&make install  
useradd coding   -s /sbin/nologin  #建立rsync用户coding
3、安装配置rsync
默认安装完,/etc下没有rsyncd.conf这个文件,不过我们可以新建:
vim /etc/rsyncd.conf
uid = root
gid = root
use chroot = no
max connections = 30
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
log file = /var/log/rsyncd.log
transfer logging = yes
log format = %t %a %m %f %b
syslog facility = local3
timeout = 300
[svn_coding]                 #同步的模块名字
read only =  false       #false表示可以修改这个模块的内容,yes表示不能修改这个模块的内容
path = /data/html  #同步的模块目录
comment = svn_coding
auth users = coding           #同步的用户
secrets file = /etc/rsync_svn.pas    #同步密码文件
hosts allow = 192.168.3.0/24  #允许访问的rsync ip段
4、设置rsync服务器端同步密钥
vim   /etc/rsync_svn.pas
coding:coding_123   
#(表示用户名:密码)
chmod 600   /etc/rsync_svn.pas   #更改权限。
5、rsync启动守护进程
/usr/local/rsync/bin/rsync --daemon
echo "/usr/local/rsync/bin/rsync --daemon" >>/etc/rc.local   #开机自动启动rsync服务
svn服务器操作如下:
mkdir -p /data/rsync  #建议同步代码目录
mkdir -p /data/rsync_log #建议同步代码log目录
chmod 777 /data/rsync_log
1、密码设置
echo 'coding_123' >/etc/rsync_svn.pas
chmod 600  /etc/rsync_svn.pas
2、从客户端更新文件到服务端
echo 'hello' >/data/rsync/hello.txt    #建立测试文件
yum install -y rsync #安装rsync命令
rsync -avz --progress /data/rsync/  coding@192.168.3.210::svn_coding --password-file=/etc/rsync_svn.pas
wKioL1PYsMPC-RaVAAENOnefLaU784.jpg
#/data/rsync/表示客户端推送文件的目录,coding表示用户名,192.168.3.210表示服务端ip,svn_coding表示服务端的模块名字
3、进入代码服务器/data/html目录,查看是否有hello.txt文件,有表示rsync安装ok.

三、svn钩子程序配置

svn服务器操作如下:
1、目录建立及准备
cd /data/rsync
svn co svn://192.168.3.206:3690/coding    #第一次需要拉文件到/data/rsync目录,第一个root是系统密码,后面才是连接svn的用户和密码
2、钩子程序编写
vim /data/svn/coding/hooks/post-commit

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/bin/bash
export LANG=zh_CN.UTF-8
svn=/usr/bin/svn
svn_rsync=/data/rsync/coding/      #同步钩子程序的目录
rsync=/usr/bin/rsync
password_file=/etc/rsync_svn.pas   #密码文件
coding_server1=192.168.3.210::svn_coding   #rsync相关模块参数
log=/data/rsync_log/rsync.log
exclude=/data/rsync_log/exclude.list
date_start=$(date +%s)
for svn_dir in `svnlook dirs-changed /data/svn/coding/`
do
    $svn update --username=system_svn --password='PASS' $svn_rsync/$svn_dir
done
if [ $? == 0 ]
then
   
$rsync -vaztpH  --timeout=90 $svn_rsync coding@$coding_server1
--password-file=$password_file --exclude-from=$exclude >> $log
fi
date_end=$(date +%s)
echo $((date_end-date_start)) >>/data/rsync_log/time.log



chmod 777  /data/svn/coding/hooks/post-commit
3、测试
用户在svn任意提交代码,看能否自动更新到代码服务器。如果看到代码数据已更新表示ok.

总结:这套svn自动更新成功,是参考彪哥写的钩子程序。彪哥是大神哇。我们只能膜拜了。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-22958-1-1.html 上篇帖子: yum下提示Another app is currently holding the yum lock 下篇帖子: linux强制卸载挂在目录 程序
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表