51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

SVN服务器搭建配置教程

前言 {#前言}

本篇讲解如何在 Linux 服务器 CentOS 7 搭建 SVN 服务端,创建 SVN 仓库项目,添加项目成员以及配置用户权限。
我们将使用 svnserve 提供 svn 服务(另外还有 apache搭建SVN 方式)使用svnadmin创建仓库;

服务器上安装 Subversion {#服务器上安装-Subversion}

首先我们要安装 SVN 的服务端,Apache Subversion 提供了服务端和客户端。
如果你还没安装好 Subversion 请查看 SVN服务端安装教程

创建 SVN 仓库 {#创建-SVN-仓库}

为确保你已正确安装好 SVN ,请在命令行输入 svnadmin help,如果看到如下内容,说明是没问题的

|------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | # svnadmin help general usage: svnadmin SUBCOMMAND REPOS_PATH [ARGS & OPTIONS ...] Subversion repository administration tool. Type 'svnadmin help <subcommand>' for help on a specific subcommand. Type 'svnadmin --version' to see the program version and FS modules. Available subcommands: crashtest create delrevprop deltify dump dump-revprops freeze help (?, h) hotcopy info list-dblogs list-unused-dblogs load load-revprops lock lslocks lstxns pack recover rmlocks rmtxns setlog setrevprop setuuid unlock upgrade verify |

svnadmin是一个服务端的 SVN 管理工具,我们可以用它来创建仓库。

我们的仓库通常都会有很多个,所以我们创建一个目录来存放,假设我以/root/repos/作为我的仓库父目录,执行下面的命令:

|---------------|-------------------------------------| | 1 2 3 | cd /root # 创建目录 mkdir repos |

接下来我们创建一个仓库test

|-----------------------|---------------------------------------------------------------------------------------| | 1 2 3 4 5 6 7 | # 先进去repos目录 cd repos # 创建仓库test svnadmin create test # 进入仓库查看文件列表 cd test ls |

输出如下,表示创建成功,

几个关键目录介绍下
conf目录是存放配置文件的,配置用户权限,用户账号密码,svnserve配置都在这里配置。
db这里存放我们平常提交的数据文件,文件内容都是经过处理的,看不懂里面的内容
hooks这里是存放钩子配置的,暂时不用管这里

我们的重点是在conf目录,里面几个配置文件如下:
authz 是权限配置文件,用来配置用户什么路径有读写权限
hooks-env.tmpl 是钩子环境变量配置文件的模版,我们暂时用不到,可以忽略
passwd 用来配置用户的帐号密码
svnserve.conf 是subversion的总配置

现在我们什么配置都不用修改先,我们先启动 svn 服务:

|-----------------------|---------------------------------------------------------------------------------------------------------------------------------------------| | 1 2 3 4 5 6 7 | # 启动svn服务,-d 表示在后台运行,-r 表示仓库根目录 svnserve -d -r /root/repos/ # 查看svn进程 ps -ef | grep svn # 停止SVN服务进程 ps -aux | grep svn kill -9 进程杀掉 |

如果没报错,说明就启动成功了。
这时候我们就可以使用 SVN 客户端来检出仓库了。如果你还不会使用 SVN 客户端,可以查看下 SVN使用教程
你会发现任何人都可以检出代码,但是无法提交代码,这是因为 svn 仓库默认就是未登录用户有读取权限。

接下来我们修改配置,限制只有登录用户才能检出代码,不然太危险了。

打开test/conf/svnserve.conf 文件,替换内容如下;

|---------------------------|------------------------------------------------------------------------------------------------------------------------------------------| | 1 2 3 4 5 6 7 8 9 | [general] # 未登录用户无权限 anon-access = none # 已登录用户有读写权限 auth-access = write # 密码配置文件 password-db = passwd # 权限配置文件 authz-db = authz |

注意,这个文件里面有非常多的注释内容,我上面这个配置内容是简化后的,我们直接把原来的全部删除,替换为我们这个就行了。
保存配置后,不需要重启服务器,我们重新checkout下,这时候就会弹出登录界面了,说明配置生效了。

但是我们还没有用户名密码,接下来我们设置下用户名和密码。
打开test/conf/passwd文件,我们增加一个用户名hello,密码123456,最后内容如下:

|-----------------|------------------------------------------------------------------------------| | 1 2 3 4 | [users] # harry = harryssecret # sally = sallyssecret hello = 123456 |

这时候我们直接去 checkout 会提示没有权限Error Authorization failed
这是因为我们配置了authz-db = authz,这个表示用户的权限需要读取这个配置文件去判断。
如果我们去掉这个配置,则登录用户对整个仓库都有读写权限。

接下来我们给 hello 用户配置路径权限,打开test/conf/authz文件,写入如下内容:

|------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | # 这是一个权限配置文件 # 每行配置一个权限 # 用$authenticated表示所有登录用户 # 用$anonymous表示所有未登录用户 # *号表示任何用 # 这里配置分组,把相同权限的人归为一个组,方便配置权限 [groups] # 假设我们创建一个开发人员组 # developers = zhangsan,lisi # 管理员分组 # admin = wangzong,ruhua # 配置根目录权限,管理员分组有根目录的读写权限,hello用户只有读权限 [test:/] @admin = rw hello = r # 给开发人员配置服务端源码路径的读写权限,hello有读写权限 [test:/server/src] @developers = rw hello = rw |

把配置文件保存好,这样我们的hello用户就有了根目录/的读权限,并且有了/server/src的读写权限了。
另外我们还配置了几个分组,不过那些用户都是假的,需要在passwd文件里先配置这些用户才能使用,这里只是给你演示下如何配置分组

完整的 SVN 服务端搭建和配置就完成了,日常工作中,如果项目比较多、用户多,会需要经常修改配置文件,要多注意安全,不然容易导致仓库访问不到。


赞(2)
未经允许不得转载:工具盒子 » SVN服务器搭建配置教程