Windows下安装配置Apache+SVN+域认证

SVN用户多了之后管理会变得越来越繁琐,由于我有Windows域环境,于是考虑让SVN使用域用户认证。
当然SVN本身是没办法支持域认证的,我们要依赖Apache,Apache上众多模块可以满足我们的需求,本例中我们使用的均是官方提供的模块。
先下载需要的软件
Apache:在http://apache.freelamp.com//httpd/binaries/win32/ 下面有最新版本,这里我下载的是httpd-2.2.17-win32-x86-openssl-0.9.8o.msi
SVN服务端有很多,有兴趣的可以去http://subversion.apache.org/packages.html 找自己喜欢的,我下载的是http://sourceforge.net/projects/win32svn/上的Setup-Subversion-1.6.13.msi
好了,经过N个下一步以后,重启使svn的path目录生效,接下来我们开始配置

首先确定一下SVN主目录,如D:\SVN,我们所有SVN库都放到这个文件夹下
然后先创建一个库用于配置测试

1
2
cd d:\svn
svnadmin create test

接下来拷贝SVN的模块文件(mod_authz_svn.so和mod_dav_svn.so在Subversion\bin目录下)到Apache的modules文件夹下
修改Apache的conf/http.conf文件
增加模块,找到

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

修改为

1
2
3
4
LoadModule dav_module modules/mod_dav.so
LoadModule dav_fs_module modules/mod_dav_fs.so
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so

增加svn和域认证的配置,这里我们使用svn为主目录做配置,不单独配置库的目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
DAV svn
# SVNPath c:/subversion/repositories/repo1
SVNParentPath d:/svn
SVNListparentPath on
Order allow,deny
Allow from all
AuthType Basic
AuthBasicProvider ldap
AuthzLDAPAuthoritative off
AuthName "SVN Server"
AuthzSVNAccessFile d:/svn/svn.authz
AuthLDAPURL "ldap://dc.local/DC=dc,DC=local?sAMAccountName?sub?(objectClass=*)"
AuthLDAPBindDN "CN=apache_bind,CN=users,DC=example,DC=com"
AuthLDAPBindPassword "password"
#AuthLDAPFollowReferrals off
AuthLDAPGroupAttributeIsDN on
AuthLDAPGroupAttribute member
#SSLRequireSSL
#require ldap-group CN=svnusers,CN=Users,DC=example,DC=com
require valid-user

根据自己实际情况在进行修改,然后再创建d:/svn/svn.authz文件,这里为了测试方便,所有域用户都可以读写,生产应用的话根据自己需要设置权限即可

1
2
[/]
* = rw