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提交的版本号。