搭建两个实时同步的SVN服务器

服务器系统版本:
# cat /etc/redhat-release
CentOS release 6.4 (Final)

结构:
SVN服务器1 主库
IP 192.168.16.201
SVN服务器2 从库
IP 192.168.16.202

搭建目标:
在SVN服务器1上执行svn ci操作,SVN服务器2上的版本库会同步更新。

说明:

本文只涉及到搭建简单的SVN服务器,并不涉及配置Apache的高级配置以及SVN结合LDAP认证登陆。
1.搭建两个SVN服务器
###在这一部分,如无特殊说明,所有操作需在两台服务器上执行
1.1 安装相关软件
yum install -y mod_dav_svn subversion httpd
1.2 设置apache
# vim /etc/httpd/conf/httpd.conf    #根据需求做出更改,在这里使用默认配置文件
# /etc/init.d/httpd start
# chkconfig httpd on
1.3 修改Subversion相关文件
# cd /etc/httpd/conf.d/
# vim subversion.conf
-------------------------------------------------------
# 取消下面两行的注释

LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so

#添加下面这段话

<Location /repos>
        DAV svn
        SVNPath /var/www/svn/repos
        AuthType Basic
        AuthName "Subversion repos"
        AuthUserFile /etc/svn-auth-conf
        Require valid-user
</Location>

---------------------------------------------------------
1.4 添加svn账户
# 尽量保证账户信息一致
# htpasswd -cm /etc/svn-auth-conf weifl
New password:
Re-type new password:
Adding password for user weifl
1.5 设置版本库
# cd /var/www/
# mkdir svn
# cd svn
# svnadmin create repos
# chown -R apache.apache repos
# /etc/init.d/httpd restart

###1.6-1.7的内容仅需在服务器1上执行,服务器2无需执行
1.6 分配版本库
# 查看svn的用法
# svn --help
# 创建示范目录
# cd /tmp
# mkdir mytestproj
# cd mytestproj
# mkdir configurations options main
# touch configurations/testconf1.cfg options/testopt1.cfg main/mainfile1.cfg
1.7 初始化版本库
# svn import /tmp/mytestproj/ file:///var/www/svn/repos/mytestproj -m "Initial repository layout for mytestproj"
Adding         /tmp/mytestproj/main
Adding         /tmp/mytestproj/main/mainfile1.cfg
Adding         /tmp/mytestproj/configurations
Adding         /tmp/mytestproj/configurations/testconf1.cfg
Adding         /tmp/mytestproj/options
Adding         /tmp/mytestproj/options/testopt1.cfg

Committed revision 1.

2.配置SVN服务器2
# cd /var/www/svn/repos/hooks/
# cp pre-revprop-change.tmpl pre-revprop-change
# vim pre-revprop-change
-------------------------------------
echo "Changing revision properties other than svn:log is prohibited" >&2
exit 0        #将1改为0
-------------------------------------
# chmod +x pre-revprop-change

3.配置SVN服务器1
3.1 初始化从库
svnsync init http://192.168.16.202/repos/ http://192.168.16.201/repos/ --source-username weifl --source-password weifl --sync-username weifl --sync-password weifl
-----------------------------------------------------------------------
ATTENTION!  Your password for authentication realm:

<http://192.168.16.202:80> Subversion repos

can only be stored to disk unencrypted!  You are advised to configure
your system so that Subversion can store passwords encrypted, if
possible.  See the documentation for details.

You can avoid future appearances of this warning by setting the value
of the ‘store-plaintext-passwords‘ option to either ‘yes‘ or ‘no‘ in
‘/root/.subversion/servers‘.
-----------------------------------------------------------------------
Store password unencrypted (yes/no)? yes
Copied properties for revision 0.

3.2 同步从库
svnsync sync --non-interactive http://192.168.16.202/repos/ --source-username weifl --source-password weifl --sync-username weifl --sync-password weifl
Transmitting file data ...
Committed revision 1.
Copied properties for revision 1.

3.3 自动同步
# cd /var/www/svn/repos/hooks
# cp post-commit.tmpl post-commit
# vim post-commit
-------------------------------------
# 注释掉所有文字,在最后添加下面内容
echo off
svnsync sync --non-interactive http://192.168.16.202/repos/ --source-username weifl --source-password weifl --sync-username weifl --sync-password weifl
-------------------------------------
# chmod +x post-commit

4.测试
以下操作在任一客户端执行上进行
# 在ubuntu中第一次测试需安装subversion
$ sudo apt-get install -y subversion
$ cd /tmp/
$ svn co http://192.168.16.201/repos/mytestproj/
Authentication realm: <http://192.168.16.201:80> Subversion repos
Password for ‘flong‘:

Authentication realm: <http://192.168.16.201:80> Subversion repos
Username: weifl
Password for ‘weifl‘: *****

A    mytestproj/main
A    mytestproj/main/mainfile1.cfg
A    mytestproj/configurations
A    mytestproj/configurations/testconf1.cfg
A    mytestproj/options
A    mytestproj/options/testopt1.cfg
Checked out revision 1.

$ cd mytestproj/configurations/
$ touch t1.txt
$ svn add t1.txt
A         t1.txt
$ svn ci -m "This is a test" t1.txt
Adding         t1.txt
Transmitting file data .
Committed revision 2.

访问http://192.168.16.201/repos/和http://192.168.16.202/repos/可发现,主库和从库版本始终保持一致。

参考链接:
http://wiki.centos.org/zh/HowTos/Subversion
http://lcinx.blog.163.com/blog/static/4349426720121015114526176/
http://blog.sina.com.cn/s/blog_48aa22a80100k9yu.html
http://m.oschina.net/blog/201567

搭建两个实时同步的SVN服务器

时间: 2024-10-08 09:47:34

搭建两个实时同步的SVN服务器的相关文章

cwRsyncServer从windows下数据实时同步到linux服务器上的实现过程

由于公司有两台windows服务器,开发在操作时一般也都是在这两台服务器上上传一些数据或修改一些东西,而Linux上的服务器也要跟windows上的数据要保持一致而又不需要人为的实现这个过程,基于此过程,昨天花了点时间,完成了基本的测试实现过程,今天就把这过程给记录下来,方便以后查看,以希望可以帮到还在困惑的朋友们. 第一步:在windows上的安装cwRsyncServer4.1.0以及配置过程: 在windows上下载安装包cwRsyncServer4.rar,这个不多解析,大家都懂,要是在

rsync+inotify 实现服务器之间目录文件实时同步(转)

软件简介: 1.rsync 与传统的 cp. tar 备份方式相比,rsync 具有安全性高.备份迅速.支持增量备份等优点,通过 rsync 可 以解决对实时性要求不高的数据备份需求,例如定期的备份文件服务器数据到远端服务器,对本地磁盘定 期做数据镜像等. 随着应用系统规模的不断扩大,对数据的安全性和可靠性也提出的更好的要求,rsync 在高端业务系统中 也逐渐暴露出了很多不足,首先,rsync 同步数据时,需要扫描所有文件后进行比对,进行差量传输.如 果文件数量达到了百万甚至千万量级,扫描所有

Centos 6.5 rsync+inotify 两台服务器文件实时同步

rsync和inotify是什么我这里就不在介绍了,有专门的文章介绍这两个工具. 1.两台服务器IP地址分别为: 源服务器:192.168.1.2 目标服务器:192.168.1.3 @todo:从源服务器(192.168.1.2)的/www/目录下的所有的文件实时同步到目标服务器(192.168.1.3)的/www_bak/目录下 源服务器下需要安装rsync和inotify,源服务器做为server端,实时的向目标服务器client端发送数据 2.安装 rsync 一般centos6.5下都

rsync+inotify 实现服务器文件实时同步

rsync+inotify 实现服务器文件实时同步 操作系统:CentOS 6.X 源服务器:192.168.80.132 目标服务器:192.168.80.128 目的:把源服务器上/data/app目录实时同步到目标服务器的/data/app下 具体操作: 第一部分:在目标服务器192.168.80.128上操作 一.在目标服务器安装Rsync服务端 1.关闭SELINUX vi /etc/selinux/config #SELINUX=enforcing #SELINUXTYPE=targ

使用VisualSVN Server搭建SVN服务器(测试通过)

1. VisualSVN Server  下载地址如下    http://www.visualsvn.com/visualsvn/download/ 2.  TortoiseSVN (SVN 客户机) 的下载地址如下    http://tortoisesvn.net/downloads.html 3 安装VIsualSVN. 1. 选择 visualVSN服务器和管理控制台 或只有管理控制权限 2.  选择程序安装的路径.Subversion Repository(库)的路径和所使用的协议和

rsync结合inotify实现实时同步

背景介绍 中小企业的web应用场景中,web服务器可能是由2台服务器组成,通过DNS的轮询作为负载均衡,此时就需要对2台服务器之间同步的实时性有较高的要求,上一篇文章所介绍的rsync+crontab就不能满足此需求,本章就来介绍使用rsync+inotify完成服务器之间的实时同步 实验说明 操作系统:CentOS6.8,inotify要求内核版本必须为2.6.13以上 源服务器:172.16.10.10/24 目标服务器:172.16.10.20/24 实验目的:将源服务器上的/rsync目

Linux下Rsync+sersync实现数据实时同步

inotify 的同步备份机制有着缺点,于是看了sersync同步,弥补了rsync的缺点.以下转自:http://www.osyunwei.com/archives/7447.html 前言: 一.为什么要用Rsync+sersync架构? 1.sersync是基于Inotify开发的,类似于Inotify-tools的工具 2.sersync可以记录下被监听目录中发生变化的(包括增加.删除.修改)具体某一个文件或某一个目录的名字,然后使用rsync同步的时候,只同步发生变化的这个文件或者这个

Rsync+sersync实现数据实时同步

前言: 一.为什么要用Rsync+sersync架构? 1.sersync是基于Inotify开发的,类似于Inotify-tools的工具 2.sersync可以记录下被监听目录中发生变化的(包括增加.删除.修改)具体某一个文件或某一个目录的名字,然后使用rsync同步的时候,只同步发生变化的这个文件或者这个目录. 二.Rsync+Inotify-tools与Rsync+sersync这两种架构有什么区别? 1.Rsync+Inotify-tools (1):Inotify-tools只能记录

Linux下Rsync+Inotify-tools实现数据实时同步-(转载)

说明: 操作系统:CentOS 5.X 源服务器:192.168.21.129 目标服务器:192.168.21.127,192.168.21.128 目的:把源服务器上/home/www.osyunwei.com目录实时同步到目标服务器的/home/www.osyunwei.com下 具体操作: 第一部分:分别在两台目标服务器192.168.21.127,192.168.21.128上操作 一.分别在两台在目标服务器安装Rsync服务端 1.关闭SELINUX vi /etc/selinux/