架设Apache Http server + SVN服务器

安装 Apache

1.      从Apache网站http://httpd.apache.org/download.cgi下载最新版本的Apache,请确定你下载的版本高于2.0.54-1.3.xx的版本不能工作!同样,低于2.0.54的版本不能与Subversion 1.2一起工作,因为Apache低于2.0.54的Windows版本的编译存在问题。

2.      一旦你有了Apache2安装程序,你可以双击它,然后它会指导你的安装过程,请确认你输入的server的URL正确(如果你的服务器没有dns名称,请直接输入IP地址)。我建议安装Apache为所有用户,在80端口,作为一个服务。注意: 如果你已经有了IIS或其他监听80段口的程序,安装会失败,如果发生这种情况,直接到程序的安装目录\Apache Group\Apache2\conf,打开httpd.conf。编辑文件的Listen 80为其他可用的端口,例如Listen 81,然后重新启动-这样就不会那个问题了。

3.      现在可以测试Apache服务器了,将浏览器指向http://localhost/-将会看到一个预先配置的网站。

安装 Subversion

1.      http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91下载最新版本的Subversion。

2.      运行Subversion安装程序,并根据指导安装,如果Subversion认识到你安装了Apache,你就几乎完成了工作,如果它没有找到Apache服务器,你还有额外的步骤。

3.     从Subversion的bin目录(通常是c:\program files\Subversion\bin),找到文件mod_dav_svn.somod_authz_svn.so,复制这些文件到Apache的模块目录(通常是c:\program files\apache group\apache2\modules)。

4.      从Subversion的bin目录将libdb*.dllintl3_svn.dll复制到Apache的bin目录。

5.      使用记事本之类的文本编辑器修改Apache的配置文件(通常是 C:\Program Files\Apache Group\Apache2\conf\httpd.conf),做出如下修改:

6.      去掉如下几行的注释号(删除 '#'标记):

     #LoadModule dav_fs_module modules/mod_dav_fs.so
     #LoadModule dav_module modules/mod_dav.so

7.      将下面几行添加到LoadModule部分的最后。

     LoadModule dav_svn_module modules/mod_dav_svn.so
     LoadModule authz_svn_module modules/mod_authz_svn.so

创建版本库

     你可以使用FSFS或较老但更稳定的Berkeley Database(BDB)作为版本库的后端,FSFS格式更快一点,而且可以正常运行在Windows 98,BDB格式更加的稳定,因为其经过了更长时间的验证。

1.使用命令行工具创建版本库

1.1创建一个名为SVN(例如D:\SVN\)的空文件夹,作为你的所有版本库的根。

1.2在D:\SVN\里创建另一个目录MyNewRepository

1.3打开命令行窗口(或DOS窗口),进入D:\SVN\目录,输入

      svnadmin create --fs-type bdb MyNewRepository

    或

      svnadmin create --fs-type fsfs MyNewRepository

现在你在D:\SVN\MyNewRepository创建了一个新的版本库。

2.使用 TortoiseSVN 创建版本库

           

1.1打开资源管理器

1.2创建一个新的文件夹,命名为SVNRepository

1.3右键点击新创建的目录,选择TortoiseSVN → 在此创建版本库...。

然后就会在新文件夹创建一个版本库,不要手工编辑这些文件!!!如果你得到什么警告,一定要先确定目录非空并且没有写保护。

启动 subversion服务

"C:\Program Files\Subversion\bin\svnserve.exe" -d -r e:/svn_root/project1


配置

现在你已经设置了Apache和Subversion,也建立了版本库,但是Apache不知道如何处理Subversion客户端,例如TortoiseSVN。为了让Apache知道哪个目录是用来作为Subversion版本库,你需要使用编辑器(例如记事本)编辑Apache的配置文件(通常是c:\program files\apache group\apache2\conf\httpd.conf):

1.在配置文件最后添加如下几行:

<Location /svn>

DAV svn

SVNListParentPath on

SVNParentPath D:\SVN

#SVNIndexXSLT "/svnindex.xsl"

AuthType Basic

AuthName "Subversion repositories"

AuthUserFile passwd

#AuthzSVNAccessFile svnaccessfile         

Require valid-user

</Location>

这个配置告诉 Apache 你的所有 Subversion 版本库位于D:\SVN,版本库对外的URL是: http://MyServer/svn/ 。访问被文件passwd中的用户/密码限制。

2.为了创建passwd文件,再次打开命令行提示符(DOS),来到apache2目录(通常是c:\program files\apache group\apache2)通过输入下面的命令创建新文件

bin\htpasswd -c passwd <username>

用下面的命令在已有的passwd文件里加用户:

bin\htpasswd passwd <username>

3.再次重启Apache服务。

4.将浏览器指向http://MyServer/svn/MyNewRepository(MyNewRepository是你此前创建的版本库名),如果一切正常,你会被提示输入用户名和密码,然后你会看到版本库的内容。

你刚才输入的解释是:

表 3.1. 设置 Apache 的 httpd.conf

设置

解释

<Location /svn>

意思是Subversion版本库的URL是http://MyServer/svn/

DAV svn

告诉Apache是哪个模块响应那个URL的请求-此刻是Subversion模块。

SVNListParentPath on

对于Subversion1.3或者更高版本,这个指示表示显示所有SVNParentPath下的版本库。

SVNParentPath D:\SVN

告诉Subversion需要查看的版本库位于D:\SVN之下

SVNIndexXSLT "/svnindex.xsl"

使用它可以在用浏览器浏览时更好看。

AuthType Basic

激活基本认证,就是用户名/密码

AuthName "Subversion repositories"

用来说明何时弹出要求用户输入认证信息的认证对话框

AuthUserFile passwd

指定使用的认证密码文件

AuthzSVNAccessFile

位置Subversion版本库的访问控制文件的路径

Require valid-user

指定只有输入了正确的用户/密码的用户可以访问URL

但是那只是一个例子,对于Apache你有很多的选择。

1.如果你希望所有人可以读你的版本库,但是只有特定用户可以写,你可以修改下面下面这行

   Require valid-user

成为

<LimitExcept GET PROPFIND OPTIONS REPORT>

Require valid-user

</LimitExcept>

2.使用passwd可以整体的控制对版本库的访问,但是如果你希望精确的控制版本库目录访问,你可以去掉#注释号启用下面这行

   #AuthzSVNAccessFile svnaccessfile

,并且创建Subversion的访问控制文件svnaccessfile(随意取名)。Apache将会确保只有有效的用户可以访问你的/svn目录,然后将用户名传递给Subversion的AuthzSVNAccessFile模块然后传给Apache中指定的mod_authz_svn模块,这样就可以根据Subversion访问控制文件实现更细粒度的访问控制。请注意路径可以是repos:path或简单的path,如果你不指定特定的版本库,访问控制规则会应用到SVNParentPath下所有的版本库,使用的授权策略文件的格式如下。

      mod_authz_svn模块可以根据用户名和路径实现细粒度的权限控制,对所有的Apache服务器有效,在Subversion 1.3以上版本的svnserve上也实现了路径为基础的授权。

一个可能的例子:

[groups]
admin = john, kate
devteam1 = john, rachel, sally
devteam2 = kate, peter, mark
docs = bob, jane, mike
training = zak
# Default access rule for ALL repositories
# Everyone can read, admins can write, Dan German is excluded.
[/]
* = r
@admin = rw
dangerman =
# Allow developers complete access to their project repos
[proj1:/]
@devteam1 = rw
[proj2:/]
@devteam2 = rw
[bigproj:/]
@devteam1 = rw
@devteam2 = rw
trevor = rw
# Give the doc people write access to all the docs folders
[/trunk/doc]
@docs = rw
# Give trainees write access in the training repository only
[TrainingRepos:/]
@training = rw

请注意,检查每一条路径是一件消耗极大的操作,特别是修订版本日志,服务器会检查在每一个修订版本的每一条路径是否可读,对于影响很多文件的修订将会花费很多时间。

认证和授权是不同的过程,如果用户希望获得对版本库的访问,他需要同时实现这两个步骤,对于要访问文件的普通认证请求和授权请求。

注意

※ 如果指定的是Windows的磁盘根目录,会导致一些盘符的隐藏目录也被显示出来。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值