1、前言
笔者公司需要一台svn服务器,但不幸的是公司给了一台破旧的服务器(本地用的,其他服务都跑在阿里云上),笔者担心没过多久服务器就挂点,故而想做svn的双机热备。
2、实践部分
2.1、环境
svnSer:
ipaddress=10.168.0.176
hostname=svnSer
svn-slaveSer:
ipaddress=10.168.0.179
hostname=svn-slaveSer
2.2、svnSer安装配置(Master)
In svnSer:
请参阅如下文章安装配置
http://cmdschool.blog.51cto.com/2420395/1715856
并增加如下配置
In svnSer:
1)定义svn备份管理员的用户名和密码
vim修改/var/local/svn/conf/passwd
增加如下定义:
1
|
bkuser = bkpwd |
2)定义svn备份管理员的组、组成员和目录的组权限:
vim修改/var/local/svn/conf/authz
1
2
3
4
5
|
[ groups ]
admin_rw = bkuser [/] @admin_rw = rw |
3)重启服务
1
|
/etc/init .d /svnserve restart
|
2.3、svn-slaveSer的安装配置(Slave)
2.3.1、step1
基本环境配置
In svn-slaveSer:
1)yum安装
1
|
yum -y install subversion
|
2)定义库文件夹
1
|
svnadmin create /var/local/svn
|
3)启动并设置服务开机启动
1
2
|
/etc/init .d /svnserve start
chkconfig svnserve on |
4)设置防火墙
vim编辑/etc/sysconfig/iptables
加入如下内容:
1
|
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3690 -j ACCEPT |
5)重启防火墙
1
|
/etc/init .d /iptables restart
|
2.3.2、step2
In svn-slaveSer:
1
2
3
4
|
cd /var/local/svn/hooks/
cp pre-revprop-change.tmpl pre-revprop-change
chmod 744 pre-revprop-change
ll pre-revprop-change |
vim编辑/var/local/svn/hooks/pre-revprop-change
修改最后一行
修改前:
1
|
exit 1
|
修改后:
1
|
exit 0
|
注:允许修改注释
2.3.3、step3
获取Master的配置文件
In svn-slaveSer:
1)复制配置文件
1
|
scp 10.168.0.176: /var/local/svn/conf/ * /var/local/svn/conf/
|
2)重启服务
1
|
/etc/init .d /svnserve restart
|
2.3.4、step4
初始化同步信息
In svn-slaveSer
1
|
svnsync init file : ///var/local/svn/ svn: //10 .168.0.176 /var/local/svn
|
以上步骤会询问你svn的账号和密码,输入前面定义的用户名和密码:
用户名:bkuser
密码:bkpwd
2.3.5、step5
同步测试
In svn-slaveSer:
1
|
svnsync sync file : ///var/local/svn/
|
以上步骤会询问你svn的账号和密码,输入前面定义的用户名和密码:
用户名:bkuser
密码:bkpwd
成功后的同步结果:
2.3.5、step5
设置用户提交自动同步
In svnSer:
1
2
3
4
|
cd /var/local/svn/hooks/
cp post-commit.tmpl post-commit
chmod 700 post-commit
ll post-commit |
vim编辑/var/local/svn/hooks/post-commit
末尾删除如下内容:
1
2
3
|
REPOS= "$1"
REV= "$2"
mailer.py commit "$REPOS" "$REV" /path/to/mailer .conf
|
增加如下内容:
1
|
svnsync sync --non-interactive svn: //10 .168.0.179 /var/local/svn --username bkuser --password bkpwd
|
以上语句建议先执行一次测试可用再写入post-commit
2.3.6、step6
检查同步情况:
1)桌面新建两个文件夹,pojectA与pojectB
2)分别做如下检出:
注意:以上检出的IP地址分别对应svnSer与svn-slaveSer
3)以上都单击【OK】后检出完毕,记录当前的版本号。
4)更新projetA文件夹的内容并做提交操作并记录提交后的版本号。
5)projetB做更新操作,并查看更新后的版本号是否是刚由projectA提交的版本号。