windows 下 Apache2.2.4和Subversion1.4.4搭建SVN版本控制平台
一、安装
第一步,安装Apache2.2,下载后直接安装就可以了,没有什么难的。
第二步,安装Subversion1.4.4(目前最新版本),下载时请注意,此软件包有两个版本,一个是针对Apache2.0.x的,另一个是针对Apache2.2.x的,这里要用后一个版本,解压之后即可使用。
二、整合
第一步,打开Apache安装目录下的httpd.conf文件
找到下面的语句:
#LoadModule dav_module modules/mod_dav.so
将上面语句前面的#去掉
第二步,在这句后面追加,如下语句:
LoadModule dav_svn_module "{svn安装目录}/bin/mod_dav_svn.so"
LoadModule authz_svn_module "{svn安装目录}/bin/mod_authz_svn.so"
注:{svn安装目录}就是svn-win32-1.4.4.zip解压后你放的目录
第三步,在这个文件的最后,追加如下语句:
<Location /svn>
DAV svn
SVNParentPath “d:/svn”
</Location>
第四步,创建仓库
根据apache的配置文件的设置建立目录:d:/svn,然后用svnadmin create d:/svn/proj1命令创建仓库,命令执行成功之后,会在d:/svn/proj1下面生成很多的文件和目录。
第五步,运行
重新启动Apache Server
在浏览器中输入网址:
http://localhost/svn/test/
这时候,看到页面显示:
Revision 0: /
Powered by Subversion version 1.4.4 (r25188).
安装成功,接下来将进行权限设置。
三、svn权限设置
svn使用apache的权限管理对档案库及目录进行读写管理
修改上面第三步的内容为:
<Location /svn/>
DAV svn
SVNListParentPath on
SVNParentPath “d:\svn”
### apache auth begin
# how to authenticate a user
AuthType Basic
AuthName "Subversion repository"
AuthUserFile “D:\apache2\conf\svn_auth” ##(保存用户名和密码,这个文件需要用Apache的htpasswd工具创建)
Require valid-user
### apache auth end
### svn auth begin
# our access control policy
AuthzSVNAccessFile “D:\apache2\conf\svn_access” ## (保存用户访问的权限策略)
# authentication if necessary
#Satisfy Any
### svn auth end
</Location>
用htpasswd工具创建svn_auth 文件,
建立保存用户名和密码的文件
htpasswd -c D:\apache2\conf\svn_auth username1
-c 表示创建文件,-m表示对密码用md5加密
然后,会提示输入两次密码,以后再加用户就不需要用-c了,直接用-m即可。
下面建立控制用户访问权限的文件svn_access
在D:\apache2\conf中新建一个记事本文件,输入下面的内容:
[groups]
admin = kurz
everyone = @admin
[/]
@admin = r
[proj1:/]
@admin = rw
[proj2:/]
@admin = rw
r 表示读权限
w 表示写权限
好,配置完成,重新启动Apache server
在浏览器地址栏中再次输入:http://localhost/svn/test/
这次要输入密码才能进入,赶快试试吧。
四、基于Apache的svn服务器的多库单库
以上介绍的配置为Apache多库方式,即一个location可以同时为多个版本库服务,
假设你的ip为192.168.0.1,在D:\SVN目录下建了两个版本库,proj1和proj2
可以分别用下面两个url来访问你的版本库
此时权限文件类似于这样
[groups]
admin=user1
dev=user2
[proj1:/]
@admin=rw
@doc=r
[proj2:/]
@admin=rw
@doc=r
浏览父文件夹的版本库
显示如下信息
Collection of Repositories
proj1/
proj2/
--------------------------------------------------------------------------------
Powered by Subversion version 1.4.4 (r25188).
还有一种配置方式为Apache单库方式,即一个location只能为一个版本库服务,
配置时只要将上面的SVNParentPath改为SVNPath,同时将后面的路径由版本库的父目录改为版本库的目录
如:
<Location /svn>
SVNPath D:\SVN\proj1
AuthType Basic
AuthName "Subversion repositories"
AuthUserFile D:\apache2\conf\svn_auth
AuthzSVNAccessFile D:\apache2\conf\svn_access
Require valid-user
</Location>
这时,可以用下面的URL来访问版本库proj1
权限文件可能是
[groups]
admin=user1
dev=user2
[/]
@admin=rw
@doc=r
使用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)
下载次数: 1174
2006-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 [url]www.example.com:443[/url]
ServerAdmin [email]you@example.com[/email]
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)
下载次数: 820
2006-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://localhost/svn/proj1
强制通过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>

没有评论:
发表评论