欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

svn双机热备

程序员文章站 2024-03-21 09:56:16
...

1、前言

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 svn://10.168.0.176/var/local/svn svn://10.168.0.176/var/local/svn

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

用户名:bkuser

密码:bkpwd

注:svn://10.168.0.176/var/local/svn中var/local/svn代表具体仓路径,并不是svn安装路径,svn://10.168.0.176/var/local/svn亦是如此。前面一个地址是从库,后面一个地址是主库。

2.3.5、step5

同步测试

In svn-slaveSer:

svnsync sync svn://10.168.0.176/var/local/svn

该步骤中如果要同步整个svn,则只需要填入svn://10.168.0.176即可。

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

用户名:bkuser

密码:bkpwd

成功后的同步结果:

svn双机热备

2.3.5、step5

设置用户提交自动同步

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.6、step6

检查同步情况:

1)桌面新建两个文件夹,pojectA与pojectB

2)分别做如下检出:

 

svn双机热备

svn双机热备

 

 

注意:以上检出的IP地址分别对应svnSer与svn-slaveSer

3)以上都单击【OK】后检出完毕,记录当前的版本号。

4)更新projetA文件夹的内容并做提交操作并记录提交后的版本号。

5)projetB做更新操作,并查看更新后的版本号是否是刚由projectA提交的版本号。

 

ps:如果有权限问题的同学,记得直接运行如下代码,将svn权限赋给需要存在的组中,避免一些莫名其妙的错误出现。

sudo chown -R aaa:bbb /var/local/svn/

将aaa用户:bbb组 分配/var/local/svn/目录权限