ubuntu配置apache2+svn服务器

本文介绍如何在Ubuntu系统中安装配置Apache2 Web服务器和Subversion版本控制系统,并实现两者的集成。主要内容包括安装Apache2和SVN,创建SVN仓库,配置Apache2以支持SVN访问,以及通过不同方式访问SVN仓库的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、安装apache2和svn:

sudo apt-get install apache2

sudo apt-get install subversion

sudo apt-get install libapache2-svn

二.创建 SVN 仓库

1.创建目录

$ sudo mkdir /home/svn

$ cd /home/svn

2.下面的命令用于创建 SVN 文件仓库并修改所有者::

$ sudo svnadmin create /home/svn/project

$ sudo chown -R www-data project/

注:在ubuntu上,www-data是默认运行web服务的用户/组,一般在通过apt安装web服务程序时生成。搭建web服务的文件夹/文件一般要设置成www-data的。

三、访问方式

Subversion 文件仓库可以通过许多不同的方式进行访问(Check Out,签出)——通过本地硬盘,或者通过各种网络协议。无论如何,文件仓库的位置总是使用 URL 来表示。下表显示了不同的 URL 模式对应的访问方法:

 

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


1.直接访问文件仓库(file://)

这是所有访问方式中最简单的。它不需要事先运行任何 SVN 服务。这种访问方式用于访问本地的 SVN 文件仓库。语法是:

$ svn co file:///home/svn/myproject 或者 $ svn co file://localhost/home/svn/myproject

注意:如果您并不确定主机的名称,您必须使用三个斜杠(///),而如果您指定了主机的名称,则您必须使用两个斜杠(//).

对文件仓库的访问权限基于文件系统的权限。如果该用户具有读/写权限,那么他/她就可以签出/提交修改。如果您像前面我们说描述的那样设置了相应的组,您可以简单的将一个用户添加到“subversion”组中以使其具有签出和提交的权限。

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

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

<Location /svn>
        DAV svn
        SVNParentPath /home/svn 
        AuthType Basic
        AuthName "subversion repository"
        AuthUserFile /etc/subversion/passwd
        AuthzSVNAccessFile /etc/subversion/authz
        <LimitExcept GET PROPFIND OPTIONS REPORT>
                Require valid-user
        </LimitExcept>
</Location>


有些文档介绍的方法是

<Location /svn/project>

...

SVNPath /home/svn/project

..

这种方法把SVN的根目录写在了project里,这样会出现再创建另外一个新的项目时, 通过apache2找不到svn的情况。因些个人认为这种方法在实际项目中不适用。


在这个配置文件中,AuthUserFile 用来存放访问svn的用户名和密码(加密的,非明文),而AuthzSVNAccessFile用来找到允许访问的用户组和用户访问不同项目的权限。路径可以根据自己的需要设置。在这里我们写有/etc/subversion目录下。

cd /etc/subversion
sudo touch passwd
sudo touch authz

当您添加了上面的内容,您必须重新起动 Apache 2 Web 服务器,请输入下面的命令:

sudo /etc/init.d/apache2 restart

接下来,您需要创建 /etc/subversion/passwd 文件,该文件包含了用户授权的详细信息。要添加用户,您可以执行下面的命令:

sudo htpasswd -c /etc/subversion/passwd dy

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

sudo htpasswd /etc/subversion/passwd dy1

您可以通过下面的命令来访问文件仓库:

$ svn co http://hostname/svn/myproject project --username dy

它会提示您输入密码。您必须输入您使用 htpasswd 设置的密码。当通过验证,项目的文件就被签出了。

这个时候用户访问的权限都是rw,如果我们想为用户分组,每个组有不同的权限,那么就需要编辑我们创建好的文件,在/etc/subversion下

我们先用sudo htpasswd /etc/subversion/passwd 命令创建我们需要的用户sxl,lxp,dy,kfy,t1,t2,t3等,然后编辑:

sudo vi authz

[groups]
manager = sxl
developer = sql,lxp,dy,kfy
tester = t1,t2,t3

[test:/]
@manager = rw
@developer = rw
@tester = r
* = r

[project:/]
@manager = rw
@developer = rw
@tester =
* = r

例如我建立了三个组,一个manager ,一个developer ,一个tester。每组有不同的人。然后我创建了两个不同项目,一个名叫project,一个叫test。那么以上内容就决定了访问的权限,即:在test项目中,manager和developer组的成员都有读写权限,而tester组只在读权限,而没有写权限。

如果想对所有的项目都有请读写权限,那么可以写成

[/]

@manager = rw

@developer = rw

* = r

但要注意, [ / ] 和[ test:/ ]并列的关系,也就是说,如果在[ / ]里定义了manager为rw,但是在[test:/]里没有写manager,那么manager对test这个项目也是没有权限的。因此不同的项目权限都要进行分配。这样每个人访问的权限就确定了。

3.测试

服务器端:

jl@jl-desktop:/$ sudo svn co file://localhost/home/svn/myproject [sudo] password for jl: A    project/aa.txt A    project/dd.txt Checked out revision 3. 客户端:这有XP下安装SVN客户端,单击鼠标右键就可以出现SVN检出字样。

在版本库URL写:http://192.168.118.109/svn/project

检出目录写C:\Documents and Settings\Administrator\桌面\SVN服务器\document\checkout

如果提示:xxxxxx/xxxx/lock pemission denied错误,是因为服务器上目录的权限没设置。

chown -R www-data /home/svn/project就可以了。

最后后提示检出完毕。

提交的时候,需要提供用用户名和密码。如果密码正确并且有权限,那么就会提交成功。版本号也会相应改变。











                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值