如何使用Apache配置Web访问Subversion存储库

如何使用Apache配置到Subversion存储库的Web访问

这将如何描述使mod_dav_svn模块在Apache Web服务器中工作的步骤。 首先,我假设我们的FreeBSD框中没有安装Apache和Subversion,第二部分将介绍如何使用当前安装来添加模块。

首先,我们必须安装我们的Apache 2.0.x与Berkeley DB支持(因为Subversion将使用Berkeley DB来保存存储库)。 要做到这一点,我们必须去ports dir并且这样做:

box# cd /usr/ports/www/apache20/
box# make -DWITH_BDB4 install clean
some installation steps...

添加apache启动时自动启动的能力:

box# echo 'apache2_enable="YES"' >> /etc/rc.conf

在我们使用apache20安装了bdb支持后,我们必须安装Subversion:

box# cd /usr/ports/devel/subversion
box# make -DWITH_MOD_DAV_SVN install clean
some installation steps...

安装后,我们必须确保mod_dav_svn模块在apache上正确安装。

box# cat /usr/local/etc/apache2/httpd.conf | grep svn
LoadModule dav_svn_module     libexec/apache2/mod_dav_svn.so
LoadModule authz_svn_module   libexec/apache2/mod_authz_svn.so

我们有apache与mod_dav_svn模块正确安装。 此时我们可以创建一个存储库。 这将有助于我们测试我们的安装:

box# mkdir /usr/home/svn
box# mkdir /usr/home/svn/repos
box# svnadmin create /usr/home/svn/repos/test

那么我们必须创建用于验证用户的文件。

box# mkdir /usr/home/svn/access
box# cd /usr/home/svn/access
box# htpasswd -cm users root
password:****
box# htpasswd -m users viewer
password:*****
box# vi control
[test:/]
root = rw
viewer = r

在这一点上,我们有apache与bdb支持,subversion与mod_dav_svn模块安装,我们的存储库创建,用户和控制到我们的存储库。 现在我们将配置apache来读取存储库:

box# cd /usr/local/etc/apache2/Includes/
box# cat svn.conf
<Location /svn/repos>
DAV svn
SVNParentPath /usr/home/svn/repos
SVNIndexXSLT "http://svn.example.com/svnindex.xsl"
AuthzSVNAccessFile /usr/home/svn/access/control
# anonymous first
Satisfy Any
Require valid-user
# authenticating them valid ones
AuthType Basic
AuthName "Subversion Repositories at example.com"
AuthUserFile /usr/home/svn/access/users
</Location>

Apache将读取Includes目录下的所有文件,因此当apache启动时,我们的svn.conf将被加载,请注意,如果要给出转换完成的文件,我们正在加载svnindex.xsl您的存储库一些外观和感觉工作这些文件将是适当的。 文件框架在/ usr / local / share / subversion / xslt /目录下,有两个文件,一个.xsl和另一个.css。 将这些文件复制到文档根目录。 我的机器中有一个名为svn.example.com的虚拟服务器。 我的所有虚拟服务器都在/ usr / local / www / pages下 ,所以我有svn.example.com目录,并且已经在/usr/local/etc/apache2/httpd.conf中配置了这个虚拟服务器。

NameVirtualHost *:80
<VirtualHost *:80>
ServerAdmin ecruz@example.com
ServerName svn.example.com
DocumentRoot /usr/local/www/pages/svn.example.com
CustomLog /var/log/svn.example.com-access_log common
</VirtualHost>

重新启动Web服务器:

/usr/local/etc/rc.d/apache2.sh restart

如果一切顺利,我们的Web服务器正常工作,测试它,在Firefox或任何浏览器中打开,然后访问http://svn.example.com/svn/repos/test 。 它将要求您提供凭据,因此请使用rootviewer 。 它必须在版本0显示测试库。我建议在Windows框上安装TortoiseSVN,以访问存储库。

现在,作为一个加号,我们将在我们的subversion测试库中配置一个警报,以便在提交完成时发送通知。 为此,我们必须在hooks目录下创建一个可执行文件:

box# cd /usr/home/svn/repos/test/hooks/
box# cat post-commit
[code]
#!/usr/local/bin/php
<?
$message = "SubVersion Commit
Project: Test
http://svn.example.com/svn/repos/test full repository
==============Comments==============
";
$repos = $argv[1];
$version = $argv[2];
$message .= `svnlook log -r $version /usr/home/svn/repos/test`;
$message .= "
===========List of Changes========
";
$message .= `svnlog diff -r $version /usr/home/svn/repos/test`;
mail("address@example.com","SubVersion Commit $repos $version",$mensaje,"From: svn@example.com");
?>
[/code]

要使其与当前安装一起使用,您只需要更改subversion安装步骤:

box# cd /usr/ports/devel/subversion 
box# make deinstall
box# make -DWITH_MOD_DAV_SVN -DWITHOUT_BDB4 install clean

好的,这是这个howto的结尾,任何改进都是值得欢迎的。 问候!

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏