深入剖析:Subversion和Apache2.0.x完美结合之下篇

本文接着上篇文章继续介绍Subversion和Apache2.0.x的结合,上面的配置仅仅是一个简单的示例。你还可以对Apache进行许许多多的配置。
1.如果你想让所有用户对版本库都有读的权限而只有特定的用户才有写的权限,你可以将这行
CODE:Requirevalid-user改为
CODE:
Requirevalid-user

2.上面的配置使用了passwd文件将你所有的版本库作为一个单元来限定访问权限。如果你想获得更多的控制,如限定某个用户可以访问版本库中的哪个目录,可以把下面这行的#去掉:
CODE:
#AuthzSVNAccessFileD:\svnaccessfile
然后用文本编辑器创建一个Subversion授权文件。Apache将确保只有有效的用户可以访问你的/svn位置,然后将用户名传到
AuthzSVNAccessFile模块,这样可以依据Subversion授权文件得到更精细的权限控制。注意,路径将被指定为[库:路径]或者简单的[路径]。如果你不明确指定一个库,访问规则将应用到由SVNParentPath指定的目录下所有的版本库中。一个授权文件例子可能像这样:
CODE:[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
  3.使用SSL来保护你的服务器
在所有的Subversion服务器配置方式中,Subversion和Apache2.0.x的结合是最灵活的。因为美国出口限制,默认安装的Apache服务器不支持SSL。但是你自己可以很容易地在其它地方下载到所需要的模块,然后安装它。首先你需要SSL的必需文件。你可以http://hunter.campbus.com/或这里找到相应的软件包(或者下载本主题的附件1:
附件:mod_ssl_etc.rar(2006-10-1615:30,595.45K)
该附件被下载次数110)。然后只要将包解开将其中的mod_ssl.so拷到Apache的modules目录、openssl.exe、libeay32.dll、ssleay32.dll拷到bin目录、
conf/ssl.conf拷到conf目录。
在Apache的conf目录中用文本编辑器打开ssl.conf。
将下面这些行用#注释掉:
CODE:DocumentRoot"c:/apache/htdocs"
ServerNamewww.example.com:443
ServerAdminyou@example.com
ErrorLoglogs/error_log
TransferLoglogs/access_log修改
CODE:SSLCertificateFileconf/ssl.crt/server.crt为
CODE:SSLCertificateFileconf/ssl/my-server.cert修改
CODE:SSLCertificateKeyFileconf/ssl.key/server.key为
CODE:SSLCertificateKeyFileconf/ssl/my-server.key修改
CODE:SSLMutexfile:logs/ssl_mutex为
CODE:SSLMutexdefault
删除以下两行(如果有,我认为有错,删掉之后apache无法启动):
CODE:
打开Apache配置文件(httpd.conf),去掉这行的注释
CODE:#LoadModulessl_modulemodules/mod_ssl.so
Openssl需要一个配置文件。你可以从这里下载一个可工作的版本http://tud.at/programm/openssl.cnf(或者本主题附件2:
附件:openssl.cnf.rar(2006-9-1019:11,1.21K)
该附件被下载次数84)。将它保存到bin/openssl.cnf。
下面你要创建一个SSL证书。你可以打开一个命令行窗口,然后cd到Apache安装目录(比如C:\programfiles\apachegroup\apache2),敲入以下命令:
CODE:bin\opensslreq-configbin\openssl.cnf-new-outmy-server.csr
你将被问及一句口令短语。请注意,不要使用简单的几个词,而应该输入一整个句子,比如一篇诗词的一部份,越长越好。同样,你还要输入你的服务器URL。然后其它的问题都是可选问答的,不过我建议你也将它们填充。
下一步,敲入以下命令:CODE:bin\opensslrsa-inprivkey.pem-outmy-server.key
以及(注意,只有一行)CODE:bin\opensslx509-inmy-server.csr-outmy-server.cert-req-signkeymy-server.key-days4000
这样将创建一个4000天后才过期的证书。最后敲入:
CODE:bin\opensslx509-inmy-server.cert-outmy-server.der.crt-outformDER
这些命令在Apache目录下创建了一些文件(my-server.der.crt,my-server.csr,my-server.key,.rnd,privkey.pem,my-server.cert)。将这些文件拷贝到目录conf/ssl(比如C:\programfiles\apachegroup\apache2\conf\ssl),如果目录ssl不存在,你必须先创建一个。
 重启Apache服务。
现在可以用类似这样的url来访问你的版本库了https://servername/svn/project
QUOTE:强制通过SSL来访问
当你配置了SSL来提高版本库安全时,你可能想禁用无SSL的http访问方式,而只允许通过https访问。要达到这种效果,你要在 块加入另外一个指示器SSLRequireSSL。
一个示例 块可能像这样:
DAVsvn
SVNParentPathD:\SVN
SSLRequireSSL
AuthTypeBasic
AuthName"Subversionrepositories"
AuthUserFilepasswd
#AuthzSVNAccessFilesvnaccessfile
Requirevalid-user

以上介绍Subversion和Apache2.0.x结合的配置为Apache多库方式,即一个location可以同时为多个版本库服务,
假设你的ip为192.168.0.1,在D:\SVN目录下建了两个版本库,proj1和proj2
可以分别用下面两个url来访问你的版本库
CODE:http://192.168.0.1/svn/proj1
CODE:http://192.168.0.1/svn/proj1
还有一种配置方式为Apache单库方式,即一个location只能为一个版本库服务,
配置时只要将上面的SVNParentPath改为SVNPath,同时将后面的路径由版本库的父目录改为版本库的目录
如:
CODE:
SVNPathD:\SVN\proj1
AuthTypeBasic
AuthName"Subversionrepositories"
AuthUserFileD:\passwd
#AuthzSVNAccessFileD:\svnaccessfile
Requirevalid-user
Subversion和Apache2.0.x的结合情况,这里已经介绍完毕。

 【编辑推荐】

  1. Subversion SVN协议解析远程整数溢出漏洞
  2. Windows下Subversion管理配置详细说明
  3. 七步搞定Subversion服务器在Ubuntu下的配置
  4. Subversion教程:新手快速入门
  5. 三大主流Subversion客户端初探

分享文章:深入剖析:Subversion和Apache2.0.x完美结合之下篇
网址分享:http://www.shufengxianlan.com/qtweb/news21/377371.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联