1、 所有资料来源于 我用Subversion - SVN|TortoiseSVN下载安装配置使用技术交流社区 SVN 服务端 安装和配置 1.Windows环境下 基于 Apache 的SVN 服务器 安装及配置 1.1安装 1.1.1安装Apache (1)下载Apache 地址http://httpd.apache.org/download.cgi 注意:Apache低于2.0.54的Windows版本的存在编译问题,低于2.0.54的版本不能与Subversion 1.2一起工作。2.2.X目前不能很好支持SVN 1.4.3。当前建议下载Apache 2.0.59
2、 (2) 安装 下载完成后运行apache_2.0.59-win32-x86-no_ssl.msi ,根据提示进行操作。遇到系统要求输入SERVER的URL时,如果你的服务器没有DNS名称,请直接输入IP地址。 注意:如果你已经有了IIS或其他监听80段口的程序,安装会失败,如果发生这种情况,直接到程序的安装目录\Apache Group\Apache2\conf,打开httpd.conf。编辑文件的Listen 80为其他可用的端口,例如Listen 81,然后重新启动-这样就不会那个问题了。 (3)检查 安装完成后浏览 http://localhost/ 若成功,
3、可看到apache页面。 1.1.2安装Subversion (1)下载 Subversion 地址:http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91 (2)安装 运行svn-1.4.3-setup.exe 安装程序,并根据指导安装,如果Subversion认识到你安装了Apache,你就几乎完成了工作,如果它没有找到Apache服务器,你还有额外的步骤。 (3)后续 步骤1 从C:\Program Files\Subversion\bin 中将 mod_authz_svn.
4、so mod_dav_svn.so复制到 C:\Program Files\Apache Group\Apache2\modules下 intl3_svn.dll libdb*.dll C:\Program Files\Apache Group\Apache2\bin下 步骤2 找到C:\Program Files\Apache Group\Apache2\conf\httpd.conf文件去掉如下几行的注释(删除 '#'标记): #LoadModule dav_fs_module modules/mod_dav_fs.so #LoadModule dav_module
5、 modules/mod_dav.so
将下面几行添加到LoadModule部分的最后。
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
1.1.3安装TortoiseSVN(可选)
1.2配置
1.2.1 配置服务
编辑c:\program files\apache group\apache2\conf\httpd.conf文件,
添加下面代码。
6、istParentPath on
#SVNPathAuthz off
SVNParentPath "C:\svndata"
#SVNIndexXSLT "/svnindex.xsl"
#SSLRequireSSL
AuthType Basic
AuthName "Subversion repositories"
AuthUserFile "C:\svndata\passwd"
AuthzSVNAccessFile "C:\svndata\AuthzSVNAccessFile"
#
7、equire valid-user
#
#Satisfy Any
Require valid-user
Soc使用中
8、 valid-user
备注:
9、ubversion1.3或者更高版本,这个指示表示显示所有SVNParentPath下的版本库。 SVNParentPath D:\SVN 告诉Subversion需要查看的版本库位于D:\SVN之下 SVNIndexXSLT "/svnindex.xsl" 使用它可以在用浏览器浏览时更好看。 AuthType Basic 激活基本认证,就是用户名/密码 AuthName "Subversion repositories" 用来说明何时弹出要求用户输入认证信息的认证对话框 AuthUserFile passwd 指定使用的认证密码文件 AuthzSVNAccessFile
10、 位置Subversion版本库的访问控制文件的路径 Require valid-user 指定只有输入了正确的用户/密码的用户可以访问URL 1.2.2 建立版本库 与此配置对应,需要在C驱动器建立目录svn,其中可能包含多各项目得代码版本库,假设存在proj1、proj2、proj3,并已经建立了版本库。 例如 svn-win32-1.4.3\bin\svnadmin create --fs-type fsfs c:\svndata\proj1 1.2.3 设置密码文件 在路径c:\program files\apache group\apache2下运行 bin\h
11、tpasswd -c passwd
12、一下内容: [groups] admin=lds [/] * = r @admin = rw dangerman = [proj1:/] @admin = rw [proj2:/] @admin = r [proj3:/] @admin = 基本含义是根目录下任何人有读权限,admin组有读写权限;admin对proj1读写权限 对proj2有读权限,对 proj3没有任何权限。 备注: 如果有中文路径,那要把文件存成UTF8格式 1.3扩展 1.3.1为Apache启用SSL (1)将mod_ssl_etc.rar中的mod_ssl.so拷到A
13、pache的modules目录、openssl.exe、libeay32.dll、ssleay32.dll拷到bin目录、conf/ssl.conf拷到conf目录,在Apache的conf目录中用文本编辑器打开ssl.conf 将下面这些行用#注释掉: DocumentRoot "c:/apache/htdocs" ServerName :443 ServerAdmin you@ ErrorLog logs/error_log TransferLog logs/access_log (2)修改 SSLCertificateFile conf/ssl.crt/server
14、crt
为
SSLCertificateFile conf/ssl/my-server.cert
(3)修改
SSLCertificateKeyFile conf/ssl.key/server.key
为
SSLCertificateKeyFile conf/ssl/my-server.key
(4)修改
SSLMutex file:logs/ssl_mutex
SSLMutex default
(5)删除以下两行(如果有)
15、httpd.conf),去掉这行的注释 #LoadModule ssl_module modules/mod_ssl.so (7) 将压缩包f.rar 中f文件拷贝到C:\program files\apache group\apache2\bin下。 然后C:\program files\apache group\apache2在用以下命令创建证书 bin\openssl req -config bin\f -new -out my-server.csr bin\openssl rsa -in privkey.pem -out my-server
16、key bin\openssl x509 -in my-server.csr -out my-server.cert -req -signkey my-server.key -days 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 如果
17、目录ssl不存在,你必须先创建一个。
(8) 可以选择在
18、件口令的命令: openssl rsa -in server.key -out server.key 2.openssl req -new -key server.key -out server.csr -config f 生成Certificate Signing Request(CSR),生成的csr文件交给CA签名后形成服务端自己的证书.屏幕上将有提示,依照其指示一步一步输入要求的个人信息即可. 3.对客户端也作同样的命令生成key及csr文件: openssl genrsa -des3 -out client.key 1024 openssl req -new -k
19、ey client.key -out client.csr -config f 4.CSR文件必须有CA的签名才可形成证书.可将此文件发送到verisign等地方由它验证,要交一大笔钱,何不自己做CA呢. openssl req -new -x509 -keyout ca.key -out ca.crt -config f 5.用生成的CA的证书为刚才生成的server.csr,client.csr文件签名: Openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key -config f Ope
20、nssl ca -in client.csr -out client.crt -cert ca.crt -keyfile ca.key -config f 现在我们所需的全部文件便生成了. 另: client使用的文件有:ca.crt,client.crt,client.key server使用的文件有:ca.crt,server.crt,server.key .crt文件和.key可以合到一个文件里面,本人把2个文件合成了一个.pem文件(直接拷贝过去就行了) 1.3.2为用户提供密码修改服务 根据 附件中Apache密码修改.rar中提示操作。
21、 1.3.3 外观 (1) 去掉 #SVNIndexXSLT "/svnindex.xsl" #号标志 (2) 将附件中apache_svn_skin 中三个文件放到 C:\Program Files\Apache Group\Apache2\htdocs 下 ArthurLin 整理 (有问题一起讨论arthurjava@) 2007-6-1 subversion+apache 配置 注意:目前windows下的subversion只能跟Apache2.0.x配合,不能用于Apache2.2.x,除非你自己编译 在所有的Subversion
22、服务器配置方式中,基于Apache的是最灵活的。虽然配置起来有一点点复杂,但是它提供了其它方式所没有的好处: WebDAV 基于Apache配置的Subversion服务器使用了被许多其它程序支持的WebDAV协议。举个例子,你可以在Windows的资源管理器中将这样的一个版本 库挂载成一个“Webfolder”,然后像文件系统中的其它文件夹一样访问它。 浏览版本库 你可以在不安装Subversion客户端的情况下,使用浏览器来浏览版本库中的内容。这将使得更大范围的用户可以访问你的数据。 用户验证 你可以使用任何Apache支持的验证机制,包括SSPI和LDAP。 安全
23、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
24、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目录中找到
25、文件httpd.conf,将其中的 Listen 80改成一个不用的端口,比如Listen 81。然后重新运行这个安装程序,这次应该不会再有问题了。 现在你可以在你的浏览器中键入 http://loccalhost/,如果呈现了一个已经配置好的网站,那么你的Apache就安装成功了。 警告: 如果你将Apache安装成一个服务,它将以本地system帐户来运行。为Apache创建一个单独的用户来运行它将会更安全一些。 请确保运行Apache的用户有版本库的完全访问权限(右键版本库目录->属性->安全)。要不然,用户将无法提交他们的更改。 就算Apache以本机system来运行,你
26、也要设置它能完全读写版本库目录。 如果没有为Apache配置这个许可,用户将会得到"禁止访问"的错误信息,在Apache的错误日志中表现为错误500。 2.2. 安装Subversion 从http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91 (英文) 或 运行Subversion安装程序,如果安装程序能够识别你已经安装了Apache,那么你的安装基本上就OK了。如果它不能,那么你要做一些额外的步 骤。 注:如果你先安装Apache,再安装Subversion,正常情况下下面的工作(2.3配
27、置前)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 file
28、s\apache group\apache2\conf\httd.conf),修改以下内容: 去掉以下行的注释(将开头的#删除): CODE: #LoadModule dav_fs_module modules/mod_dav_fs.so #LoadModule dav_module modules/mod_dav.so 在LoadModule节的最后添加以下两行: CODE: LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_sv
29、n.so
2.3. 配置
现在,你已经安装了Apache和Subversion,但是Apache还不知道如果处理像TortoiseSVN一样的Subversion客户端。要让Apache知道哪个URL将
被Subversion使用,你要像下面这样编辑Apache的配置文件(通常在c:\program files\apache group\apache2\conf\httpd.conf):
在配置文件的最后添加下面这些行:
CODE:
30、"Subversion repositories" AuthUserFile D:\passwd #AuthzSVNAccessFile D:\svnaccessfile Require valid-user 这样配置表示:你所有的版本库将位于D:\SVN目录下,要访问你的版本库可以使用这样的URL:http://MyServer/svn/,访问权限将由passwd文 件中的用户名/密码来限制。 要创建passwd文件,可以打开命令行(DOS窗口),将当前目录切换到apache2目录(通常为c:\program files\apache group
31、\apache2),然后打
入以下命令以创建文件:
CODE:
bin\htpasswd -c passwd
32、来访问Subversion版本库 DAV svn 告诉Apache哪个模块负责服务像那样的URL--在这里就是Subversion模块 SVNListParentPath on 在Subversion 1.3及更高版本中,这个指示器使得Subversion列出由SVNParentPath指定的目录下所有的版本库 SVNParentPath D:\SVN 告诉Subversion在目录D:\SVN下寻找版本库 AuthType Basic 启用基本的验证,比如用户名/密码对 AuthName "Subversion repositories" 当一个验证对话框弹出时,告诉用户
33、这个验证是用来做什么的 AuthUserFile D:\passwd 指定D:\passwd用为密码文件用来验证用户的用户名及密码 AuthzSVNAccessFile D:\svnaccessfile 指定D:\svnaccessfile来限定各个用户或组在版本库中目录的访问权限 Require valid-user 限定用户只有输入正确的用户名及密码后才能访问这个路径 ---------------------------------------- 上面的配置仅仅是一个简单的示例。你还可以对Apache进行许许多多的配置。 1如果你想让所有用户对版本库都有读的权限而只有特
34、定的用户才有写的权限,你可以将这行
CODE:
Require valid-user
改为
CODE:
35、he将确保只有有效的用户可以访问你的/svn位置,然后将用户名传到 AuthzSVNAccessFile模块,这样可以依据Subversion授权文件得到更精细的权限控制。注意,路径将被指定为[库:路径]或者简单的[路径]。如 果你不明确指定一个库,访问规则将应用到由SVNParentPath指定的目录下所有的版本库中。一个授权文件例子可能像这样: CODE: [groups] admin = john, kate devteam1 = john, rachel, sally devteam2 = kate, peter, mark docs = bob, jane, mike
36、 training = zak # 为所有库指定默认访问规则 # 所有人可以读,管理员可以写,危险分子没有任何权限 [/] * = r @admin = rw dangerman = # 允许开发人员可以完全访问他们的项目版本库 [proj1:/] @devteam1 = rw [proj2:/] @devteam2 = rw [bigproj:/] @devteam1 = rw @devteam2 = rw trevor = rw # 文档编写人员对所有的docs目录有写权限 [/trunk/doc] @docs = rw # 培训人员可以完全访问培训
37、版本库 [TrainingRepos:/] @training = rw 2.4. 使用SSL来保护你的服务器 因为美国出口限制,默认安装的Apache服务器不支持SSL。但是你自己可以很容易地在其它地方下载到所需要的模块,然后安装它。 首先你需要SSL的必需文件。你可以 或这里找到相应的软件包(或者下载本主题的附件1: 附件: mod_ssl_etc.rar (2006-10-16 15:30, 595.45 K) 该附件被下载次数 110 )。然后只要将包解开将其中的mod_ssl.so拷到Apache的modules目录、openssl.exe、libeay32.dll
38、ssleay32.dll拷到bin目录、 conf/ssl.conf拷到conf目录。 在Apache的conf目录中用文本编辑器打开ssl.conf。 将下面这些行用#注释掉: CODE: DocumentRoot "c:/apache/htdocs" ServerName :443 ServerAdmin you@ ErrorLog logs/error_log TransferLog logs/access_log 修改 CODE: SSLCertificateFile conf/ssl.crt/server.crt 为 CODE: SSLCertific
39、ateFile conf/ssl/my-server.cert
修改
CODE:
SSLCertificateKeyFile conf/ssl.key/server.key
为
CODE:
SSLCertificateKeyFile conf/ssl/my-server.key
修改
CODE:
SSLMutex file:logs/ssl_mutex
为
CODE:
SSLMutex default
删除以下两行(如果有,我认为有错,删掉之后apache无法启动):
CODE:
40、httpd.conf),去掉这行的注释 CODE: #LoadModule ssl_module modules/mod_ssl.so Openssl需要一个配置文件。你可以从这里下载一个可工作的版本http://tud.at/programm/f (或者本主题附件2: 附件: f.rar (2006-9-10 19:11, 1.21 K) 该附件被下载次数 84 )。将它保存到bin/f。 下面你要创建一个SSL证书。你可以打开一个命令行窗口,然后cd到Apache安装目录(比如C:\program files\apache group\apache2),敲入 以下命令:
41、 CODE: bin\openssl req -config bin\f -new -out my-server.csr 你将被问及一句口令短语。请注意,不要使用简单的几个词,而应该输入一整个句子,比如一篇诗词的一部份,越长越好。同样,你还要输入 你的服务器URL。然后其它的问题都是可选问答的,不过我建议你也将它们填充。 下一步,敲入以下命令: CODE: bin\openssl rsa -in privkey.pem -out my-server.key 以及(注意,只有一行) CODE: bin\openssl x509 -in my-server.csr -out my
42、server.cert -req -signkey my-server.key -days 4000 这样将创建一个4000天后才过期的证书。最后敲入: CODE: 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:\progra
43、m files\apache group\apache2\conf\ssl),如果目录ssl不存在,你必须先创建一个。
重启Apache服务。
现在可以用类似这样的url来访问你的版本库了https://servername/svn/project
QUOTE:
强制通过SSL来访问
当你配置了SSL来提高版本库安全时,你可能想禁用无SSL的http访问方式,而只允许通过https访问。要达到这种效果,你要在
44、NParentPath D:\SVN SSLRequireSSL AuthType Basic AuthName "Subversion repositories" AuthUserFile passwd #AuthzSVNAccessFile svnaccessfile Require valid-user 以上介绍的配置为Apache多库方式,即一个location可以同时为多个版本库服务, 假设你的ip为192.168.0.1,在D:\SVN目录下建了两个版本库,proj1和proj2 可以分别用下面两个url来访问你的版本库 CODE:
45、http://192.168.0.1/svn/proj1
CODE:
http://192.168.0.1/svn/proj1
还有一种配置方式为Apache单库方式,即一个location只能为一个版本库服务,
配置时只要将上面的SVNParentPath改为SVNPath,同时将后面的路径由版本库的父目录改为版本库的目录
如:
CODE:






