[转]Win7 64位搭建本地SVN服务器 Apache+Subversion
转载地址:http://blog.sina.com.cn/s/blog_4f072a7001015j5z.html
一、工具下载
- 01.SVN 服务器Subversion:Setup-Subversion-1.6.17.msi
- 02.SVN 客户端TortoiseSVN:本文选用版本为(64位)TortoiseSVN-1.6.16.21511-x64-svn-1.6.17.msi
- 03.TortoiseSVN中文语言包:本文选用版本为LanguagePack_1.6.16.21511-x64-zh_CN.msi
- 04.XAMPP(Apache+MySQL+PHP集成安装包):XAMPP版本为1.7.4
Subversion的版本和TortoiseSVN的版本配合很重要,并不是什么版本之间都可以正常使用的。
二.安装XAMPP:
一路NEXT。本文安装至C:\xampp
三.安装subversion:
一路NEXT。本文将subversion安装至C:\Subversion\
如果本机安装有360安全卫士,则会出现警告,选择允许。
四、配置Apache
01、进入Sibversion的安装目录(本文为C:\Subversion\)。
为了使 Subversion 与 dav 模块通信,需要安装 mod_dav_svn 插件,可以在 Subversion 的安装目录C:\Subversion\bin中找到。将其拷贝到 Apache 安装目录的 modules 文件夹下。接下来就是配置 Apache 的 httpd.conf 文件,让 Apache 在启动的时候加载上述模块。
02、编辑Apache的httpd.conf(C:\xampp\apache\conf)
找到以下内容:
#LoadModule dav_module modules/mod_dav.so
修改为:
LoadModule dav_module modules/mod_dav.so
即去掉前面的注释符号“#”,没有上面这句,请自行添加。完成之后再后面继续添加如下内容:
LoadModule dav_svn_module modules/mod_dav_svn.so
03、设置版本库目录:
本例中我在G盘创建了svn的管理目录,打算将版本库存放在G:\svn\project文件夹下,将如下代码添加进httpd.conf末尾。(复制代码时,注意修改”符号为英文半角)
<Location /svn/>
DAV svn
SVNListParentPath on
SVNParentPath “G:/svn/project”
< /Location>
重启Apache,至此本地环境完成。
说明:
- <Location /svn/>:版本库的url是http://localhost/svn/
- DAV svn:告诉Apache是哪个模块响应http://localhost/svn/的请求,此刻是Subversion模块。
- SVNParentPath “G:/svn/project” :告诉Subversion需查看的版本库位于G:/svn/project下,同时project下的每个子目录都是一个版本库。例如在G:/svn/project下有多个版本库 repos1,repos2 等等,可以通过 http://localhost/repos1,http://localhost/repos2 来访问。
04、通过Http访问SVN服务器
Subversion有两种运行方式,一种是基于Apache Http Server,另外一种是Subversion Standalone Server。
Apache Http Server是基于Apache Http Server的Subversion,这样做几个好处:
- A.能使用WebDAV协议。
- B.通过Apache以HTTP方式穿透防火墙,便于在互联网环境使用,能使用浏览器作为客户端工具浏览源码仓库。
- C.可以很容易的支持到SSPI(Windows域认证)和LDAP(AD?),这些都是Apache本身就支持的。
- D.能得到比较完善的Apache安全认证系统,比如SSL加密连接。
通过浏览器输入http://127.0.0.1/svn/访问版本库(一个初始版本库见下图):
- 如 果你按照上文的一步步操作,那么,目前已经可以实现通过浏览器直接访问http://127.0.0.1/svn/ 需要注意的是Location 设置中最后要加上/,应该是<Location /svn/>而不是<Location /svn>
- 如果想让“http://localhost/svn”也起作用的话,需要在</Location>的后面增加重定向的设置:RedirectMatch ^(/svn)$ $1/

一个初始版本库
这表示 Apache 的 dav_svn 模块已经可以正常工作了。用户可以使用任何一种 Subversion 的客户端通过 Http 协议访问你的版本库。
现在你的版本库任何人都可以访问,并且有完全的写操作权限。也就是说任何人都可以匿名读取,修改,提交,以及删除版本库中的内容。
五、安装TortoiseSVN:
先安装TortoiseSVN-1.6.16.21511-x64-svn-1.6.17.msi再安装中文语言包LanguagePack_1.6.16.21511-x64-zh_CN.msi

本文所用软件及其版本
注意:如果你的系统安装有卡巴斯基这类杀毒软件,请务必将TortoiseSVN安装目录bin目录下的TortoiseProc.exe设置为信任程序,否则可能导致在使用TortoiseSVN“导入”至版本库功能时发生错误。如图:

卡巴斯基
六、测试SVN
- 假设在你的D盘有一个项目workspace文件,那么我们在G:\svn\project下创建一个同名文件夹:G:\svn\project\workspace
- 右键点击G:\svn\project\workspace文件,TortoiseSVN->在此创建版本库(Y)(英文版为Tortoise->Create repository here)
- 然后你就会看到G:\svn\project\workspace 里面多了conf, db, hooks, lock…等文件,版本库创建成功。
- 返回D盘的workspace,右键点击该文件夹,执行TortoiseSVN->导入(I)(英文版为Tortoise->Import)
- 在弹出的对话框中,版本库URL内输入: http://localhost/svn/workspace/trunk/。这里的http://localhost/svn/就相当于G:\svn\project\。
- 然后把D盘里面的workspace删除,我们好测试是否成功了。
- 在任何空白文件夹里面,右键点击SVN检出(K)(英文版为SVN Checkout),版本库URL输出http://localhost/svn/workspace/trunk/,将得到workspace的项目源文件。
关于上文提到的trunk:
我们在一些著名开源项目的版本库中,通常可以看到trunk, branches, tags等三个目录。由于SVN固有的特点,目录在SVN中并没有特别的意义,但是这三个目录却在大多数开源项目中存在…(详细介绍)
—————————————— END ————————————————
关于SVN访问权限控制的介绍:
通过上文的相关操作,任何人都可以匿名读取,修改,提交,以及删除版本库中的内容。显然大部分场合这是不符合需求的。那么如何进行权限设置呢,Apache 提供了基本的权限设置:
配置SVN访问权限
一.权限设置
首先需要创建一个用户文件。Apache 提供了一个工具 htpasswd,用于生成用户文件,可以在 Apache 的安装目录下找到。具体使用方法如下:
01.创建passwd文件并添加用户/密码:
svn的访问权限将由passwd文件中的用户名/密码来限制。
运行->cmd进入DOS命令操作窗口,并切换当前目录到C:\xampp\apache\bin,输入如下命令:
htpasswd -c G:\svn\project\conf\passwd username
passwd是文件名,username是你的用户名,根据实际需要自行命名,我们将文件创建到G:\svn\project\conf\目录下(相关目录请自行创建)。–c表示创建,第二次就不需要写–c了。(win平台默认对密码MD5加密)
具体操作如下图:

创建passwd文件并添加用户/密码
关于htpasswd命令更多其他操作请借助Google。
接下来修改 httpd.conf,在 Location 标签中加入如下内容:
AuthType Basic
AuthName “svn repos”
AuthUserFile “G:/svn/project/conf/passwd”
Require valid-user
操作完成之后,重启Apache。 打开浏览器访问版本库。Apache 会提示你输入用户名和密码来认证登陆了,现在只有 passwd 文件中设定的用户才可以访问版本库。也可以配置只有特定用户可以访问,替换上述 “Require valid-user” 为 “Require user tony robert” 将只有 tony 和 robert 可以访问该版本库。
说明:
- AuthType Basic:激活基本认证,用户名/密码。
- AuthName “Subversion Repositories” :弹出输入认证信息框的说明,支持中文。
- AuthUserFile “G:/svn/project/conf/passwd” :指定用来存储认证用户名和密码的文件。
- require valid-user :指定只有输入正确用户名/密码的用户才可以正常访问http://localhost/svn/ 。
有的时候也许不需要这样严格的访问控制,例如大多数开源项目允许匿名的读取操作,而只有认证用户才允许写操作。为了实现更为细致的权限认证,可以使用 Limit 和 LimitExcept 标签。例如可以继续在 Location 标签中添加如下内容:
<LimitExcept GET PROPFIND OPTIONS REPORT>
require valid-user
< /LimitExcept>
如上配置将使匿名用户有读取权限,而限制只有 passwordfile 中配置的用户可以使用写操作。如果这还不能满足你的要求,可以使用 Apache 的 mod_authz_svn 模块对每个目录进行认证操作。
02. 建立控制用户访问权限的文件authz
首先需要让 Apache 将 mod_authz_svn 模块加载进来。在 Subversion 的安装目录中找到 mod_auth_svn 模块,将其拷贝到 Apache 安装目录的 modules 子目录下。
然后修改 httpd.conf 文件,找到
LoadModule dav_svn_module modules/mod_dav_svn.so
在其后面加上
LoadModule authz_svn_module modules/mod_authz_svn.so
现在可以在 Location 标签中使用 authz 的功能了。一个基本的 authz 配置如下:
<Location /svn/>
DAV svn
SVNListParentPath on
SVNParentPath “G:/svn/project/”
AuthType Basic
AuthName “Subversion Repositories”
AuthUserFile “G:/svn/project/conf/passwd”
AuthzSVNAccessFile “G:/svn/project/conf/authz”
Satisfy Any
Require valid-user
< /Location>
说明:AuthzSVNAccessFile “G:/svn/project/conf/authz” :指定用来存储访问版本库控制权限的文件。
这里的Apache配置文件中,不需要加入<Limit>或<LimitExcept>标签。但加入了Satisfy Any的设置,其表示在同时启用了Allow(允许)和Require的情况下,指定相关策略的,一共有两个备选值,All表示用户必须同时满足Allow和Require的条件,而Any则是满足其中之一即可。
这这里,Satisfy Any用于允许先用匿名方式尝试访问,并根据authz对匿名用户的控制给予访问权限。若没有这句话,则无论authz中是否加入了“*=r”的写法,匿名用户都是无法访问的。
AuthzSVNAccessFile 指向的是 authz 的策略文件,详细的权限控制可以在这个策略文件中指定,如:
#两个分组:admin组,developers组
[groups]
admin = FUCKGFW //管理员
developers = jimmy michel spark sean steven tony robert //开发者
#在根目录下指定所有的用户有读权限
[/]
* = r
#追加 committers 组用户有读写权限
@committers = rw
#在 branches/dev 目录下指定 developers 组的用户有读写权限
[/branches/dev]
@developers = rw
#在 /tags 组下给予用户 tony 读写权限
[/tags]
tony = rw
#禁止所有用户访问 /private 目录
[/private]
* =
#给 committers 组用户读权限
@committers= r
在 G:/svn/project/中新建一个记事本文件,文件名为authz,无后缀,输入下面的内容:
[groups]
admin = FUCKGFW
[/]
* = r
@admin = rw
本范例只指定了一个管理员组,和一个管理员用户。
操作完成之后,重启Apache。
[转]Win7 64位搭建本地SVN服务器 Apache+Subversion的更多相关文章
- Windows下搭建本地SVN服务器【转】
转自:http://www.linuxidc.com/Linux/2015-01/111563.htm 本文介绍Windows下搭建本地SVN服务器的方法,网上资料比较少也比较旧,大都介绍的是旧版本S ...
- svn 使用TortoiseSVN server搭建本地SVN服务器
使用TortoiseSVN server搭建本地SVN服务器
- Oracle 11g win7 64位【桌面类 && 服务器类】安装过程
Oracle 11g win7 64位[桌面类 && 服务器类]安装过程 一.首先,根据自己的操作系统位数(32位或64位),到官网下载相应的安装程序,如下图所示. ...
- 怎样搭建本地svn服务器环境-轻松掌握版本管理
版本管理一直是程序员使用频率比较高的一个工具软件.不管你是自己使用还是提供给别人使用,svn服务器的架设是一个入门功课.今天我们先来介绍一下怎么样在本地搭建svn服务器.这种应用一般是网络不是很好,提 ...
- windows 7系统搭建本地SVN服务器的过程
Subversion是优秀的版本控制工具,其具体的的优点和详细介绍,这里就不再多说. 首先来下载和搭建SVN服务器. 现在Subversion已经迁移到apache网站上了,下载地址: http:// ...
- win7 64位搭建scrapy
http://blog.csdn.net/it_yuan/article/details/23856713 win7 64位系统依赖的scrapy文件链接:http://pan.baidu.com/s ...
- win7 64位搭建scrapy(转)
win7 64位系统依赖的scrapy文件链接:http://pan.baidu.com/s/1mgJS7BM 一个很好的python 64位包下载页面:http://www.lfd.uci.edu/ ...
- Mac搭建本地svn服务器,并用Cornerstone连接服务器
Mac默认已经安装了svn,我们只需要进行配置并开启就可以了 首先我们可以验证一下是否安装了svn,打开终端,输入命令 svnserve --version 这里可以看到目前svn的版本号,说明已经安 ...
- 阿里云服务器CentOS 5.7(64位)安装配置LAMP服务器(Apache+PHP5+MySQL)
一.快速安装Apache+PHP5+MySql ----------------------------------------------------- 补充:由于163的yum源上只有php5.1 ...
随机推荐
- ArcGIS JavaScript API异常之onExtentChange事件覆盖onClick事件
利用Esri官方提供的聚合类进行聚合,由于数据较多,为了加快速度,在聚合之前对当期范围进行判断,如果不在当前视图范围的,就不聚合了. 所以,由于Esri官方的类是监听了zoomEnd事件,如下代码 t ...
- hdu Hike on a Graph
此题是道bfs搜索的题目.bfs的精髓就是找到下一步的所有可能然后存储起来,有点暴力的感觉,这题就是每步中 所有的可能都入队,然后一一 判断.这道题的题意是 : 给你一幅完全图,再给你三个盘,目的是把 ...
- 使用UEditor 的时候,ajax注意使用同步的方法
使用UEditor 的时候,ajax注意使用同步的方法去读取后台数据,然后填写到前端的文本域当中.
- jquery_简单介绍
jquery是一个优秀的javascript的库. jquery对象是通过jquery包装DOM对象产生的对象 配置jquery 在<head> <script src=&quo ...
- SpringMvc简单实例
Spring MVC应用一般包括4个步骤: (1)配置web.xml,指定业务层对应的spring配置文件,定义DispatcherServlet; (2)编写处理请求的控制器 (3)编写视图对象,例 ...
- C遇到的问题
1. stdout-------printf输出到stdout,并在终端打印 stderr--------perror错误输出到stderr,并在终端打印 2. usleep(1)//代表一微妙 sl ...
- php初学第一课
php:强大的脚本语言 B/S:brower:浏览器 server:服务器 C/S: client:客户端 server:服务器 一.php嵌入页面的标记 1. <?php ?> # ...
- memcache的windows下的安装和简单使用
原文:memcache的windows下的安装和简单使用 memcache是为了解决网站访问量大,数据库压力倍增的解决方案之一,由于其简单实用,很多站点现在都在使用memcache,但是memcach ...
- MySQL 范式
在做笔试题的时候遇到一些判断范式的题,就去找了些博客与书来看,觉得这个是比较好理解的: 第一范式:确保每列的原子性. 如果每列(或者每个属性)都是不可再分的最小数据单元(也称为最小的原子单元),则满足 ...
- Java中Native关键字的作用
初次遇见 native是在 java.lang.Object 源码中的一个hashCode方法: 1 public native int hashCode(); 为什么有个native呢?这是我所要学 ...