ubuntu系统上svn服务器搭建步骤分享

12-21

想在一台Ubuntu上搭建SVN服务,在网上看到的教程都需要安装Apache,但我已经安装了Nginx了,不想仅仅为了SVN再多装一个Apache。经过一番摸索,终于搞定了最小化的SVN服务,额外的软件什么也不需要安装。

下面是详细的过程:

1 通过apt-get安装subversion

复制代码

代码如下:

apt-get install subversion

我原来误入歧途,以为会有个subversion-server之类的包,怎么找也找不到,后来才知道原来这个subversion同时包含了服务端和客户端。

2 找个目录当做SVN的根目录

我选择的是/data/svn,以下命令也都是跟着这个目录走的,请按照自己的选择自行修改

3 创建一个库

我的叫做akcms,执行完毕后会发现自动在/data/svn/akcms/目录中生成了一堆东西,其中有一个叫conf的文件夹

复制代码

代码如下:

svnadmin create /data/svn/akcms

4 接下来修改/data/svn/akcms/conf/下的三个文件,依次是:svnserve.conf、passwd、authz。他们三个作用分别是:主配置文件、密码配置文件、权限配置文件

5 编辑文件vi /data/svn/akcms/conf/svnserve.conf
找到以下几项,按照如下的设置修改,去掉前面的注释,每一行的开头不能有空格

复制代码

代码如下:

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

6 编辑文件vi /data/svn/akcms/conf/passwd

复制代码

代码如下:

[users]
mantou = 123456

格式很简单,用户名、密码,每行一个,默认是明文保存

7 编辑文件 vi /data/svn/akcms/conf/authz

复制代码

代码如下:

[groups]
develop = mantou
[/]
@develop = rw

这个配置稍微复杂点:[groups]组是设置用户组的,比如:我设置的develop可以理解为开发人员组,等号的后面是组的成员,每个成员之间用逗号分隔。接下来的[/]为具体的某个地址设置权限,用@develop代表为develop组设置权限,rw代表又能读又能写。还有其他的复杂用法,不过我只懂最简单最常用的,所以其他的都跳过。

8 启动服务

复制代码

代码如下:

svnserve -d -r /data/svn

参数-d表示以守护进程模式启动,-r表示代码仓库的根目录,如果启动成功了,通过ps aux | grep svnserve可以看到进程,至此一个最简单的SVN服务就搭建好了。

然后把这个命令放到rc.local中,让每次开机都启动SVN服务。

9 接下来测试验证,在客户机上找个目录执行一下命令:

复制代码

代码如下:

svn co svn://192.168.0.111/akcms --username=mantou --force
svn://192.168.0.111/akcms就是新建的代码仓库的地址,假设刚才的服务是建在192.168.0.111上的。参数--username是指定用户名的,不指定的话会以当前的系统用户登录,系统用户和SVN用户是不相干的两套,所以还是人工指定的好。--force参数可有可无,如果在同一个地址上反复测试,删了建建了删,SVN客户端会缓存住上一次成功checkout的UUID,如果删了再建UUID会发生改变,客户端校验不一致会提示“Repository UUID 'xxx' doesn't match expected UUID 'xxx'”,加--force参数就不理会这个校验,强行checkout。

如果顺利的话,会提示“Checked out revision 0.”,然后在当前目录下生成一个akcms的目录,里面就是代码仓库的代码了。