`
zizhu8
  • 浏览: 62150 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

windows安装基于Apache的SVN服务器(包括SSL配置)

 
阅读更多

原文地址:http://bbs.iusesvn.com/thread-158-1-1.html

翻译整理: PCplayer


关键词:subversion安装服务器配置apachessl
最后更新:2007-8-19
版本:v1.0

修改历史:
v0.1 2006-08-06
v0.2 2006-09-10 加入ssl的配置
v0.21 2006-09-13 修正2.3配置中一个错误(由blair1978 报告)
v0.23 2006-09-26 在附件1中添加两个必要文件,不然无法创建SSL证书
修正一个创建证书的命令错误
v0.26 2006-10-16 更新mod_ssl_etc.rar(openssl必需软件包)中的mod_ssl.so,由sunbeam在
http://bbs.iusesvn.com/thread-418-1-1.html提供
v1.0 2007-8-19 告知已支持Apache2.2.4

转载请注意原文出处、版本、作者(译者)http://bbs.iusesvn.com/thread-158-1-1.html
--------------------------------------------------------------------------------

1. 引言
2. 安装过程
2.1. 安装Apache
2.2. 安装Subversion
2.3. 配置
2.4. 使用SSL来保护你的服务

摘要

本文是TortoiseSVN1.3.5帮助中关于配置服务器一节的翻译,根据行文需要做了一些调整与增减。英文原文参见TortoiseSVN1.3.5帮助的3.1. Apache Based Server。

要使用TortoiseSVN(或者其它的Subversion客户端),你要有一个存放版本库的地方。你可以将版本库存放在本机,使用file://协议来访问,也可以将它们放在一个服务器上,使用http://或svn://协议来访问。两种服务器协议(http://和svn://)也可以被加密成https://及svn+ssh://。下面将一步一步地为你展示如何在windows上配置这样一个服务器。

如果你没有服务器或者你只想单独地工作,那么将版本库存放在本机并使用file://协议来访问是你最好的选择,这样的话,你可以略过本文。

注:目前windows下的subversion有专门的for apache2.2.x版本,可以跟Apache2.2.x配合,不过本文所带的附件只在Apache2.0.x上测试过

1. 引言
在所有的Subversion服务器配置方式中,基于Apache的是最灵活的。虽然配置起来有一点点复杂,但是它提供了其它方式所没有的好处:
WebDAV
基于Apache配置的Subversion服务器使用了被许多其它程序支持的WebDAV协议。举个例子,你可以在Windows的资源管理器中将这样的一个版本库挂载成一个“Webfolder”,然后像文件系统中的其它文件夹一样访问它。

浏览版本库
你可以在不安装Subversion客户端的情况下,使用浏览器来浏览版本库中的内容。这将使得更大范围的用户可以访问你的数据。

用户验证
你可以使用任何Apache支持的验证机制,包括SSPI和LDAP。

安全
Apache是非常的稳定和安全,因此你的版本库自然而然地拥有同样的安全性。包括SSL加密。
2. 安装过程
2.1. 安装Apache
安装Apache前,你要有一台运行Windows2000、Windows XP + sp1或Windows2003的电脑

警告:请注意,没安装Service Pack 1的Windows XP将导致错误的网络数据从而破坏你的版本库!

http://httpd.apache.org/download.cgi最新版本的Apache Web服务器。确保你下载的版本大于2.0.54。2.0.54版本的Apache将不能与Subversion 1.3.xx配合工作。而且,小于2.0.54的Apache也因为在windows上的编译存在一个bug而导致不能与subversion1.2配合使用。

一旦你已经有了Apache2的安装程序,你可以双击它,它将引导你完成整个安装过程。请确保你输入正确的服务器URL(如果你的服务器没有DNS名称,你可以直接输入IP地址)。我建议你将Apache安装成 for all Users,on Port 80,as a service。注意:如果你已经有一个IIS或者其它的程序使用80端口,安装可能会失败。如果是这样,你可以到程序目录下的Apache Group\Apache2\conf目录中找到文件httpd.conf,将其中的Listen 80改成一个不用的端口,比如Listen 81。然后重新运行这个安装程序,这次应该不会再有问题了。

现在你可以在你的浏览器中键入http://loccalhost,如果呈现了一个已经配置好的网站,那么你的Apache就安装成功了。

警告

如果你将Apache安装成一个服务,它将以本地system帐户来运行。为Apache创建一个单独的用户来运行它将会更安全一些。

请确保运行Apache的用户有版本库的完全访问权限(右键版本库目录->属性->安全)。要不然,用户将无法提交他们的更改。

就算Apache以本机system来运行,你也要设置它能完全读写版本库目录。

如果没有为Apache配置这个许可,用户将会得到"禁止访问"的错误信息,在Apache的错误日志中表现为错误500。

2.2. 安装Subversion
http://subversion.tigris.org/ser ... entList?folderID=91(英文)

http://bbs.iusesvn.com/forum-7-1.html中文)下载最新版本的Subversion。

运行Subversion安装程序,如果安装程序能够识别你已经安装了Apache,那么你的安装基本上就OK了。如果它不能,那么你要做一些额外的步骤。
注:如果你先安装Apache,再安装Subversion,正常情况下下面的工作(2.3配置前)Subversion安装程序已经帮你完成了
使用资源管理器,进入Sibversion的安装目录(通常为c:\program files\Subversion),找到文件httpd/mod_dav_svn.so和mod_authz_svn.so,将它们拷贝到Apache的modules目录(通常为c:\program files\apache group\apache2\modules)。

从Subversion的安装目录拷贝文件libdb43.dll到Apache的modules目录。

使用如记事本之类的文本编辑器编辑Apache的配置文件(通常为c:\program files\apache group\apache2\conf\httd.conf),修改以下内容:

去掉以下行的注释(将开头的#删除):
  1. #LoadModule dav_fs_module modules/mod_dav_fs.so
  2. #LoadModule dav_module modules/mod_dav.so
复制代码
在LoadModule节的最后添加以下两行:
  1. LoadModule dav_svn_module modules/mod_dav_svn.so
  2. LoadModule authz_svn_module modules/mod_authz_svn.so
复制代码
2.3. 配置
现在,你已经安装了Apache和Subversion,但是Apache还不知道如果处理像TortoiseSVN一样的Subversion客户端。要让Apache知道哪个URL将被Subversion使用,你要像下面这样编辑Apache的配置文件(通常在c:\program files\apache group\apache2\conf\httpd.conf):

在配置文件的最后添加下面这些行:
  1. <Location /svn>
  2. DAV svn
  3. SVNParentPath D:\SVN
  4. AuthType Basic
  5. AuthName "Subversion repositories"
  6. AuthUserFile D:\passwd
  7. #AuthzSVNAccessFile D:\svnaccessfile
  8. Require valid-user
  9. </Location>
复制代码
这样配置表示:你所有的版本库将位于D:\SVN目录下,要访问你的版本库可以使用这样的URL:http://MyServer/svn/,访问权限将由passwd文件中的用户名/密码来限制。

要创建passwd文件,可以打开命令行(DOS窗口),将当前目录切换到apache2目录(通常为c:\program files\apache group\apache2),然后打入以下命令以创建文件:
  1. bin\htpasswd -c passwd <username>
复制代码
此命令执行bin目录下的htpasswd.exe来创建一个密码文件,重启Apache服务。

将你的浏览器指向http://MyServer/svn/MyNewRepository(MyNewRepository是你之前创建的Subversion版本库)。如果一切正常,你将被提示输入用户名密码,输入正确的用户名密码后你就可以看到版本库中的内容了。

对你刚刚输入的apache配置作一些简短的说明:
<Location /svn>

意味着可以通过像这样的URL(http://MyServer/svn)来访问Subversion版本库

DAV svn

告诉Apache哪个模块负责服务像那样的URL--在这里就是Subversion模块

SVNListParentPath on

在Subversion 1.3及更高版本中,这个指示器使得Subversion列出由SVNParentPath指定的目录下所有的版本库

SVNParentPath D:\SVN

告诉Subversion在目录D:\SVN下寻找版本库

AuthType Basic

启用基本的验证,比如用户名/密码对

AuthName "Subversion repositories"

当一个验证对话框弹出时,告诉用户这个验证是用来做什么的

AuthUserFile D:\passwd

指定D:\passwd用为密码文件用来验证用户的用户名及密码

AuthzSVNAccessFile D:\svnaccessfile

指定D:\svnaccessfile来限定各个用户或组在版本库中目录的访问权限

Require valid-user

限定用户只有输入正确的用户名及密码后才能访问这个路径
----------------------------------------

上面的配置仅仅是一个简单的示例。你还可以对Apache进行许许多多的配置。

1如果你想让所有用户对版本库都有读的权限而只有特定的用户才有写的权限,你可以将这行
  1. Require valid-user
复制代码
改为
  1. <LimitExcept GET PROPFIND OPTIONS REPORT>
  2. Require valid-user
  3. </LimitExcept>
复制代码
2上面的配置使用了passwd文件将你所有的版本库作为一个单元来限定访问权限。如果你想获得更多的控制,如限定某个用户可以访问版本库中的哪个目录,可以把下面这行的#去掉:
  1. #AuthzSVNAccessFile D:\svnaccessfile
复制代码
然后用文本编辑器创建一个Subversion授权文件。Apache将确保只有有效的用户可以访问你的/svn位置,然后将用户名传到AuthzSVNAccessFile模块,这样可以依据Subversion授权文件得到更精细的权限控制。注意,路径将被指定为[库:路径]或者简单的[路径]。如果你不明确指定一个库,访问规则将应用到由SVNParentPath指定的目录下所有的版本库中。一个授权文件例子可能像这样:
  1. [groups]
  2. admin= john, kate
  3. devteam1 = john, rachel, sally
  4. devteam2 = kate, peter, mark
  5. docs = bob, jane, mike
  6. training = zak

  7. # 为所有库指定默认访问规则
  8. # 所有人可以读,管理员可以写,危险分子没有任何权限
  9. [/]
  10. * = r
  11. @admin = rw
  12. dangerman =

  13. # 允许开发人员可以完全访问他们的项目版本库
  14. [proj1:/]
  15. @devteam1 = rw
  16. [proj2:/]
  17. @devteam2 = rw
  18. [bigproj:/]
  19. @devteam1 = rw
  20. @devteam2 = rw
  21. trevor = rw

  22. #文档编写人员对所有的docs目录有写权限
  23. [/trunk/doc]
  24. @docs = rw

  25. # 培训人员可以完全访问培训版本库
  26. [TrainingRepos:/]
  27. @training = rw
复制代码
2.4. 使用SSL来保护你的服务器
以上的工作已经可以让你的svn服务器正常工作了。
如果你要更安全一些,可以配置ssl来保护你的服务器。
因为美国出口限制,默认安装的Apache服务器不支持SSL。但是你自己可以很容易地在其它地方下载到所需要的模块,然后安装它。

首先你需要SSL的必需文件。你可以http://hunter.campbus.com/或这里找到相应的软件包(或者下载本主题的附件1:mod_ssl_etc.rar(595.45 KB))。然后只要将包解开将其中的mod_ssl.so拷到Apache的modules目录、openssl.exe、libeay32.dll、ssleay32.dll拷到bin目录、conf/ssl.conf拷到conf目录。

在Apache的conf目录中用文本编辑器打开ssl.conf。

将下面这些行用#注释掉:
  1. DocumentRoot "c:/apache/htdocs"
  2. ServerName [url]www.example.com:443[/url]
  3. ServerAdmin [email]you@example.com[/email]
  4. ErrorLoglogs/error_log
  5. TransferLog logs/access_log
复制代码
修改
  1. SSLCertificateFile conf/ssl.crt/server.crt
复制代码
  1. SSLCertificateFile conf/ssl/my-server.cert
复制代码
修改
  1. SSLCertificateKeyFile conf/ssl.key/server.key
复制代码
  1. SSLCertificateKeyFile conf/ssl/my-server.key
复制代码
修改
  1. SSLMutex file:logs/ssl_mutex
复制代码
  1. SSLMutex default
复制代码
删除以下两行(如果有):
  1. <IfDefine SSL>
  2. </IfDefine>
复制代码
打开Apache配置文件(httpd.conf),去掉这行的注释
  1. #LoadModule ssl_module modules/mod_ssl.so
复制代码
Openssl需要一个配置文件。你可以从这里下载一个可工作的版本http://tud.at/programm/openssl.cnf(或者本主题附件2:openssl.cnf.rar(1.21 KB))。将它保存到bin/openssl.cnf。

下面你要创建一个SSL证书。你可以打开一个命令行窗口,然后cd到Apache安装目录(比如C:\program files\apache group\apache2),敲入以下命令:
  1. bin\openssl req -config bin\openssl.cnf -new -out my-server.csr
复制代码
你将被问及一句口令短语。请注意,不要使用简单的几个词,而应该输入一整个句子,比如一篇诗词的一部份,越长越好。同样,你还要输入你的服务器URL。然后其它的问题都是可选问答的,不过我建议你也将它们填充。

下一步,敲入以下命令:
  1. bin\openssl rsa -in privkey.pem -out my-server.key
复制代码
以及(注意,只有一行)
  1. bin\openssl x509 -in my-server.csr -out my-server.cert -req -signkey my-server.key -days 4000
复制代码
这样将创建一个4000天后才过期的证书。最后敲入:
  1. bin\openssl x509 -in my-server.cert -out my-server.der.crt -outform DER
复制代码
这些命令在Apache目录下创建了一些文件(my-server.der.crt, my-server.csr, my-server.key, .rnd, privkey.pem, my-server.cert)。将这些文件拷贝到目录conf/ssl

(比如C:\program files\apache group\apache2\conf\ssl),如果目录ssl不存在,你必须先创建一个。

重启Apache服务。

现在可以用类似这样的url来访问你的版本库了https://servername/svn/project
强制通过SSL来访问

当你配置了SSL来提高版本库安全时,你可能想禁用无SSL的http访问方式,而只允许通过https访问。要达到这种效果,你要在<Location>块加入另外一个指示器SSLRequireSSL。

一个示例<Location>块可能像这样:

<Location /svn>

DAV svn

SVNParentPath D:\SVN

SSLRequireSSL

AuthType Basic

AuthName "Subversion repositories"

AuthUserFile passwd

#AuthzSVNAccessFile svnaccessfile

Require valid-user

</Location>
分享到:
评论

相关推荐

    Ubuntu上搭建SVN服务器全攻略

    Ubuntu上搭建SVN服务器详细步骤。 目 录 1 概述 1 2 安装Ubuntu 9.10服务器 1 3 安装Apache服务器 1 4 创建SVN服务器 1 4.1 安装SVN 1 4.2 增加组 2 4.3 创建SVN仓库 2 4.4 配置Apache服务器 2 5 配置SSL 3 6 远程...

    SVN-Apache2.2.8安装配置说明

    4 SVN服务器安装配置 3 4.1 服务器软件下载 3 4.2 服务器安装 4 4.3 建立版本库(Repository) 9 4.3.1 命令行方式创建版本库 9 4.3.2 TortoiseSVN客户端创建版本库 9 4.3.3 版本库布局 10 4.4 配置用户和权限 11 ...

    winxp+svn+apache安装配置全说明

    注:如果你先安装Apache,再安装Subversion,进入Sibversion的安装目录(默认为c:\program files\Subversion),找到文件httpd/mod_dav_svn.so、mod_authz_svn.so、libdb44.dll,将它们拷贝到Apache的modules目录...

    SVN服务器配置之Apache 2.0.63

    配置SVN,折腾了很久,用了比较新版本的Apache服务器,如Apache2.2.15,但在网上查了N久资料,一直没有成功,...现在推荐给大家,SVN服务器很好的搭配是:apache_2.0.63-win32-x86-no_ssl.msi + svn-1.4.3-setup.exe

    SVN服务器配置+SVN局域网搭建+系列工具

    apache_2.2.2-win32-x86-no_ssl.msi Setup-Subversion-1.6.6.msi TortoiseSVN-1.6.12.20536-win32-svn-1.6.15.msi SVN与Apache服务器的安装配置.doc 配套的安装程序和说明,我自己也是用这一套工具搭建的SVN

    SVN客户端(TORTOISESVN)和服务器zip

    该包中包含: 1、apache_2.0.59-win32-x86-no_...5、SVNService.exe windows服务,根据他来启动SVN服务器 SVN客户端(TORTOISESVN)和服务器(SVNSERVICE)端安装步骤全过程地址:http://www.ebeil.com/view.asp?id=108

    linux下安装配置svn独立服务器的步骤分享

    file:/// 直接版本库访问(本地磁盘)。 ... 通过配置Subversion的Apache服务器的WebDAV协议。 ...与http://相似,但是包括SSL...1. svn服务器安装操作系统: Redhat Linux AS4获取svn安装包下载http://subversion.tigris.o

    一步一步教你构建SVN服务器.rar

    包括APACHE、SVN和客户端的安装及配置。 step1、安装apache服务器。 版本:httpd-2.2.15-win32-x86-no_ssl.msi 目录:E:\Apache2.2 验证安装结果:IE中输入:http://localhost,显示:"It works!" ok. step2、安装...

    svn-1.4.3-setup.exe.7z

    mod_authz_svn 模块可以根据用户名和路径实现细粒度的权限控制,它对 Apache 服务器有效,在 Subversion 1.3 以上版本的 svnserve 中也实现了基于路径的授权。 一个可能的例子: [groups] admin = john, kate ...

    SVN使用手册中文版快速入门

    跟踪Subversion客户端和Apache服务器通话最好的方法是什么? 我刚刚编译了二进制分发版本,当我尝试检出Subversion,我得到一个“Unrecognized URL scheme”错误。 为什么svn revert命令要有一个明确的目标?为什么...

    SVN使用手册中文版.chm

    跟踪Subversion客户端和Apache服务器通话最好的方法是什么? 我刚刚编译了二进制分发版本,当我尝试检出Subversion,我得到一个“Unrecognized URL scheme”错误。 为什么svn revert命令要有一个明确的目标?为什么...

    SVN局域网搭建套餐

    资源包下的工具和说明 apache_2.2.2-win32-x86-no_ssl.msi Setup-Subversion-1.6.6.msi TortoiseSVN-1.6.12.20536-win32-svn-1.6.15.msi SVN与Apache服务器的安装配置.doc

    SVN操作手册中文版网页格式

    3.7. 基于 Apache 的服务器 3.7.1. 简介 3.7.2. 安装 Apache 3.7.3. 安装 Subversion 3.7.4. 配置 3.7.5. 多版本库 3.7.6. 路径为基础的授权 3.7.7. 使用 Windows 域认证 3.7.8. 多重认证源 3.7.9. 用 SSL ...

    使用Subversion进行版本控制(针对 Subversion 1.4)

    配置和Windows注册表 配置选项 服务器 配置 本地化 理解地区 Subversion对区域设置的支持 使用外置比较工具 外置 diff 外置 diff3 8. 嵌入Subversion 分层的库设计 版本库层 版本库访问层 客户端层 进入工作拷贝的...

    Apache HTTP Service 2.2.17(阿帕奇服务端2.2.17)

    该资源是Apache HTTP Service 2.2系列的主流版本,用于作版本库的服务器端。可以兼容Win2000、XP、vista、Win7等Windows操作系统。 SVN客户端—TortoiseSVN-1.6.12.20536-win32-svn-1.6.15.msi下载地址: ...

    VisualSVN Server v2.5.8 带注册机

    visual svn server v2.5.8,windows下最好的svn服务器端。 特点: 1. 安装和配置过程很方便(最大优点之一) 2. 自带apache/ssl/mod_dav_svn/...等模块,既小巧,又简单,也安全一些。 3. 自带MSC管理工具,可以创建...

    VisualSVN-Server-1.5.1

    它整合了Apache + Subversin + SSL。安装不用说了非常的方便,安装时可以选择8443或者443作为HTTPS得端口。 &lt;br&gt;安装完后,有一个管理的UI界面:可以建立用户、设置密码,同时还可以建议新的代码库。对初学者来说...

    subversion-TortoiseSVN-使用手册(CHM+HTML,中英完整版)

    3.1.9. 用SSL使服务器更安全 3.2. Svnserve服务器 3.2.1. 简介 3.2.2. 安装svnserve 3.2.3. 运行svnserve 3.2.3.1. 以服务形式运行svnserve 3.2.4. svnserve的认证 3.2.5. 使用svn+ssh的认证 3.2.6. svnserve以路径...

    TortoiseSVN中文手册

    3.1. 基于 Apache 的服务器 ............................................... 14 3.1.1. 简介 ......................................................... 14 3.1.2. 安装 Apache ..................................

    TortoiseSVN中文教程

    iii 目录 前言 ............................................................................................................................................... 配置服务器 ...............................

Global site tag (gtag.js) - Google Analytics