svn迁移(由windows visualsvn迁移至linux subversion)

    最近由于公司使用的visual svn服务所在的windows主机经常出现自动重启故障,导致开发人员在提交代码时经常提交失败。鉴于此,决定将svn由windows的visualsvn迁移至Linux主机下的subversion软件搭建的svn主机上。

一、linux系统svn服务器的搭建

1、安装环境准备工作

系统 centos7.5   内存:4g   cpu: 2核    硬盘大小:250g

Subversion版本:1.7.14(yum方式安装)

httpd版本:2.4.6(yum安装)

ip地址:192.168.1.117

安装完成后svn server既可以通过svn协议管理,也可通过http协议管理

2svn服务的安装

yum install httpd subversion mod_dav_svn

3、创建项目

创建项目时使用”svnadmin create”命令创建

#创建svn服务数据存放目录及配置文件存放目录
mkidr /data/{svndata,etc}
# 创建一个项目
Svnadmin create /data/svndata/data1

4、配置svn

    当创建一个svn仓库时,默认的当前仓库的配置在当前仓库的conf目录下,主要的配置文件有权限管理配置文件”authz”,密码配置文件”passwd”,svn服务配置文件”svnserve.conf”。

    当存在多个项目时,为了方便管理及授权,可以通过配置”svnserve.conf”将密码及授权配置文件制定到统一的目录下。

svnserve.conf配置如下:

[general]
anon-access = none 
auth-access = write
password-db = /data/etc/svn-user.conf
authz-db = /data/etc/svn-authz.conf
realm = system

    anon-access表示匿名用户的权限,值有:read write none

    auth-access表示认证用户的权限,值有:read write none

    password-db表示用户名及密码文件存放位置

    authz-db权限分配文件的存放位置

    realm为登录提示信息

 

/data/etc/svn-user.conf配置如下

[users]
liuyi = liuyi
dayi123 = dayi123

     前面一个字段为用户名,后面一个字段为密码,密码为明文的形式。

 

/data/etc/svn-user.conf文件配置如下:

[groups]
dev = dayi123,dayi
[system:/]
liuyi = rw
@dev = rw
[reps2:/]
liaoxb = rw

    如果有多个用户访问同一个项目时,可以定义一个组,将用户添加到组下,再将此项目权限授予组。

5、配置通过http管理svn

(1)创建支持svn的httpd配置文件

# httpd服务的配置文件如下:
]# cat /etc/httpd/conf.d/subversion.conf 
LoadModule dav_svn_module     modules/mod_dav_svn.so 
LoadModule authz_svn_module   modules/mod_authz_svn.so 
<Location /svn>
  DAV svn
  SVNParentPath /data/svndata
  AuthType Basic
  AuthName "dev.chinatvpay.com"
  AuthUserFile /data/etc/passwd
  AuthzSVNAccessFile /data/etc/authz
  Require valid-user
</Location>

(2)创建使用http协议的用户密码文件并创建用户

    通过基于http协议和基于svn协议的用户是互不相关的,如果想让一个用户能同时通过两种方式管理svn,需要通过两种方式添加用户。Httpd服务的认证文件存放路径存放在httpd的配置文件中,其中”AuthUserFile”为认证文件的存放路径。” AuthzSVNAccessFile”为权限管理文件存放路径。

# 创建用户密码文件并设置密码,第一次创建时加”-c”选项,以后创建不能加”-c”选项,不然文件可能会被覆盖
]# htpasswd –c /web/svn/passwd dayi123
# 查看创建的用户及密码
]# cat etc/passwd 
liuyi:$apr1$G8CzDQYV$.0FQccOaPQ9PHDFZWQNKH0

(3)创建基于http协议访问的用户的授权文件

# 文件路劲为http配置中指定的路径
]# cat /data/etc/authz 
[/]
liuyi = rw
dayi123 = rw

(4)对svn目录授权,使能通过http操作

# 修改svn数据目录的权限及所有者
]# chmod 755 /data/svndata -R
]# chown apache:apache /data/svndata -R

6、启动svn

#启动svnserver
]# svnserve -d -r /data/svndata
# 启动httpd服务
]# systemctl start httpd

二、svn服务器的迁移

1、在Linux服务上创建svn仓库

    在Linux服务上依据window visualsvn上存在的仓库名称创建仓库。

# 创建所有的仓库
]# svnadmin create /data/svndata/system
]# svnadmin create /data/svndata/code
]# svnadmin create /data/svndata/codebase
]# svnadmin create /data/svndata/dev
]# svnadmin create /data/svndata/devlop
]# svnadmin create /data/svndata/public
]# svnadmin create /data/svndata/outdev

2、将windows上的visualsvn上的所有仓库导出

     Linuxsvn安装完成后,需要将windows svn上的仓库导出,拷贝到linux svn机器上上,再从linux svn上导入。Windows仓库的导出是通过再cmd窗口中执行命令导出的。

    导出命令:svnadmin dump “原仓库路径” >  “备份的文件路径”  

    在windows上导出svn仓库时,如果svn仓库较大且存在多个svn仓库时时,由于导出时间较长,可将所有的导出命令写入到bat脚本中,通过运行bat脚本导出。导出脚本内容如下:

svnadmin dump “D:\data\svndata\system” > D:\backup\system.dump
svnadmin dump “D:\data\svndata\code” > D:\backup\code.dump
svnadmin dump “D:\data\svndata\codebase” > D:\backup\codebase.dump
svnadmin dump “D:\data\svndata\dev” > D:\backup\svndata.dump
svnadmin dump “D:\data\svndata\devlop” > D:\backup\svndata.dump
svnadmin dump “D:\data\svndata\public” > D:\backup\svndata.dump
svnadmin dump “D:\data\svndata\outdev” > D:\backup\outdev.dump

3、将svn仓库备份在linux svn上导入

     将svn仓库导出后,拷贝到linux svn机器上,可通过sftp或ftp上传值linux svn主机。上传后导入到创建好的相应仓库里

    导入命令:svnadmin load “仓库路径” < “备份文件路径”

    导入时也可通过shell脚本导入,脚本内容如下

#!/bin/bash
svnadmin load /data/svndata/system < /data/backup/system.dump
svnadmin load /data/svndata/code < /data/backup/code.dump
svnadmin load /data/svndata/codebase < /data/backup/codebase.dump
svnadmin load /data/svndata/dev < /data/backup/dev.dump
svnadmin load /data/svndata/devlop < /data/backup/devlop.dump
svnadmin load /data/svndata/public < /data/backup/public.dump
svnadmin load /data/svndata/outdev < /data/backup/outdev.dump

4、用户迁移

     Svn仓库数据迁移完成后需要对用户进行迁移,由于windows服务器上的visualsvn使用的用户为域用户,无法完成对用户的迁移,所以只能使用手动添加创建。Windows svn权限的配置文件也是通过用户的id配置的,无法配置,只能重新分配。

三、建立svn主从同步

   为了提高svn的高可用性,防止svn服务器出现故障,需要为svn服务器搭建一个备用的svn server,让主svn实时将代码的提交更新同步到备用svn上,已完成svn服务的高可用。

1、环境准备

    Svn备机环境准备如下:

    系统 centos7.5   内存:4g   cpu: 2核    硬盘大小:250g

    Subversion版本:1.7.14(yum方式安装)

    httpd版本:2.4.6(yum安装)

    ip地址:192.168.1.118

     在svn server备机上,创建同主svn上相同的库安装相同的服务;建立用于同步数据的用户(基于svn协议的账号),用户需对所有的仓库有读写权限。svn账号权限统一在/data/etc/下统一分配管理。

2、配置同步

    在备库的每个仓库的hooks目录下建立名称为”pre-revprop-change”的文件,并赋予执行权限。

# pre-revprop-change内容如下
]# cat pre-revprop-change
exit 0
# 给此文件赋予执行权限
]# chmod 755 pre-revprop-change

3、同步文件

     同步操作均在主svn上操作

    在同步数据前先要对svn做初始化,初始化完成后再进行第一次同步,通过初始化缓存下主备svn的用户及密码等相关信息,同步时不再需要输入用户名密码。初始化的命令为:”svnsync init 目标svn链接  源svn链接”。

# 对两台svn的所有仓库先做初始化,第一个初始化的仓库需要输入主机密码及svn用户密码
svnsync init svn://192.168.1.118/system svn://192.168.1.117/system
svnsync init svn://192.168.1.118/code svn://192.168.1.117/code
svnsync init svn://192.168.1.118/codebase svn://192.168.1.117/codebase
svnsync init svn://192.168.1.118/dev svn://192.168.1.117/dev
svnsync init svn://192.168.1.118/devlop svn://192.168.1.117/devlop
svnsync init svn://192.168.1.118/public svn://192.168.1.117/public
svnsync init svn://192.168.1.118/outdev svn://192.168.1.117/outdev

    在初始化完成后,就可以同步数据了,如果数据量大,第一次同步数据比较耗时,可以将同步命令写入脚本内去执行:

]# cat svnrsync.sh
#!/bin/bash
svnsync sync svn://192.168.1.118/system
svnsync sync svn://192.168.1.118/code
svnsync sync svn://192.168.1.118/codebase
svnsync sync svn://192.168.1.118/dev
svnsync sync svn://192.168.1.118/devlop
svnsync sync svn://192.168.1.118/public
svnsync sync svn://192.168.1.118/outdev

    第一次同步完成后,可将同步脚本加入定时任务,定时去执行;如果想让提交的代码实时的跟新到备库中可以在仓库的hooks目录下的” post-commit.tmpl”中加入同步命令即可。

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
VisualSVN Server从Windows迁移到CentOS需要进行以下步骤: 1. 安装Subversion和Apache HTTP Server 在CentOS系统中安装Subversion和Apache HTTP Server,可以使用以下命令: ``` sudo yum install subversion httpd ``` 2. 迁移VisualSVN Server仓库 将VisualSVN Server仓库迁移到CentOS系统中。您可以使用svnadmin dump命令在Windows系统中导出仓库的完整副本,然后使用svnadmin load命令将其导入到CentOS系统中。具体命令如下: 在Windows系统中执行以下命令导出仓库: ``` svnadmin dump "C:\Repositories\MyRepo" > C:\Repositories\MyRepo.dump ``` 将导出的文件MyRepo.dump拷贝到CentOS系统中,然后执行以下命令导入仓库: ``` svnadmin create /path/to/repository svnadmin load /path/to/repository < MyRepo.dump ``` 3. 安装mod_dav_svn模块 在CentOS系统中安装mod_dav_svn模块,可以使用以下命令: ``` sudo yum install mod_dav_svn ``` 4. 配置Apache HTTP Server 在Apache HTTP Server的配置文件中添加以下内容: ``` LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.so <Location /svn> DAV svn SVNPath /path/to/repository AuthType Basic AuthName "Subversion repository" AuthUserFile /path/to/users Require valid-user </Location> ``` 其中,SVNPath指定了SVN仓库的路径,AuthUserFile指定了用户认证文件的路径。 5. 创建用户并设置密码 使用htpasswd命令创建用户并设置密码: ``` sudo htpasswd -c /path/to/users username ``` 其中,username为您要创建的用户名。 6. 重启Apache HTTP Server 执行以下命令重启Apache HTTP Server: ``` sudo systemctl restart httpd ``` 完成以上步骤后,您就可以在CentOS系统中使用VisualSVN Server的仓库了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值