出于和同事合作,以及版本控制及代码备份,一直有自行建立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等事件有时间再记录一下。