1. 软件下载

Apache 2.2 (这里有2.2.11为例)
http://httpd.apache.org/download.cgi
下载文件:apache_2.2.11-win32-x86-openssl-0.9.8i.msi
(注意,如果打算用到HTTPS,请下载包含openssl的版本)

Subversion (这里以1.5.3为例)
http://subversion.tigris.org/getting.html
下载文件:Setup-Subversion-1.5.3.msi

(此文档来源: http://www.eit.name ,原创作者: 鱼漂; 转载请注明)

2.安装规划

Apache2.2的安装路径为 D:\www\Apache
Subversion的安装路径为D:\www\Subversion
Subversion Repository的路径为D:\www\svnRep

3.安装

运行apache_2.2.11-win32-x86-openssl-0.9.8i.msi安装到D:\www\Apache目录,端口为80
运行Setup-Subversion-1.5.3.msi安装到D:\www\Subversion,安装时选择"Binding for Apache 2.2.x"

4.配置Subversion Repository

A.初始化Repository

手动创建D:\www\SVNRep目录;
打开DOS命令行cmd,进入D:\www\subversion\bin目录,运行以下命令初始化Repository:
D:\www\Subversion\bin>svnadmin create D:\www\SVNRep

B.创建Repository目录结构

在D:\www\tmp目录下创建以下目录结构:
――ProjectOne
| |
| ――branches
| |
| ――tags
| |
| ――trunk
|
――ProjectTwo
|
――branches
|
――tags
|
――trunk
使用以下命令,导入到Subversion:

D:\www\Subversion\bin>svn import D:\www\tmp file:///D:/www/SVNRep/ -m "init"
(需要特别注意的是file:///D:/www/SVNRep/的语法,这里是正斜杠)

导入完后,D:\www\tmp可以删除了

5. 配置Apache

复制D:\www\Subversion\bin目录下的mod_dav_svn.so,mod_authz_svn.soD:\www\Apache\modules目录。
配置Apache的conf/httpd.conf文件,在很多#LoadModule的后面,加下:

LoadModule dav_module modules/mod_dav.so
LoadModule dav_svn_module modules/mod_dav_svn.so
#LoadModule authz_svn_module modules/mod_authz_svn.so
<Location /svn>
DAV svn
SVNPath "D:/www/SVNRep"
AuthType Basic
AuthName "TomZhou's SVN"
AuthUserFile "D:/www/Apache/conf/svn.passwd"
Require valid-user
</Location>


使用Apache和htpasswd创建D:/www/Apache/conf/svn.passwd文件:


D:\www\Apache\bin>htpasswd -c -m D:\www\Apache\conf\svn.passwd tomzhou
New password: ********
Re-type new password: ********
Adding password for user tomzhou

D:\www\Apache\bin>htpasswd -m D:\www\Apache\conf\svn.passwd ipaddr
New password: ********
Re-type new password: ********
Adding password for user ipaddr

D:\www\Apache\bin>

注意,需要先进入到D:\www\apache\bin目录运行,同时,使用"-c"参数创建密码文件,第二次添加用户时不需要"-c"

重启Apache即可进行测试了。打开IE访问以下进址:
http://localhost/svn
输入刚才创建的用户名和密码,即可访问了。


6.按不同的目录定义权限

可以使用mod_authz_svn.so来实现,Apache配置如下:
LoadModule dav_module modules/mod_dav.so
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
<Location /svn>
DAV svn
SVNPath "D:/www/SVNRep"
AuthType Basic
AuthName "TomZhou's SVN"
AuthUserFile "D:/www/Apache/conf/svn.passwd"
AuthzSVNAccessFile "D:/www/SVNRep/conf/authz.conf"
Require valid-user
</Location>

使用上面的方法,创建svn.passwd文件。


创建D:/www/SVNRep/conf/authz.conf文件,内容如下:

#两个分组:committers,developers
[groups]
committers = tomzhou ipaddr richard
developers = jimmy michel spark sean
#在根目录下指定所有的用户有读权限
[/ProjectOne]
* = r
#追加 committers 组用户有读写权限
@committers = rw
#在 branches/dev 目录下指定 developers 组的用户有读写权限
[/ProjectOne/trunk]
@developers = rw
#在 /tags 组下给予用户 tony 读写权限
[/ProjectOne/tags]
tomzhou = rw
#禁止所有用户访问 /private 目录
[/ProjectOne/private]
* =
#给 committers 组用户读权限
@committers= r


另外,你还可以结合Apache的Allow,Deny,Order,Satisfy等指令来配置基于IP的访问规则。


其它参考:

a.HTTPS的配置只渗及到Apache,可参考我的其它文章或CATools工具.
b.Linux下的配置方式大同小异.
c.Subversion官方的文档,对Subversion的使用和配置描述得非常清楚,有时间可以参考.


SA | 评论(0) | 引用(0) | 阅读(7453)