所用到的软件以及下载,基本上按照安装的先后顺序来排列.
Apache 2.0.58
http://httpd.apache.org/
Subversion
1.4.6
http://subversion.tigris.org/
SubVersion 安装完毕后,开始进行基本配置.
首要问题就是设置访问方式。
Subversion支持两种方式,一种是svn协议的,一种是基于Http的,也就是之前我们安装Apache的目的。
两种使用方式互有优劣,主要是svn用于内网方便,速度快,占用CPU相对低,但配置权限不太好,访问方式也不利于通过防火墙。
我采用Apache方式,放弃Subversion本身的用户管理方式,采用Windows 域账号设置。
因此需要安装 mod_auth_sspi.so
http://tortoisesvn.tigris.org/mod_auth_sspi.zip 下载后的文件解压缩放到Apache目录下的Modules就可以。
使用Apache方式,重点在于Apache的httpd配置文件的正确设置。
对于需要启用的模块,要正确输入路径和名称,保险的办法是都复制到Modules目录下。另外此处的先后顺序也不能乱。
#
Windows authentication module
LoadModule sspi_auth_module modules
/
mod_auth_sspi
.
so
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
#
subversion modules
LoadModule dav_svn_module
"
C:/Program Files/Subversion/bin/mod_dav_svn.so
"
LoadModule authz_svn_module
"
C:/Program Files/Subversion/bin/mod_authz_svn.so
"
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
其他需要增加的Module类似不再叙述。
在httpd.conf 最后加上Subversion目录的访问权限设置.
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
这个配置好之后,接下来就需要开始配置AuthzSVNAccessFile了。这个文件的写法,最重要是要理解路径为基础的授权。详细说明见参考文档1
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
在以上的例子中,首先配置了用户组,其次按照项目库的方式建立了分别的访问权限。[/]是针对所有的项目库的设定。
注意: 此处的用户名都是小写,原因就是前面我们已经设置了将域账号自动按照小写来验证。这里需要特别注意,因为域验证的时候写用户名有三种可能性:
A Domain\Jimjiang B domain\jimjiang C jimjiang
针对这三种可能性对应,就一定要符合前面在配置文件中的设置,一定不能错。要小写,就一定要给小写的用户名,要省略域名,就不要再打域名。有关这个地方,请参见 参考文档2,老外有人专门作了一组测试。
在配置成功后,就可以用客户端访问以Http打头的SVN仓库了,输入正常的域账号就应该可以打开相应的项目库。
首先是设置版本库, 为方便起见,可以先把Subversion的客户端软件安装好,可以避免用命令行方式来操作Subversion.
设置版本库时,可以先建立一个项目的模板文件夹, 里面的目录结构如下:
目录结构中的branches\tags\trunk是按照建议创建的,基本上每一个项目库都应该是包括这几个目录的。
建立这个模版文件夹的目的,就是在于以后新建项目库的时候,可以用这个文件夹直接创建,从而自动为项目库增加以上的文件夹结构。
建立这个模版文件夹的目的,就是在于以后新建项目库的时候,可以用这个文件夹直接创建,从而自动为项目库增加以上的文件夹结构。
选用的Subversion客户端软件
TortoiseSVN-1.4.8.12137-win32-svn-1.4.6.msi
http://tortoisesvn.tigris.org/
LanguagePack-1.4.8.12137-win32-zh_CN.exe
http://tortoisesvn.tigris.org/
用于Visual Studio 的插件
VisualSVN.v1.3.2.for.VS
参考文档:
3. http://raibledesigns.com/wiki/Wiki.jsp?page=ApacheSSL
以上为安装Subversion的必要软件.下面是为了给Subversion增加Http方式访问的版本浏览系统而选择安装的ViewVC及其配套的插件.