您的位置:首页 > 运维架构 > Linux

Centos搭建SVN服务器

2017-11-29 17:56 239 查看
1、yum安装SVN服务器:

yum install subversion

2、查看版本

svnserve –version

3.、创建SVN版本库目录

mkdir -p /var/svn/svnrepos1

mkdir -p /var/svn/svnrepos2

4、创建版本库

svnadmin create /var/svn/svnrepos1

svnadmin create /var/svn/svnrepos2

[root@localhost svnrepos]# ls /var/svn/svnrepos1
conf  db  format  hooks  locks  README.txt


5、进入/var/svn/svnrepos1/conf目录(进行版本库配置)

[root@localhost conf]# ls /var/svn/svnrepos1/conf
authz  passwd  svnserve.conf


authz:文件是权限控制文件

passwd:是帐号密码文件

svnserve.conf :SVN服务配置文件

6、设置账号密码 vi passwd

在[users]块中添加用户和密码,格式:帐号=密码,如

[users]
mbshqqb=123456


7、设置权限 vi authz

a. 格式:

[groups]配置段中配置行格式如下:

<用户组> = <用户列表>

版本库路径权限段的段名格式如下:

[<版本库名>:<路径>]

b. 方式:

该文件的配置方式有两种,导致SVN启动的访问方式也有两种:

方式一(但版本库):

svnserve -d -r /svn/svnrepos1

在这种情况下,一个svnserve只能为一个版本库工作。

authz配置文件中对版本库权限的配置应这样写:(由于只有一个库,所以省略库名,地址的根路径表示该库的根路径,而不是SVN的根目录)

[groups]
admin=mbshqqb
dev=user1,user2
[/]
@admin=rw
@dev=r
user2=rw


意思是mbshqqb对版本库有读写权限……

访问方式:

svn://192.168.0.1/

方式二:指定到版本库的上级目录(称之为多库svnserve方式)

svnserve -d -r /var/svn

这种情况,一个svnserve可以为多个版本库工作

authz配置文件中对版本库权限的配置应这样写:(每个库都指定为svn仓库的根目录)

[groups]
admin=mbshqqb
dev=user1
[svnrepos1:/]
@admin=rw
user1=r

[svnrepos2:/]
@admin=rw
user1=r


如果此时你还用[/],则表示所有库的根目录,同理,[/src]表示所有库的根目录下的src目录。

使用:

svn://192.168.0.1/svnrepos1

svn://192.168.0.1/svnrepos2

8、修改svnserve.conf文件 vi svnserve.conf

打开下面的几个注释:

anon-access = none #匿名用户无任何权限
auth-access = write #授权用户可写
password-db = passwd #使用哪个文件作为账号文件
authz-db = authz #使用哪个文件作为权限文件
realm = /var/svn/svnrepos # 认证空间名,版本库所在目录


或设置成:

anon-access = none #匿名用户无任何权限
auth-access = /var/svn/write #授权用户可写
password-db = /var/svn/passwd #使用哪个文件作为账号文件
authz-db = /var/svn/authz #使用哪个文件作为权限文件
realm = /var/svn/svnrepos # 认证空间名,版本库所在目录


anon-access: 控制非鉴权用户访问版本库的权限,取值范围为"write"、"read"和"none"。 即"write"为可读可写,"read"为只读,"none"表示无访问权限。 缺省值:read
auth-access: 控制鉴权用户访问版本库的权限。取值范围为"write"、"read"和"none"。 即"write"为可读可写,"read"为只读,"none"表示无访问权限。 缺省值:write
authz-db: 指定权限配置文件名,通过该文件可以实现以路径为基础的访问控制。 除非指定绝对路径,否则文件位置为相对conf目录的相对路径。 缺省值:authz
realm: 指定版本库的认证域,即在登录时提示的认证域名称。若两个版本库的 认证域相同,建议使用相同的用户名口令数据文件。 缺省值:一个UUID(Universal Unique IDentifier,全局唯一标示)。


9、启动svn版本库

单版本:

svnserve -d -r /var/svn/svnrepos1

svnserve -d -r /var/svn/svnrepos2

多版本:

svnserve -d -r /var/svn –config-file=/var/svn/svnserve.conf

10、停止SVN命令

killall svnserve

11、 连接

单版本和多版本相同:

svn://localhost/svnrepos1

svn://localhost/svnrepos2

注意:

当客户端登录后发现既不弹出登录对话框,又提示认证错误时,如果你第一次输入密码错误了,那么需要清除之前保存的密码(该方法网上有解释,第一种是在设置中清除,第二种是删掉C盘用户目录下AppData中关于SVN认证的数据记录),如果是第一次登陆就不弹出密码认证框,而且尝试了网上所有的方法后都不行,那么说明你的三个配置文件的格式写错了:

1. 有没有打错的字:如[groups]写成了[goups],[general]写成了[genarel]

2. 是不是有多余的空格: 每行开始都没有空格,如果你是直接删除了注释中的#,而没有删除#后面的空格的话也会出现这种错误,而且这是网上出现最对的错误

3. 重复检查第一点和第二点,不会出现其他的方法了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: