windows安装基于Apache的SVN服务器(包括SSL配置)[2007-8-19更新]
翻译整理: PCplayer
关键词:subversion 安装 服务器 配置 apache ssl
最后更新: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),修改以下内容:
去掉以下行的注释(将开头的#删除):
代码:
#LoadModule dav_fs_module modules/mod_dav_fs.so
#LoadModule dav_module modules/mod_dav.so
在LoadModule节的最后添加以下两行:
代码:
LoadModule dav_svn_module modules/mod_dav_svn.so
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):
在配置文件的最后添加下面这些行:
复制内容到剪贴板
代码:
<Location /svn>
DAV svn
SVNParentPath D:\SVN
AuthType Basic
AuthName "Subversion repositories"
AuthUserFile D:\passwd
#AuthzSVNAccessFile D:\svnaccessfile
Require valid-user
</Location>
这样配置表示:你所有的版本库将位于D:\SVN目录下,要访问你的版本库可以使用这样的URL:http://MyServer/svn/,访问权限将由passwd文件中的用户名/密码来限制。
要创建passwd文件,可以打开命令行(DOS窗口),将当前目录切换到apache2目录(通常为c:\program files\apache group\apache2),然后打入以下命令以创建文件:
复制内容到剪贴板
代码:
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如果你想让所有用户对版本库都有读的权限而只有特定的用户才有写的权限,你可以将这行
复制内容到剪贴板
代码:
Require valid-user
改为
复制内容到剪贴板
代码:
<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
</LimitExcept>
2上面的配置使用了passwd文件将你所有的版本库作为一个单元来限定访问权限。如果你想获得更多的控制,如限定某个用户可以访问版本库中的哪个目录,可以把下面这行的#去掉:
复制内容到剪贴板
代码:
#AuthzSVNAccessFile D:\svnaccessfile
然后用文本编辑器创建一个Subversion授权文件。Apache将确保只有有效的用户可以访问你的/svn位置,然后将用户名传到 AuthzSVNAccessFile模块,这样可以依据Subversion授权文件得到更精细的权限控制。注意,路径将被指定为[库:路径]或者简单的[路径]。如果你不明确指定一个库,访问规则将应用到由SVNParentPath指定的目录下所有的版本库中。一个授权文件例子可能像这样:
复制内容到剪贴板
代码:
[groups]
admin = john, kate
devteam1 = john, rachel, sally
devteam2 = kate, peter, mark
docs = bob, jane, mike
training = zak
# 为所有库指定默认访问规则
# 所有人可以读,管理员可以写,危险分子没有任何权限
[/]
* = r
@admin = rw
dangerman =
# 允许开发人员可以完全访问他们的项目版本库
[proj1:/]
@devteam1 = rw
[proj2:/]
@devteam2 = rw
[bigproj:/]
@devteam1 = rw
@devteam2 = rw
trevor = rw
# 文档编写人员对所有的docs目录有写权限
[/trunk/doc]
@docs = rw
# 培训人员可以完全访问培训版本库
[TrainingRepos:/]
@training = rw
2.4. 使用SSL来保护你的服务器
以上的工作已经可以让你的svn服务器正常工作了。
如果你要更安全一些,可以配置ssl来保护你的服务器。
因为美国出口限制,默认安装的Apache服务器不支持SSL。但是你自己可以很容易地在其它地方下载到所需要的模块,然后安装它。
首先你需要SSL的必需文件。你可以http://hunter.campbus.com/ 或这里找到相应的软件包(或者下载本主题的附件1: mod_ssl_etc.rar (595.45 KB)
mod_ssl_etc.rar (595.45 KB)
下载次数: 3885
06-10-16 15:30
)。然后只要将包解开将其中的mod_ssl.so拷到Apache的modules目录、openssl.exe、libeay32.dll、ssleay32.dll拷到bin目录、conf/ssl.conf拷到conf目录。
在Apache的conf目录中用文本编辑器打开ssl.conf。
将下面这些行用#注释掉:
复制内容到剪贴板
代码:
DocumentRoot "c:/apache/htdocs"
ServerName www.example.com:443
ServerAdmin you@example.com
ErrorLog logs/error_log
TransferLog logs/access_log
修改
复制内容到剪贴板
代码:
SSLCertificateFile conf/ssl.crt/server.crt
为
复制内容到剪贴板
代码:
SSLCertificateFile conf/ssl/my-server.cert
修改
复制内容到剪贴板
代码:
SSLCertificateKeyFile conf/ssl.key/server.key
为
复制内容到剪贴板
代码:
SSLCertificateKeyFile conf/ssl/my-server.key
修改
复制内容到剪贴板
代码:
SSLMutex file:logs/ssl_mutex
为
复制内容到剪贴板
代码:
SSLMutex default
删除以下两行(如果有):
复制内容到剪贴板
代码:
<IfDefine SSL>
</IfDefine>
打开Apache配置文件(httpd.conf),去掉这行的注释
复制内容到剪贴板
代码:
#LoadModule ssl_module modules/mod_ssl.so
Openssl需要一个配置文件。你可以从这里下载一个可工作的版本http://tud.at/programm/openssl.cnf (或者本主题附件2: openssl.cnf.rar (1.21 KB)
openssl.cnf.rar (1.21 KB)
下载次数: 2237
06-9-10 19:11
)。将它保存到bin/openssl.cnf。
下面你要创建一个SSL证书。你可以打开一个命令行窗口,然后cd到Apache安装目录(比如C:\program files\apache group\apache2),敲入以下命令:
复制内容到剪贴板
代码:
bin\openssl req -config bin\openssl.cnf -new -out my-server.csr
你将被问及一句口令短语。请注意,不要使用简单的几个词,而应该输入一整个句子,比如一篇诗词的一部份,越长越好。同样,你还要输入你的服务器URL。然后其它的问题都是可选问答的,不过我建议你也将它们填充。
下一步,敲入以下命令:
复制内容到剪贴板
代码:
bin\openssl rsa -in privkey.pem -out my-server.key
以及(注意,只有一行)
复制内容到剪贴板
代码:
bin\openssl x509 -in my-server.csr -out my-server.cert -req -signkey my-server.key -days 4000
这样将创建一个4000天后才过期的证书。最后敲入:
复制内容到剪贴板
代码:
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>
分享到:
相关推荐
以上就是Windows下基于Apache搭建SVN环境的完整配置指南,遵循这些步骤,你应该能够成功地建立一个功能完善的SVN服务器。在实际操作过程中,可能会遇到各种问题,但大多数都可以通过查阅文档或在线社区找到解决方案...
- 安装后,SVN客户端工具如TortoiseSVN会集成到文件资源管理器中,而SVN服务器组件将包含必要的库文件。 3. **配置Apache**: - 打开Apache的配置文件`conf/httpd.conf`,找到`#LoadModule dav_module modules/...
在Windows系统中安装并配置SVN服务器是一个涉及多个步骤的过程,主要目的是实现版本管理。SVN(Subversion)是一个版本控制系统,可以让我们追踪文件的历史变更,管理源代码和文档等。而Apache是一个广泛使用的HTTP...
总之,Apache SVN服务器的配置是一个涉及多个步骤的过程,需要仔细安装和配置各个组件,以及正确设置SVN仓库和访问权限。通过这种方式,你可以搭建一个稳定且安全的版本控制系统,支持团队高效地进行软件开发工作。
### Windows下SVN + Apache搭建SVN服务器 在软件开发过程中,版本控制系统是必不可少的工具之一,它能够帮助团队高效地管理代码版本、合并更改以及追踪历史记录等。其中,Subversion (SVN) 是一个非常流行的集中式...
本指南将详细介绍如何在Windows上搭建SVN服务器,包括Apache HTTP Server的安装、Subversion的集成、文件库的创建、访问控制的设定,以及客户端TortoiseSVN的安装。 1. **Apache HTTP Server安装** - 首先,你需要...
总之,配置SVN服务器涉及安装SVN软件、设置Apache模块、创建仓库、配置Apache配置文件以及管理用户权限。这是一项至关重要的任务,因为它确保了团队的协作效率和代码的版本控制。随着对SVN服务器配置的深入理解和...
这通常涉及到配置Apache的SSL证书验证和SVN的授权文件(如authz)。 12. **电子邮件通知**: 为了实现提交更改后的电子邮件通知,可以集成SVN钩子脚本(post-commit)。当有提交发生时,该脚本会触发发送通知邮件...
Subversion 客户端和服务器,这里使用的是版本 1.5.2,文件名包括 `Setup-Subversion-1.5.2.en-us.msi` 和 TortoiseSVN 的离线文档 `090122121238.pdf`(虽然TortoiseSVN的安装文件未包含在此压缩包中,但通常它是...
在CentOS环境下安装Apache服务器和Subversion(SVN)版本控制系统,并配置Apache来支持HTTP协议的SVN服务,是常见的软件部署与配置任务。以下知识点会详细阐述整个过程中涉及的步骤、组件以及潜在的配置问题。 ### ...
在Linux系统中架设Apache SVN服务器是一个涉及到多个步骤的过程,主要涵盖了Apache HTTP Server与Subversion(SVN)的安装和配置。以下是对整个过程的详细解释: 1. 首先,我们需要安装基础的依赖库,包括APR...
1. **安装SVN服务器**:首先,通过`apt-get`安装所需组件,包括SVN、Apache及LDAP模块。 2. **创建版本库**:创建一个名为`nafsvn`的版本库,设置用户组和权限。 3. **配置Apache**:编辑`dav_svn.conf`,添加代码以...
Debian 下 SVN 服务器的安装与配置 本文将详细介绍 Debian 环境下 Subversion ...本文详细讲解了 Debian 环境下 Subversion 服务器的安装和配置过程,包括安装 Subversion、创建 SVN 仓库、访问 SVN 仓库等步骤。
至此,Windows XP上的SVN服务器安装配置基本完成。不过,实际使用中可能还需要根据团队需求调整服务器设置,如增加SSL加密、设置备份策略等。务必保持服务器的安全性,定期更新软件以防止潜在的安全风险。 在...
本文档将指导你如何在Windows环境下搭建一个功能完整的SVN服务器,包括基本的安装流程以及SSL加密通信的配置。通过亲测有效的步骤,确保你能够顺利进行SVN服务器的部署。 **二、所需软件准备** 1. **Apache ...
通过以上步骤,你已经在Windows 7上成功搭建了一个基于Apache的SVN服务器,并安装了方便的TortoiseSVN客户端。这个环境将为你的团队提供一个可靠的代码版本管理平台,提升协作效率,保障项目数据的安全。在实际应用...
### Windows 下 Apache+SVN+Trac 安装与配置详解 #### 一、准备工作 在开始集成 Apache、Subversion (SVN) 和 Trac 的过程中,首先要准备好所需的软件。 1. **Apache HTTP Server** - **官网**: ...
在IT行业中,版本控制系统是开发团队协作的重要工具,而...通过上述步骤,你已成功配置了一个基于Apache的SVN服务器,可以同时通过HTTP和HTTPS提供服务。这有助于团队成员无论身处何处,都能安全、高效地协作开发项目。