Subversion相信大家都比较熟悉了,他已经更新了多个版本,本文说一下Subversion和Apache2.0.x的结合,注意:目前windows下的Subversion只能跟Apache2.0.x配合,不能用于Apache2.2.x,除非你自己编译。
在所有的Subversion服务器配置方式中,基于Apache的是最灵活的。虽然配置起来有一点点复杂,但是它提供了其它方式所没有的好处:
1.WebDAV
基于Apache配置的Subversion服务器使用了被许多其它程序支持的WebDAV协议。举个例子,你可以在Windows的资源管理器中将这样的一个版本库挂载成一个“Webfolder”,然后像文件系统中的其它文件夹一样访问它。
1.1浏览版本库
你可以在不安装Subversion客户端的情况下,使用浏览器来浏览版本库中的内容。这将使得更大范围的用户可以访问你的数据。
1.2用户验证
你可以使用任何Apache支持的验证机制,包括SSPI和LDAP。
1.3安全
Apache是非常的稳定和安全,因此你的版本库自然而然地拥有同样的安全性。包括SSL加密。
2.安装过程
2.1.安装Apache
安装Apache前,你要有一台运行Windows2000、WindowsXP+sp1或Windows2003的电脑。
警告:请注意,没安装ServicePack1的WindowsXP将导致错误的网络数据从而破坏你的版本库!
从http://httpd.apache.org/download.cgi下载最新版本的ApacheWeb服务器。确保你下载的版本大于2.0.54。2.0.54版本的Apache将不能与Subversion1.3.xx配合工作。而且,小于2.0.54的Apache也因为在windows上的编译存在一个bug而导致不能与Subversion1.2配合使用。一旦你已经有了Apache2的安装程序,你可以双击它,它将引导你完成整个安装过程。请确保你输入正确的服务器URL(如果你的服务器没有DNS
名称,你可以直接输入IP地址)。我建议你将Apache安装成forallUsers,onPort80,asaservice。注意:如果你已经有一个IIS或者其它的程序使用80端口,安装可能会失败。如果是这样,你可以到程序目录下的ApacheGroup\Apache2\conf目录中找到文件httpd.conf,将其中的Listen80改成一个不用的端口,比如Listen81。然后重新运行这个安装程序,这次应该不会再有问题了。现在你可以在你的浏览器中键入http://loccalhost/,如果呈现了一个已经配置好的网站,那么你的Apache就安装成功了。
警告:
如果你将Apache安装成一个服务,它将以本地system帐户来运行。为Apache创建一个单独的用户来运行它将会更安全一些。请确保运行Apache的用户有版本库的完全访问权限(右键版本库目录->属性->安全)。要不然,用户将无法提交他们的更改。就算Apache以本机system来运行,你也要设置它能完全读写版本库目录。如果没有为Apache配置这个许可,用户将会得到"禁止访问"的错误信息,在Apache的错误日志中表现为错误500。
2.2.安装Subversion
从http://Subversion.tigris.org/servlets/ProjectDocumentList?folderID=91(英文)或href="http://www.iusesvn.com/bbs/forumdisplay.php?fid=7">http://www.iusesvn.com/bbs/forumdisplay.php?fid=7中文)下载最新版本的Subversion。运行Subversion安装程序,如果安装程序能够识别你已经安装了Apache,那么你的安装基本上就OK了。如果它不能,那么你要做一些额外的步骤。注:Subversion和Apache2.0.x结合时如果你先安装Apache,再安装Subversion,正常情况下下面的工作(2.3配置前)Subversion安装程序已经帮你完成了使用资源管理器,进入Sibversion的安装目录(通常为c:\programfiles\Subversion),找到文件httpd/mod_dav_svn.so和mod_authz_svn.so,将它们拷贝到Apache的modules目录(通常为c:\programfiles\apachegroup\apache2\modules)。从Subversion的安装目录拷贝文件libdb43.dll到Apache的modules目录。
使用如记事本之类的文本编辑器编辑Apache的配置文件(通常为c:\programfiles\apachegroup\apache2\conf\httd.conf),修改以下内容:
去掉以下行的注释(将开头的#删除):
CODE:
#LoadModuledav_fs_modulemodules/mod_dav_fs.so
#LoadModuledav_modulemodules/mod_dav.so
在LoadModule节的最后添加以下两行:
CODE:
LoadModuledav_svn_modulemodules/mod_dav_svn.so
LoadModuleauthz_svn_modulemodules/mod_authz_svn.so
2.3.配置
现在,你已经安装了Subversion和Apache2.0.x,但是Apache还不知道如果处理像TortoiseSVN一样的Subversion客户端。要让Apache知道哪个URL将被Subversion使用,你要像下面这样编辑Apache的配置文件(通常在c:\programfiles\apachegroup\apache2\conf\httpd.conf):
在配置文件的最后添加下面这些行:
CODE:
DAVsvn
SVNParentPathD:\SVN
AuthTypeBasic
AuthName"Subversionrepositories"
AuthUserFileD:\passwd
#AuthzSVNAccessFileD:\svnaccessfile
Requirevalid-user
这样配置表示:你所有的版本库将位于D:\SVN目录下,要访问你的版本库可以使用这样的URL:http://MyServer/svn/,访问权限将由passwd文件中的用户名/密码来限制。
要创建passwd文件,可以打开命令行(DOS窗口),将当前目录切换到apache2目录(通常为c:\programfiles\apachegroup\apache2),然后打入以下命令以创建文件:
CODE:
bin\htpasswd-cpasswd
将你的浏览器指向http://MyServer/svn/MyNewRepository(MyNewRepository是你之前创建的Subversion版本库)。如果一切正常,你将被提示输入用户名密码,输入正确的用户名密码后你就可以看到版本库中的内容了。
对你刚刚输入的apache配置作一些简短的说明:
QUOTE:
意味着可以通过像这样的URL(http://MyServer/svn)来访问Subversion版本库
DAVsvn
告诉Apache哪个模块负责服务像那样的URL--在这里就是Subversion模块
SVNListParentPathon
在Subversion1.3及更高版本中,这个指示器使得Subversion列出由SVNParentPath指定的目录下所有的版本库
SVNParentPathD:\SVN
告诉Subversion在目录D:\SVN下寻找版本库
AuthTypeBasic
启用基本的验证,比如用户名/密码对
AuthName"Subversionrepositories"
当一个验证对话框弹出时,告诉用户这个验证是用来做什么的
AuthUserFileD:\passwd
指定D:\passwd用为密码文件用来验证用户的用户名及密码
AuthzSVNAccessFileD:\svnaccessfile
指定D:\svnaccessfile来限定各个用户或组在版本库中目录的访问权限
Requirevalid-user
限定用户只有输入正确的用户名及密码后才能访问这个路径。Subversion和Apache2.0.x结合到这里还没有结束,请大家继续关注下篇。
【编辑推荐】