`
can4you
  • 浏览: 99584 次
  • 性别: Icon_minigender_1
  • 来自: 天朝
社区版块
存档分类
最新评论

windows安装基于Apache的SVN服务器

    博客分类:
  • Java
阅读更多

[参考文章] http://bbs.iusesvn.com/thread-158-1-1.html

 

 

 

摘要

本文是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. ErrorLog logs/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)

下载次数: 3218
06-9-10 19:11

)。将它保存到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>
分享到:
评论
1 楼 whut0503 2012-01-06  
对你的SSL配置比较感兴趣,我尝试了一下,发现在敲入命令:bin\openssl req -config bin\openssl.cnf -new -out my-server.csr 时报错了,
错误我抄下来了,如下:
E:\Apache2.2\bin>openssl req -config bin\openssl.cnf -new -out my-server.csr
error on line -1 of bin\openssl.cnf
2532:error:02001003:system library:fopen:No such process:.\crypto\bio\bss_file.c
:122:fopen('bin\openssl.cnf','rb')
2532:error:2006D080:BIO routines:BIO_new_file:no such file:.\crypto\bio\bss_file
.c:125:
2532:error:0E078072:configuration file routines:DEF_LOAD:no such file:.\crypto\c
onf\conf_def.c:197:

E:\Apache2.2\bin>

所以我做到这一步,做不下去了,求指教。


还有上文说的 修改 SSLMutex file:logs/ssl_mutex 为 SSLMutex default 这句话,我在ssl.conf里就找不到啊,这不是你提供下载的附件吗?

相关推荐

    Windows基于Apache的svn服务器配置

    Windows基于Apache的svn服务器配置

    Apache+SVN+Trac搭建项目管理服务器的安装与配置详解

    安装平台本安装基于Windowsvista环境下进行安装与配置的,其它windows版本都可用;搭建此项目管理服务器首先必须要安装Apache服务器.1.1安装1.1.1安装Apache(1)下载Apache地址...

    svn-1.4.3-setup.exe.7z

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

    SVN安装说明和安装包.doc

    基于Windows 32位系统的Subversion1.6.23和Apache2.2.25安装配置过程说明,文档里含所需安装包。手把手教会一个只要会电脑基本操作的人搭建一台局域网内使用的SVN服务器。

    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 ...

    VisualSVN Server 4.0以上.rar

    VisualSVN Server集成了Subversion和Apache,安装的时候Svn Server已经封装为windows service(如果改变VisualSVN Server的URL的时候,VisualSVN Server会自动重启服务,非常方便),Apache服务器的配置也只是在图像...

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

    安装 Subversion 快速指南 B. CVS用户的Subversion指南 版本号现在不同了 目录的版本 更多离线操作 区分状态和更新 状态 更新 分支和标签 元数据属性 解决冲突 二进制文件和行结束标记转换 版本化的模块 认证 迁移...

    VisualSVN Server 64位中文版

    visualsvn server 64位中文版下载,svn版本控制服务器,VisualSvn Server是基于Windows平台上的Subversion服务器,visualsvn server 64位包括了Subversion、Apache和一个相应的管理界面。可以搭配TortoiseSvn客户端...

    UPUPW PHP v5.2.17 经典怀旧版套装 c1.zip

    2、可运行于任意版本任何架构的Windows系统之上(Windows Server 2003/2008/2012 ; XP/Vista/Win7/Win8 ; 32/64位) ;  3、无目录限制,任意磁盘任何非中文不含空格目录想放哪就放哪。 4、完全兼容IIS,独具代理...

    基于TortoiseSVN的版本控制工具(与Delphi I

    它可以替代CVS,VSS等轻量级版本控制工具,它支持Local和Web(Apache)两种工作方式,并且最关键就是完全免费的。 在组织团队开发时,除了服务器端的工具之外,客户端也需要相应的工具才能访问源码库。而且,最好...

    Jenkins管理员操作手册.docx

    安装软件:jdk-6u20-windows-x64,按提示安装即可。 设置环境变量: JAVA_HOME= C:\Program Files\Java\jdk1.6.0_20 Path= C:\Program Files\Java\jdk1.6.0_20\bin;C:\Program Files\Java\jre6\bin; CLASSPATH= ...

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

    3.1. 以Apache为基础的服务器 3.1.1. 简介 3.1.2. 安装Apache 3.1.3. 安装Subversion 3.1.4. 配置 3.1.5. 多版本库 3.1.6. 路径为基础的授权 3.1.7. 使用Windows域认证 3.1.8. 多重认证源 3.1.9. 用SSL使服务器更...

    iuhyiuhkjh908u0980

    代码可以从这里得到 svn co https://svn.apache.org/repos/asf/ant/ivy/core/trunk ivy 2.确保你的机子上已经安装了ant (version 1.6.5 or 以上)与jd ... by happylove311 2008-10-12 回复 (3) ejb中用ant出错 ...

    TortoiseSVN中文手册

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

    Neard::game_die:便携式WAMP软件堆栈

    :基于Web和API的SMTP测试。 :MySQL关系数据库管理系统的社区开发分支。 :一个免费的开放源代码,跨平台,面向文档的数据库程序。 :分布式内存对象缓存系统。 :开源关系数据库管理系统。 :安全隧道到本地主机...

    TortoiseSVN中文教程

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

Global site tag (gtag.js) - Google Analytics