安装 ApacheSVN 服务器教程

转载:http://indian.blog.163.com/blog/static/10881582007112415021751/

Subversion的设计包括一个抽象的网络层,这意味着版本库可以通过各种服务器进程访问。理论上讲,Subversion可以使用无限数量的网络协议实现,目前实践中存在着两种服务器。
        SVNServer:svnserve是一个小的(也叫轻型的)、独立服务器,使用自己定义的协议和客户端。(作者注:以下称这种服务器为“svnserver服务器”,上面的安装配置就是安装svnserver服务器。)
        ApacheSVN:Apache是最流行的web服务器,通过使用mod_dav_svn模块,Apache可以访问版本库,并且可以使客户端使用HTTP的扩展协议WebDAV/DeltaV进行访问。(作者注:以下称这种服务器为“ApacheSVN服务器”)

通过 Http 协议访问版本库是 Subversion 的亮点之一。ApacheSVN服务器具备了许多svnserve服务器没有的特性,使用上更加灵活,但是有一点难于配置,灵活通常会带来复杂性。

由于 Subversion 需要版本化的控制,因此标准的 Http 协议不能满足需求。要让 Apache 与 Subversion 协同工作,需要使用 WebDAV(Web-based Distributed Authoring and Versioning:)Web 分布式创作和版本控制)。WebDAV 是 HTTP 1.1 的扩展,关于 WebDAV 的规范和工作原理,可以参考 IETF RFC 2518 (http://www.ietf.org/rfc/rfc2518.txt)。

一、必备条件
为了让你的版本库使用HTTP网络,你必需具备以下几个条件:

1、配置好httpd 2.2.x,并且使用mod_dav启动。
2、为mod_dav安装mod_dav_svn插件。
3、配置你的httpd.conf,使http协议能访问版本库。
apache+svn结合

1. 安装svn服务器
2. svn服务器如果下载的是一个压缩包。解压即可。我是一个exe安装程序。装好后位于C:\Program Files (x86)\Subversion
3. 测试svn。进入svn的服务器目录,进入bin目录,svnadmin.exe create D:\svn_test\svntest
create是创建的意思。 D:\svn_test\svntest表示会把svntest应用穿件在D:\svn_test
可以看到目录结构

或者使用图形化TortoiseSVN来操作,在svntest右击,TortoiseSVN,create repository here
 
运行
svnserve.exe --daemon --root D:\svn_test
访问可以看到

这还是一个空目录。


结合apache
1. 安装apache,不说明。
2. 拷贝svn所在目录的的bin目录下面的文件 intl3_svn.dll、libdb44.dll、mod_authz_svn.so、mod_dav_svn.so到apache目录下面的modules目录
3. 修改httpd.conf 文件。把
#LoadModule dav_module modules/mod_dav.so去掉前面的#符号,在下面添加
LoadModule dav_svn_module modules/mod_dav_svn.so,这句必须写在LoadModule dav_module modules/mod_dav.so后面,因为它依赖于mod_dav.so
4. 添加
< Location /mysvn/>
  DAV svn
  SVNPath D:\svn_test\svntest
</Location>

DAV svn表示会被mod_dav_svn.so处理。
SVNPath版本库所在目录
/mysvn表示访问路径
测试

5. 基于httpd的验证
使用htpasswd.exe
创建用户文件
htpasswd.exe –c D:\svn_au\passwd.conf root
root是用户名,自己设置。会让你输入密码
创建的时候,用户名必须设置一个

如果要添加新用户
htpasswd [-m] 你的用户文件所在路径,如E:\usr\Apache2.2\bin\passwd.conf 新用户名
-m表示使用md5加密。这个是可选的。

修改密码
htpasswd [-m] 你的用户文件所在路径,如E:\usr\Apache2.2\bin\passwd.conf 已经存在的用户。如果用户不存在,会创建新用户

删除用户,D必须大写
htpasswd –D E:\usr\Apache2.2\bin\passwd.conf username
修改http.conf,把刚才的<Location>配置,添加内容。
<Location /mysvn>
DAV svn
SVNPath D:\svn_test\svntest
AuthType Basic #使用简单的安全控制。基于账户密码。
AuthName "input password #输入密码的地方的对话
AuthUserFile D:/svn_au/passwd.conf #注意这里使用/,而不是\
Require valid-user #只有在用户验证成功才能访问
</Location>
注意上面的注释不要出现在实际的配置中。因为apache无法解析配置中的中文
测试


账号密码输入成功后


6. 基于组策略的安全控制
首先需要让 Apache 将 mod_authz_svn 模块加载进来。将apache配置中添加
LoadModule authz_svn_module modules/mod_authz_svn.so

修改Location的配置
<Location /mysvn/>
DAV svn
SVNListParentPath on #开启父目录功能
SVNParentPath D:\svn_test # 这里使用SVNParentPath代替了SVNPath,这个是所有版本库的父目录(这里的目录不再是单个svn库的目录了。每个svn库文件夹都在这个目录下面)。这里可能让多个版本库存在
AuthzSVNAccessFile D:/svn_au/bin/access.conf #访问策略。等下将给出里面内容
Satisfy Any
Require valid-user
AuthType Basic
AuthName "input password"
AuthUserFile D:/svn_au/passwd.conf
</Location>
策略文件
access.conf,r表示读权限,rw读写权限
[groups]
admin = root,liyixing

[/]
* = r
@admin = rw

解释:
配置组信息
[groups]
#组committers拥有用户paulex,richard
committers = paulex, richard
developers = jimmy, michel, spark, sean

#配置访问权限
#@xxx表示xxx组
#没有@符号的表示用户
#*表示所有用户
#[路径]对路径进行控制
#这里允许根路径的访问
[/]
* = r
@committers = rw

#针对版本库的配置
#[版本库:路径]
#[版本库:路径]
[mysvn:/a]
* = r
@committers = rw

7. 基于组策略的权限控制,添加用户
1. 增加用户
htpasswd [-m] 你的用户文件所在路径,如D:\svn_au\passwd.conf 新用户名名
查看自己的用户文件所在路径,可以查看httpd.conf,查找AuthUserFile
2. 添加用户到组,打开组文件,在相应的组中添加用户。如果忘记了自己的组文件所在路径,以查看httpd.conf,查找AuthzSVNAccessFile。重启apache

你可能感兴趣的:(apache,应用服务器,SVN,网络协议,subversion)