您的位置:首页 > 其它

Ubuntu 下 Subversion 服务器的安装配置

2014-04-04 23:10 190 查看
公司的Subversion服务器由于电脑硬件原因,经常自动关机,需要重新安装一台服务器。原来的Subversion服务器是在WindowsXP上通过VisualSVNServer架设的,现在借此机会将其迁移至Linux系统。Linux发行版我选择了Ubuntu12.04LTSServer,安装系统的过程中可选择将LAMP一起装上,这样在系统安装完成之后Apache就可以直接使用了。

本文记录如何在Ubuntu12.04LTS上设置SubversionServer,关于Subversion仓库数据迁移的内容再另行介绍。


本文涉及的范围

要通过HTTP协议访问Subversion文件仓库,需要安装并配置好Web服务器。Apache2被证实可以很好的与Subversion一起工作。关于Apache2的安装超出了本文的范围(假设已经安装好Apache2),尽管如此,本文还是会涉及如何配置Apache2使用Subversion。

类似的,要通过HTTPS协议访问Subversion文件仓库,您需要在您的Apache2中安装并配置好数字证书,这也不在本文的讨论范围之中。


安装Subversion

幸运的,Subversion已经包含在main仓库中。所以,要安装Subversion,您只需要简单的运行:

1
$
sudoapt-getinstallsubversion
2
$
sudoapt-getinstalllibapache2-svn


服务器配置

通过上面的命令已经安装了所需的软件包。接下来将阐述如何创建Subversion仓库以及如何设置项目的访问权限。


创建Subversion仓库(Respository)

许多位置都可以放置Subversion仓库,其中两个最常用的是:/usr/local/svn以及/home/svn。我们选择把Subversion仓库放在/home/svn/repos,并且假设我们需要建立两个仓库project1和project2。

通常的情况下,首先创建一个名为“Subversion”的用户组,该组是Subversion仓库所在的目录的拥有者。

使用如下命令增加组,并且把用户加到组里:

1
$
sudoaddgroupsubversion
2
$
sudousermod-Gsubversion-awww-data
www-data是专门为webserver运行而创建的用户,系统中已经预先创建好了。

查看上面两个命令的执行结果:

1
$
cat/etc/group|grepsubversion
2
subversion:x:
1001
:www-data
执行如下命令创建仓库目录:

1
$
sudomkdir-p/home/svn/repos/project1
2
$
sudomkdir-p/home/svn/repos/project2
下面命令用于创建Subversion仓库:

1
$
sudosvnadmincreate/home/svn/repos/project1
2
$
sudosvnadmincreate/home/svn/repos/project2
设置仓库的用户和组:

1
$
sudochown-Rwww-data:subversion/home/svn/repos/project1
2
$
sudochown-Rwww-data:subversion/home/svn/repos/project2


访问方式

Subversion仓库可以通过多种不同的方式进行访问——通过本地硬盘,或者通过各种网络协议。无论如何,文件仓库的位置总是使用URL来表示。

下面是几种不同的URL模式及其对应的访问方法:

file:///——直接访问本地硬盘上文件仓库http://——通过WebDAV协议访问支持Subversion的Apache2Web服务器https://——类似http://,支持SSL加密
svn://——通过自带协议访问svnserve服务器
svn+ssh://——类似svn://,支持通过SSH通道


通过WebDAV协议访问(http://)

WebDAV(Web-basedDistributedAuthoringandVersioning)一种基于HTTP1.1协议的通信协议.它扩展了HTTP1.1,在GET、POST、HEAD等几个HTTP标准方法以外添加了一些新的方法,使应用程序可直接对WebServer直接读写,并支持写文件锁定(Locking)及解锁(Unlock),还可以支持文件的版本控制。

Apachemod_dav_svn配置


要通过WebDAV协议访问SVN文件仓库,首先必须配置Apache2Web服务器。加入下面的代码片段到/etc/apache2/mods-available/dav_svn.conf文件中:

01
<Location
/svn>
02
DAV
svn
03
#
Alternatively,useSVNParentPath
if
you
havemultiplerepositories
04
#
underasingledirectory
05
SVNParentPath
/home/svn/repos
06
AuthType
Basic
07
AuthName
"Subversion
repository"
08
09
#
指定基本用户验证的密码文件路径
10
AuthUserFile
/etc/subversion/dav_svn.passwd
11
12
#
指定文件仓库访问的授权配置文件路径
13
<IfModule
mod_authz_svn.c>
14
AuthzSVNAccessFile
/etc/subversion/dav_svn.authz
15
</IfModule>
16
17
#<LimitExcept
GETPROPFINDOPTIONSREPORT>
18
Require
valid-user
19
#</LimitExcept>
20
</Location>
重启Apache2Web服务器

1
$
sudoserviceapache2restart

密码文件dav_svn.passwd的创建


1
$
sudohtpasswd-c/etc/subversion/dav_svn.passwduser_name
它会提示你输入密码,当您输入了密码,该用户就建立了。“-c”选项表示创建新的/etc/subversion/dav_svn.passwd文件,所以user_name所指的用户将是文件中唯一的用户。如果要添加其他用户,则去掉“-c”选项即可:

1
$
sudohtpasswd/etc/subversion/dav_svn.passwdother_user_name

授权配置文件dav_svn.authz


首先需要加载mod_authz_svn.so

在目录/etc/apache2/mods-enabled下创建软链接到../mods-available/authz_svn.load

1
$
cd/etc/apache2/mods-enabled
2
$
sudoln-s../mods-available/authz_svn.load
../mods-available/authz_svn.load文件的内容为:

1
LoadModule
authz_svn_module/usr/lib/apache2/modules/mod_authz_svn.so
这里我指定了三个组:design组和test组,design组读写权限,test组只有读的权限。另外,设置一个管理员账号admin,管理员对所有项目有读写权限。

授权文件/etc/subversion/dav_svn.authz的内容如下:

01
[groups]
02
design=user1,user2,user3
03
test=user4,user5
04
05
[project1:/]
06
admin=rw
07
@design
=rw
08
@test
=r
09
10
[project2:/]
11
admin=rw
12
@design
=rw
13
@tester
=r
如果在Checkin的时候遇到如下错误:

1
Can’t
open‘/home/svn/myproject/db/txn-current-lock’:Permissiondenied
这是因为文件所属的用户和组不对造成的问题,可以重新对整个项目目录设置用户和组:

1
$
sudochown-Rwww-data:subversion/home/svn/repos/project1
如果你不想将项目目录的拥有者设置成www-data的话,比如你可能想设置为root:

1
$
sudochown-Rroot:subversion/home/svn/repos/project1
必须将root加入subversion组:

1
$
sudousermod-Gsubversion-aroot
还要设置组的属性:

1
$
sudochmod-Rg+rws/home/svn/repos/project1
然后查看txn-current-lock文件的权限和用户以及组信息,应该类似于:

1
$
ls-l/home/svn/myproject/db/txn-current-lock
2
-rw-rwSr--
1
root
subversion
0
2009
-
06
-
18
15
:
33
txn-current-lock
至此,Subversion服务器的配置已经完成了,借助SVN客户端软件就可以通过http://的方式访问到上面配置的两个文件仓库了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: