帮助中心

这里有最新的使用文档和教程

< 返回

Linux搭建SVN服务器详细教程

2023-05-05 14:31 作者:31IDC 阅读量:489 所属分类:Linux系统

Linux搭建SVN服务器详细教程

 

前言

本文讲解 Linux 系统下如何搭建 SVN 服务器,详细说明各配置项的功能,最终实现可管控多个项目的复杂配置。

 

Linux搭建SVN服务器详细教程

 

 

 

SVN 是 subversion 的缩写,是一个开放源代码的版本控制系统,通过采用分支管理系统的高效管理,实现最终集中式的管理。

 

目前很多互联网公司在使用 SVN,优点在于使用方便、易于管理。与之对应的分布式的版本控制系统 Git 则更加灵活。

 

搭建

安装 SVN

//Ubuntu

apt-get install subversion

 

//Centos

yum install subversion

 查看是否安装成功,可以查看版本。

 

svnserve --version

 

 

 

提示版本 1.13.0,说明已安装成功。

 

创建版本库目录

创建 SVN 版本库目录,为后面创建版本库提供存放位置,也是最后启动 SVN 服务的根目录。

 

我们在 /usr 路径下创建 svn 目录作为版本库目录。

 

cd /usr

mkdir svn

Linux 系统各目录知识延伸:

 

 

所以,将 SVN 库存放在用户文件目录 /usr 下比较合理。

 

创建 SVN 版本库

在上一步建立路径基础上,创建版本库,如 dev。

 

cd /usr/svn

svnadmin create dev

 创建成功后,可以查看到 dev 目录下生成的文件。

 

 

 

修改 SVN 配置

进入 conf 目录,查看需要修改的配置文件。

 

cd /usr/svn/dev/conf

ls

 

 

 

 

配置文件:

 

authz:权限配置文件,控制读写权限

passwd:账号密码配置文件

svnserve.conf:svn 服务器配置文件

修改 svnserve.conf 文件

 

vim svnserve.conf

 

 

 

 

去掉 anon-access、auth-access、password-db、authz-db、realm 几项前的注释符号 “#”。

 

配置项含义:

 

anon-access = none|read|write 决定非授权用户的访问级别。none 表示无访问权限,read 表示只读,write 表示可读可写,默认为 read。

auth-access = none|read|write 决定授权用户的访问级别,使用与上面相同的访问级别。默认为 write。

password-db = filename 指定账号密码数据库文件名。filename 是相对仓库中 conf 目录的位置,也可以设置为绝对路径,默认为 passwd。

authz-db = filename 指定权限配置文件名,filename 是相对仓库中 conf 目录的位置,也可以设置为绝对路径,默认为 authz。

realm = realm-name 指定版本库的认证域,即在登录时提示的认证域名称。若两个版本库的认证域相同,建议使用相同的账号密码数据库文件 passwd。

认证域知识延伸:

 

在 SVN 客户端登录时,会提示 realm 认证域,如下图的认证域 My First Repository。

 

 

 

 

 

修改 passwd 文件

 

vim passwd

 

 

 

 

只需在末尾添加账号和密码,格式 账号 = 密码,如 user1 = 123456,可添加多个。

 

修改 authz 文件

 

vim authz

 

 编辑

如果用户比较多,可以使用 groups 形式设置分组 team1,并在根目录下指定分组 @team1 的权限:

 

 

 

如果想设置其他用户的权限,可以通过 * 设置,如设置除 @team1 分组外其他用户只读权限:

 

[/]

@team1 = rw

* = r

 

 

启动 SVN 服务

执行 SVN 启动命令,其中参数 -d 表示以守护进程的方式启动, -r 表示设置的根目录。

 

svnserve -d -r /usr/svn/

 关闭 svn 命令:

 

killall svnserve

本地访问 SVN 服务

在 windows 系统中,安装 TortoiseSVN 软件,创建一个本地目录,右键选择 SVN Checkout 测试下,URL 填写 svn://IP/dev,dev 替换成你创建的版本库名称。

 

 

 

输入 passwd 配置好的用户。

 

 

 

 

 

Checkout completed,SVN 访问成功,这就 Nice 了~

 

 

 

 

 

扩展

设置查看 log 日志

想查看提交的 svn log 日志,需要进一步配置。

 

编辑 svnserve.conf,设置:

 

 

anon-access = none

编辑 authz 文件中添加:

 

[/]

* =

 

 

这样通过鼠标右键 TortoiseSVN->show log 就可以查看 svn 提交的历史记录了。

 

多个项目管控配置

SVN 配置文件是很灵活的,如果想使用统一的账户和权限去管控多个项目,可以将多个项目的 authz 和 passwd 文件统一放在一处,在多个项目的 svnserve.conf 文件中配置这两个文件的绝对路径,并在 authz 中对不同的项目设置用户访问权限。

 

如:a、b、c、d 这 4 个用户,p1、p2 两个项目,其中 a、b 只能访问 p1,c、d 只能访问 p2。

 

创建版本库目录

 

mkdir /usr/svn

创建多个版本库

 

cd /usr/svn

svnadmin create p1

svnadmin create p2

 创建管理用户权限目录

 

mkdir /var/svn/conf

cd /p1/conf

cp authz passwd /var/svn/conf

修改配置文件

 

修改 p1 的 svnserve.conf 文件:

 

anon-access = none

auth-access = write 

password-db = /var/svn/conf/passwd 

authz-db = /var/svn/conf/authz 

realm = p1 

 修改 p2 的 svnserve.conf 文件:

 

anon-access = none

auth-access = write

password-db = /var/svn/conf/passwd

authz-db = /var/svn/conf/authz

realm = p2

password-db 和 authz-db 都使用统一管理用户权限目录,使用绝对路径。

 

修改 password-db 文件

 

[users]

a = 123

b = 123

c = 123

d = 123

修改 authz 文件

 

[groups] //分组

p1user = a,b

p2user = c,d

 

[/]

* = #以上没有定义的用户都没有任何权限

 

[p1:/] //p1的访问控制,c、d无法访问

@p1user = rw

 

[p2:/] //p2的访问控制,a、b无法访问

@p2user = rw

对 password-db 和 authz 文件的修改立即生效,不必重启 svn。

 

启动 svn 服务

 

svnserve -d -r /usr/svn/

 访问不同项目 SVN

 

同样 TortoiseSVN 软件,选择 SVN Checkout 测试。

 

访问项目p1 URL

svn://IP/p1

 

访问项目p2 URL

svn://IP/p1

统一的配置文件,不同项目限定了不同用户访问,这样就实现了管控多个项目的 SVN 配置。

 

以上就是 Linux 系统搭建 SVN 服务器详细教程的所有内容,希望对大家有所帮助。

 

31IDC - 12 年深耕海外 IDC 高端资源