[Trac学习]通过apache来访问svn和trac (转自limodou的blog)

在安装好svn和 Trac 后,使用 apache  来访问它们才是有意思的。在配置apache的过程中我逐渐明白了一些东西:

  • svn与trac的访问是独立进行的。比如我想通过http来访问svn,并不是先到trac再到svn,在apache的配置中也是独立的。
  • apache需要2.x版本。因为我使用的就是这个版本,因此不会有什么问题。关键是以前可能使用1.3版本的apache,可能需要再装一个,同时运行两个。
  • 访问svn的用户可以使用 htpasswd 程序来生成,而trac是共用这些用户。trac提供的权限控制是针对trac站点的管理,与访问svn没什么关系。

下面是配置过程:

svn的apache配置

修改httpd.conf文件,增加如下指令:

LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so

这个模块在安装完subversion之后的安装目录httpd目录下有。不过我发现我安装的svn 1.2.3版本中,在bin目录下也有,只不过与httpd的大小不同,不知道是为什么。反正是使用的httpd目录下的。我将其拷贝到了apache的modules目录。还有一个叫mod_authz_svn.so的文件,它的作用是处理svn访问控制文件,这是我们下面要设置的AuthzSVNAccessFile所要使用的。再接着增加:

<Location /svn>
  DAV svn
  SVNPath /path/to/svn
  AuthzSVNAccessFile /path/to/accessfile
  AuthType Basic
  AuthName "Subversion repository"
  AuthUserFile /path/to/password
  <LimitExcept GET PROPFIND OPTIONS REPORT>
    Require valid-user
  </LimitExcept>
</Location>

这是一个模板,有几个地方可以修改:

  1. /svn
    可以改为你想要的名字。当输入的链接为http://你机器的域名/svn时,将转入svn的处理。
  2. /path/to/svn
    这是svn的仓库目录。要记住Trac并不会帮助你建svn的仓库,要单独使用svn创建。
  3. /path/to/accessfile
    svn访问控制文件,它是一个文本文件,存放了从svn根目录开始的子目录的访问用户的权限。用户可以为:*或使用htpasswd生成的用户名,权限为r(读)、w(写)、rw(读写)。具体的可以参考这篇Blog《Subversion: 用 Apache2 作为 Subversion 的服务平台》,这篇文档很好,很详细。
  4. /path/to/password
    apache的用户认证文件。里面存放用户的口令。如果想生成需要使用htpasswd命令。在第一次口令文件不存在时添加第一个用户时,需要使用htpasswd -c /path/to/accessfile username。然后它会问你口令。再添加其它用户时,去掉-c参数即可。

这样svn就设置好了。你可以启动apache,然后执行htpasswd来增加几个用户。然后使用svn或TortoiseSVN来访问你的svn链接,在本机上测试可以为:http://localhost:8080/svn

正式使用还要修改accessfile的内容,如你的仓库下有一个test的模块,可以这样设置:

[/] 
limodou = rw
* = r

[/test] 
limodou = rw

别忘了把上面的limodou改成你想要的名字。名字可以有许多,一个名字一行。

到目前为止,通过http访问svn,到用户访问权限的设置都与Trac无关。那么Trac主要就是起一个管理的作用,同时可以提供web方式浏览svn仓库的功能。下面开始配置trac了。我是按安装文件中提到的TracCgi的方式来配置的。

修改httpd.conf文件,增加以下内容:

ScriptAlias /trac C:/Python23/share/trac/cgi-bin/trac.cgi

# Trac needs to know where the database is located
<Location /trac>
  SetEnv TRAC_ENV /path/to/trac
</Location>

先设置一个脚本别名,这个trac.cgi在你安装完trac之后,在 Python 的share/trac目录下。然后增加trac的定位 /path/to/trac。

设置好后再重启apache,这时访问 http://localhost:8080/trac 就可以访问到 trac了。

至于trac的权限可以参考TracPermissions文档进行设置。只不过这个用户与svn的操作无关都是trac相关的。

经过上面的配置trac和svn就基本上配置好了。

这里我出现过的一个问题就是,svn是从以前的一个版本升级而来的,svn访问都没有问题,但在apache下通过http就不行,错误描述为:

[Thu Nov 10 09:29:48 2005] [error] [client 127.0.0.1] (20014)Error string not specified yet: Berkeley DB error while opening environment for filesystem d://svnroot/db:/nInvalid argument
[Thu Nov 10 09:29:48 2005] [error] [client 127.0.0.1] Could not fetch resource information.  [500, #0]
[Thu Nov 10 09:29:48 2005] [error] [client 127.0.0.1] Could not open the requested SVN filesystem  [500, #160029]
[Thu Nov 10 09:29:48 2005] [error] [client 127.0.0.1] Could not open the requested SVN filesystem  [500, #160029]

经检查,是我的Berkelay DB版本与svn可能不一致,使用svnadmin recover 修复也不起作用。然后我为了试验创建了一个新的svn仓库,这下子发现生成的db目录结构与我现在用的根本就不一样。看来真是版本有问题。于是我创建了一个新的svn库,重新执行了trac-admin.py来生成trac站点目录,再运行就可以了。回头再看一看如何解决db版本的问题。

 



Trackback: http://tb.donews.net/TrackBack.aspx?PostId=621415

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值