同一台服务器开启多个SVN仓库的方法(两种方法)

引言以前写了一个单仓库的方法,过于简陋:https://blog.dugwang.com/?p=704

首先介绍下两种方法:

第一种:多服务法,开启多个SVN服务,监听不同的端口号和仓库,每个配置独立存在

第二种:单例配置法,根据统一的配置,去管理不同的仓库,根据用户组分配权限,端口号统一

下面介绍两种方法的实现方式:

安装svn  yum -y install subversion
创建一个准备存放svn仓库的文件夹 mkdir /var/svndata
创建我们的第一个仓库  svnadmin create /var/svndata/m
创建我们的第二个仓库  svnadmin create /var/svndata/blog
开启服务,监听第一个仓库 svnserve -d --listen-port 3691 -r /www/svndata/m
开启服务,监听第二个仓库 svnserve -d --listen-port 3692 -r /www/svndata/blog
检出的时候,IP后面加端口号进行区分仓库
配置相关权限  每个svn仓库目录下都有相应的conf文件夹,在里面对svn进行配置
cd /www/svndata/m/conf
vim svnserve.conf
把其中的anon-access = none
	auth-access = write
打开
不允许匿名用户进行操作
然后配置auth和passwd文件就OK了
写个批处理脚本,以后可以自动启动svn
vim svn.sh
添加下面几行
svnserve -d --listen-port 3691 -r /www/svndata/m
svnserve -d --listen-port 3692 -r /www/svndata/blog

给文件授权 chmod ug+x svn.sh
在/etc/rc.d/rc.local文件后面追加一句/路径/svn.sh
就可以开机自动启动了

第二种:

安装svn  yum -y install subversion
创建一个准备存放svn仓库的文件夹 mkdir /var/svndata
创建我们的第一个仓库  svnadmin create /var/svndata/m
创建我们的第二个仓库  svnadmin create /var/svndata/blog
前几步都一样,区别在这一步:
svnserve -d --listen-port 3690 -r /var/svndata/
这样,只开启了一个服务,监听了svndata下的所有仓库
难点主要在配置文件:
首先编辑authz,我分配了2个组,dev开发组有rw权限,read组只有r权限,留了个admin,有所有的权限:
[groups]
#dev组包含读写权限
m_group_dev = a,b,c
blog_group_dev = a,b,c
#read组只读
m_group_read = testr
blog_group_read = testr

[/]
*=
admin = rw

[m_svn:/]
@m_group_dev = rw
@m_group_read = r

[blog_svn:/]
@blog_group_dev = rw
@blog_group_read = r
编辑完authz,我们来编辑passwd
[users]
admin = admin
a = 123456
b = 123456
c = 123456
保存后,即时生效了。SVN不需要重启,reload配置文件之类的操作,保存完就生效。
然后更改对应仓库里的svnserve.conf,把authz和passwd的文件路径指向同一个,这样子可以保证一次配置,所有仓库都生效。

附例子:SVN的权限分配,精确到文件夹
[testdir:/]
@group_dev = rw
@admin_group = rw

[testdir:/common]
@group_dev = r
@admin_group = rw

[testdir:/member/Owner]
Owner = rw
@admin_group = rw
@group_dev =
这里按照例子来说,我们有一个仓库:testdir,现在要分配权限,仓库管理员有所有目录的读写权限,Owner开发者只有testdir仓库中member文件夹下Owner的读写权限。同时,Owner开发者有仓库common文件夹的读权限。
可以看出,SVN配置的级别是从大到小,根目录给所有人可以检出,然后common目录Owner可以检出,但是只能看。member目录,Owner只能检出属于自己的文件夹Owner其他人的权限等于空。
PS:设置用户组的时候,会出现用户同时出现在几个组,最好在权限分配的时候分开,不然会导致权限覆盖,小权限覆盖大权限。
后面可以参照第一种,搞成开机自启动

两种方法各有优劣,自己根据业务进行选择。当然也可以混合用,在多个目录建立svndata,然后把第一个监听的目录调整到/svndata,有助于大型项目的解耦。

enjoy it!

打赏作者

发表评论

电子邮件地址不会被公开。