基于APACHE 的SVN服务器端安装与配置说明
注意:apache_2.2.4-win32-x86-no_ssl.msi这个版本里没有”apache.exe”这个执行程序。所以安装了apache_2.0.55-win32-x86-no_ssl.msi这个版本。
自动配置说明:自动配置会把“mod_dav_svn.so 、mod_authz_svn.so”按照SVN自己的路径自动加载到httpd.conf文件当中。mod_dav.so、 mod_dav_fs.so有可能没有加载成功(没去掉注释号“#”),所以需要确认“mod_dav.so、 mod_dav_fs.so、mod_dav_svn.so、 mod_authz_svn.so”是否加载成功。
手动配置说明:
1) 把 <Subversion_root>/httpd/目录下的 mod_dav_svn.so 和 mod_authz_svn.so Copy到 <Apache_root>/modules/ 目录下。
2) 把 <Subversion_root>/bin/ 目录下的 libdb42.dll、libeay32.dll、以及 ssleay32.dll Copy到 <Apache_root> 底下的 bin 或 modules文件夹。
3)接着用记事本打开Apache HTTP Server 的 httpd.conf(在 <Apache_root>/conf/ 目录下),找到 LoadModule 指令,先找到以下兩行:
#LoadModule dav_module modules/mod_dav.so
#LoadModule dav_fs_module modules/mod_dav_fs.so
4)把前面的 '#' 字元刪除,然后把下面几行文字加到这群 LoadModule 指令的后面:
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
3. 重新启动 Apache HTTP Server。
注意:按理说,在配置apache的时候,如果80已经被IIS占了,我们选定8080口,但是这样反而不行,怎么办? 没关系按apache选80口,它会自动避开的80而选择8080的,这点很奇怪。
4.设置subversion的仓库路径
Ø 现在要设定 URL 路径与档案库实体路径的对应关系。
五 项目的目录结构
这里补充说明一下 ProjectA 的目录结构。在 ProjectA 项目的根目录下建立的 trunk、branches、和 tags 这三个目录是有特别意义的,它们的作用分别是:
trunk 目录用来存份目前项目正在进行开发的程序档案和文件(又称为主线,即 mainline);
branches 用来存放主线的各个仍在发展中的分支;
tags 则用来存放已经不再变动的分支,也就是其中的档案不会再修改了。
这是 Subverion 官方手册建议的目录结构安排方式,你可以自己决定要不要用这种配置方式,详细说明请参考官方手册的第五章,子标题为 "Choosing a Repository Layout"。
补充
Subversion具有两种服务模式,一个是作为Apache的模块,另一个是自定义协议的Subserve服务。
作为Apache的模块,客户端可以通过WebDAV/DeltaV协议访问Repository,而使用Subserve则使用
Subversion的自定义协议。
下表是两种服务模式的比较:
功能 Apache + mod_dav_sub Svnserve
验证方式 基于HTTPS的X.509、LDAP、NTLM或其他Apache支持的验证 CRAM-MD5或者SSH
用户帐户管理 私有的用户文件 私有的用户文件或已有的系统帐户
授权管理 blanket read/write access或单一目录的访问控制 blanket read/write access
加密 可选的SSL 可选的SSH隧道
交互性 可通过支持WebDAV的客户端访问 无交互性
Web访问 有限的内置支持,或通过第三方的工具,例如ViewCVS 通过第三方的支持,如ViewCVS
速度 稍慢 稍快
初始安装 稍复杂 相当简单
在Httpd.conf文件添加:
#SSPI authentication
<Location /repository>
DAV svn
SVNParentPath d:/repository
AuthzSVNAccessFile e:/repository/accessfile
Require valid-user
AuthType SSPI
AuthName "Subversion repositories"
# SSPI settings
SSPIAuth On
SSPIAuthoritative On
# point to domaincontroller
SSPIDomain domain.com.cn
SSPIOfferBasic On
</Location>
控制文件AuthzSVNAccessFile要作相应的修改:
[test:/]
domain\user1 = r
domain\administrator = r
[test:/1]
domain\user1 = rw
[test:/2]
domain\user1 =
domain\administrator = rw
在tortoiseSVN使用时,会提示认证,填写用户名和密码即可。
如果要按照Group的方式来控制权限,可同时建立一个groups文件,内容如下:
#格式:GroupName: username1 username2
svngroup: user1 user2
过程记录
1.Syntax error on line 961 of E:/Apache Group/Apache2/conf/httpd.conf:
DAV not allowed here
在这两行首尾添加上
<Location /svn>
DAV svn
svnpath e:/svnrepro
</Location>
2.Syntax error on line 969 of E:/Apache Group/Apache2/conf/httpd.conf:
Invalid command 'SSPIAuth', perhaps mis-spelled or defined by a module not inclu
ded in the server configuration
没有在“LoadModule auth_module modules/mod_auth.so”的前面添加“LoadModule sspi_auth_module
modules/mod_auth_sspi.so”导致的。
3.(OS 10048)通常每个套接字地址(协议/网络地址/端口)只允许使用一次。 : make_sock: c
ould not bind to address 0.0.0.0:80 no listening sockets available, shutting down
Unable to open logs
“LoadModule dav_fs_module modules/mod_dav_fs.so”前面的注释号“#”没有删除掉所致。
4。http://localhost/svn/testrepo/
Forbidden
You don't have permission to access /svn/testrepo/ on this server.
Apache/2.0.55 (Win32) DAV/2 SVN/1.4.0 mod_fastcgi/2.4.2 mod_auth_sspi/1.0.3 Server at localhost Port 80
403 Forbidden
Forbidden
You don't have permission to access /svn/ on this server.
错误 日志时出现这样的提示:
[Mon Sep 10 16:02:38 2007] [error] [client 192.168.13.11] Failed to load the AuthzSVNAccessFile: The character 'g' in rule 'admin' is not allowed in authz rules
[Mon Sep 10 16:02:38 2007] [error] [client 192.168.13.11] Access denied: 'powercn\\cmtest1' GET svn:/testrepo
把把ADMIN=POWERCN\***,改成ADMIN=***就能访问这个“版本库”了。但奇怪的是,当第六个问题解决后,再把AuthzSVNAccessFile所指示的文件里的ADMIN=***改回成ADMIN=POWERCN\***,也是对的。如下:
================================
[groups]
admin=administrator,powercn\cmtest1,powercn\lvbiying,powercn\ccadmin2
[/]
*=r
@admin=rw
[testrepo:/]
* =rw
@admin=rw
=========================================
6.使用SVNParentPath的时候,直接访问ParentPath的时候,总是得到以下错误提示:
403 Forbidden
Forbidden
You don't have permission to access /svn/ on this server.
下面的办法可以搞定它:
一、首先,Subversion1.3及以后版本支持SVNListParentPath ON,之前的版本只能使用PHP自己做。
二、Location 设置中最后要加上/,应该是<Location /svn/>而不是<Location /svn>否则可能不能访问。
三、通过“http://localhost/svn/” 来访问仓库列表,如果想让“http://localhost/svn”也起作用的话,需要在</Location>的后面增加重定向的设置:RedirectMatch ^(/svn)$ $1/ ,当然也可以采用RewriteEngine之类的办法。(我没有加这个重定向也能用这两个URL来访问。)
# svn configration
<Location /svn/>
#创建SVN父目录
DAV svn
SVNParentPath e:/svn
SVNListParentPath on
#SVNPath e:/svn/testrepo
#使用 Windows 网域账户验证
AuthType SSPI
AuthName "Subversion库用户验证"
#利用SSPI进行身份认证
AuthzSVNAccessFile e:/svn/accessfile.ini
Require valid-user
SSPIAuth On
SSPIAuthoritative On
SSPIDomain powercn.com
SSPIOfferBasic On
</Location>
RedirectMatch ^(/svn)$ $1/
发表于 @ 2007年09月10日 19:36:00|评论(loading...)