一、软件准备:
- apache 的web 服务器 :httpd-2.2.17-win32-x86-openssl-0.9.8o.msi
- subversion 软件:Setup-Subversion-1.6.0.msi
二、软件安装与配置
安装web 服务器到D:/Program Files/asf/Apache2.2 ;环境变量“path” 增加“D:/Program Files/asf/Apache2.2/bin” ;
安装subversion 到D:/Program Files/Subversion ,环境变量“path” 增加“D:/Program Files/Subversion/bin” ;
编辑apache 安装目录下的conf 目录下的httpd.conf 文件( 推荐用editplus)
把这两行的注释去掉
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
然后把Subversion 中bin 下的intl3_svn.dll 、libdb44.dll 、libeay32.dll 、ssleay32.dll4 个dll 文件放到apache 的bin 文件夹下,然后把Subversion 中bin 下的mod_authz_svn.so 和mod_dav_svn.so 复制到apache 的modules 文件夹下。
重启apache ,确保apache 能重启后继续下面的操作 。
在apache 的httpd.conf 中追加入:
<Location /svn/>
DAV svn
# 指向SVN Repository 的ROOT
SVNListParentPath on
SVNParentPath F:/svntest
AuthType Basic
AuthName "Subversion repositories"
AuthUserFile F:/svntest/passwd
AuthzSVNAccessFile F:/svntest/authz
Require valid-user
## Satisfy Any
</Location>
在F:/svntest 下用“svnadmin” 命令创建两个配置库“repos1” 和“repos2” ,将两个库里面的conf 目录下的svnserver.conf 都配置如下参数
password-db = ../../passwd
authz-db = ../../authz
然后将authz 和passwd 拷贝出来到F:/svntest 下并进行个性化配置。
三、测试步骤
我的配置为:
--------authz--------------
[aliases]
[groups]
repog1 = cc1
repog2 = cc2
[/]
* = rw
[repos1:/]
@repog1 = rw
* =
[repos2:/]
@repog2 = rw
* =
------------------------------
--------------passwd----------
cc1:123456
cc2:1234
------------------------------
备注:passwd 文件的目录可以手动添加明文密码,也可以用apache 安装目录下的bin 目录中的httpwd 来加密,详情请参见 httpasswd - 管理用于基本认证的用户文件
-----------------------------------------------
今天我达到的结果:
浏览http://localhost/svn/ 显示
-------------------------
Collection of Repositories
repos1/
repos2/
Powered by Subversion version 1.6.0 (r36650).
-------------------------
浏览http://localhost/svn/repos1/ 显示
--------------------------
repos1 - Revision 9: /
V1.01Java 编程规范(Java Programming Conventions).doc
WebService simple.doc
Windows 下安装pache+php+mysql+bugfree.doc
Powered by Subversion version 1.6.0 (r36650).
--------------------------
浏览http://localhost/svn/repos2/ 显示
--------------------------
repos2 - Revision 9: /
JBS.doc
JVM 学习笔记.doc
java 学习目录.doc
java 开源大全.doc
java 疑难.doc
java 知识点归纳.doc
java 面试集锦.doc
jsp 六大对象.doc
linux 试题.doc
---------------------------------------------
Powered by Subversion version 1.6.0 (r36650).
--------------------------
因为权限问题,repos1 切换到repos2 需要关闭浏览器重开窗口。
用 TortoiseSVN 浏览
四、配置要点:
(1)apache的配置要一步步来,成功了才进行下一步配置。如果最后才重启看配置成功没,会吃亏:不知道配置错在哪个环节。
(2)配置文件要仔细写。注意中英文、全与半角、空格与否。
(3)注意看apache的日志。当我苦思鉴权配置失败时,根据浏览器的“Forbidden You don't have permission to access /svn/repos2/ on this server.”死人没看出来
,后来根据apache的log中的“[Fri Jun 10 18:53:14 2011] [error] [client 127.0.0.1] Failed to load the AuthzSVNAccessFile: F://svntest//authz:6: Section header must start in the first column”才知道是鉴权文件的格式错了,注意用ie9看不到forbidden信息,我用火狐4才看到。
后续工作 :打算将用户信息保存到LDAP中,将apache与LDAP server整合…………