如何部署Subversion的双机热备?

Highly available

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

增加如下定义:

bkuser = bkpwd

2)定义svn备份管理员的组、组成员和目录的组权限:

vim /var/local/svn/conf/authz

修改配置如下:

[groups]
admin_rw = bkuser

[/]
@admin_rw = rw

3)重启服务

/etc/init.d/svnserve restart

2.3 svn-slaveSer的安装配置(Slave)

2.3.1 step1

基本环境配置
In svn-slaveSer:
1)yum安装

yum -y install subversion

2)定义库文件夹

svnadmin create /var/local/svn

3)启动并设置服务开机启动

/etc/init.d/svnserve start
chkconfig svnserve on

4)设置防火墙

vim /etc/sysconfig/iptables

加入如下内容:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 3690 -j ACCEPT

5)重启防火墙

/etc/init.d/iptables restart

2.3.2 step2

In svn-slaveSer:

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

修改最后一行
修改前:

exit 1

修改后:

exit 0

注:允许修改注释

2.3.3 step3

获取Master的配置文件
In svn-slaveSer:
1)复制配置文件

scp 10.168.0.176:/var/local/svn/conf/* /var/local/svn/conf/

2)重启服务

/etc/init.d/svnserve restart

2.3.4 step4

初始化同步信息
In svn-slaveSer

svnsync init file:///var/local/svn/ svn://10.168.0.176/var/local/svn

以上步骤会询问你svn的账号和密码,输入前面定义的用户名和密码:
用户名:bkuser
密码:bkpwd

2.3.5 step5

同步测试
In svn-slaveSer:

svnsync sync file:///var/local/svn/

以上步骤会询问你svn的账号和密码,输入前面定义的用户名和密码:
用户名:bkuser
密码:bkpwd
成功后的同步结果:

2.3.6 step6

设置用户提交自动同步
In svnSer:

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

末尾删除如下内容:

REPOS="$1"
REV="$2"
mailer.py commit "$REPOS" "$REV" /path/to/mailer.conf

增加如下内容:

svnsync sync --non-interactive svn://10.168.0.179/var/local/svn --username bkuser --password bkpwd

以上语句建议先执行一次测试可用再写入post-commit

2.3.7 step7

检查同步情况:
1)桌面新建两个文件夹,pojectA与pojectB
2)分别做如下检出:


注意:以上检出的IP地址分别对应svnSer与svn-slaveSer
3)以上都单击【OK】后检出完毕,记录当前的版本号。
4)更新projetA文件夹的内容并做提交操作并记录提交后的版本号。
5)projetB做更新操作,并查看更新后的版本号是否是刚由projectA提交的版本号。
———————————-
参阅原文:
http://my.oschina.net/showapi/blog/92870?p=1

没有评论

发表回复

Highly available
如何配置nginx-plus的HA?

1 基础知识 1.1 基本概念 1.1.1 访问限制 – 访问限制分连接限制、请求限制和 …

Highly available
如何部署集群系统Heartbeat?

1 理论部分 1.1 群集的分类 我们用到的集群系统主要就2种: 高可用(High Availabi …

Subversion
如何部署基于SVN+SSH协议的Subversion?

1 前言 1.1 需求和目的 公司要求引入版本管理服务器对两大对象进行管理: 1)针对windows …