Linux服务器搭建SVN服务端

出于和同事合作,以及版本控制及代码备份,一直有自行建立SVN服务器的需求。之前一直在网上找各种资料,想在我们自己的服务器上安装SVN服务器,但是各种资料相对来说都不是很满足我的需求,解决之后,还是想做个记录,给自己及后来者留个参考。

还是老样子,我是在CentOS7下配置SVN服务器的。其实除了安装SVN包略有差别之外,别的Linux发行版也差不多,所以这些记录也适合别的发行版。

安装SVN

安装SVN包:

yum install subversion -y

查看SVN版本:

svn –version –quiet

创建SVN项目

因为我们除了PHP,还有iOS及安卓端代码仓库,还有个和UI设计师共同共享文件的专门SVN仓库,所以我们需要在一台服务器上搭建多个SVN仓库,所以,我们需要你个专门的目录来放置所有的SVN代码仓库,我的习惯是放在/var/svn/,创建项目文件夹:

mkdir /var/svn

创建项目,假设仓库名叫UI:

cd /var/svn/
svnadmin create ui

创建用户

打开password文件,按照注释上的例子,我们在里面新建对应的用户,比如说:

user1 = password1
user2 = password2

用户权限控制

打开authz文件,将用户名及密码信息输入,比如说:

cd conf
vim authz

write = user1
read = user2,user3

[/]
@write = rw
@read = r

这样可以精细控制对应的用户拥有什么样的权限,详细的在这个文件上方都有注释,阅读一下就能看懂了。

访问权限控制

将svnserve.conf文件中的下面几行开头注释去掉,使上述配置生效:

anon-access = none
auth-access = write
password-db = passwd
authz-db = authz

到这一步一个完整的仓库就建立成功了,如果需要多个项目,可以从上述创建仓库命令开始,再次执行上述步骤,就能在一台服务器上建立多个SVN仓库。

启动SVN服务器

我们需要启动一个进程,到后台监听来自客户端的请求。

我们上面说了,我们需要在一台服务器上建立多个SVN仓库,所以SVN服务器监听的路径也是我们上面建立的那个SVN总目录,我们上面建立的SVN项目总目录是/var/svn/,所以,进程启动命令是:

/usr/bin/svnserve -d -r /var/svn/

客户端连接

因为我们没有配置HTTPS等协议进行SVN连接,所以,我们需要使用SVN协议让本地客户端与SVN服务器进行通信,本地SVN客户端访问SVN服务器地址格式为:

svn://hostname_or_ip/repo_name

其中hostname_or_ip是服务器的域名或者IP,repo_name是对应的仓库名称,后面要求输入的用户名及密码是在password文件中设置的。

到这里,我们的SVN服务器就建立完成了,后面涉及到的hooks等事件有时间再记录一下。