日期:2014-05-17  浏览次数:20914 次

在windows下安装trac

trac是一个很不错的wiki+bug tracker软件
公司急需一个bug tracker软件来管理bug和一些小任务
经过评估之后,终于决定使用trac(有空我再写一篇比较和评估的依据)

trac的安装有点麻烦,因为他用了不少外部库,有些还是c写的。这个也是影响我评估的其中一个因素,差点就不打算使用它了
经过几天的研究,发现trac在windows下的安装异常简单,但是有好多需要注意的细节,于是变有了这篇文章
说实在话,现在我甚至觉得windows下的安装比linux还要简单,呵呵

Trac Guide里面的[Trac Installation Guide](http://trac.edgewall.org/wiki/TracInstall)仅仅是一个通用的描述,并不是具体的步骤,所以这个页面只能当成是参考的部分。不过,页面里面也穿插了很多细节,什么可以用什么不能用,所以最后还是得详细看一遍才清楚

真正正确和详细的步骤其实有一份[Trac on Windows](http://trac.edgewall.org/wiki/TracOnWindows)的文档,但是藏的比较隐蔽,具体的入口在Trac FAQ中

让我们来看看这份文档吧,基本上,跟随这份文档你就能在windows安装一个trac

首先是python的版本选择问题,虽然python2.5已经出了很久,但是,因为trac依赖了一个c写的模板引擎ClearSilver,并没有for python2.5 windows的编译好的包,因此,你必须自己编译ClearSilver,那是相当的麻烦。linux呢?linux反正是要编译的,所以就算用python2.4情况也是一样(所以linux的安装还是比较麻烦的)
除了ClearSilver以外,其他包也可能遇到类似的问题,因此,使用python2.4是最佳的选择

题外话,其实还有另外一个选择,就是使用trac 0.11dev。不知道具体的原因,trac已经决定使用Genshi来代替ClearSilver作为模板引擎,具体的文档是[Trac with Python 2.5](http://trac.edgewall.org/wiki/TracOnWindows/Python2.5),不过我觉得还是不要使用测试版比较好。另外说一下,Genshi也是trac出品的

接下来,文档提供了4种安装方法。我最后选择了第二种,也比较推荐这种,使用单独的Installer,Setuptools 的确是一个好工具,但是感觉不太好控制

下载并运行trac-0.10.4.win32.exe、clearsilver-0.9.14.win32-py2.4.exe,Installer会自动找到python的位置。trac使用sqlite来做后端存储,所以你还需要pysqlite-2.3.4.win32-py2.4.exe,如果你还想用trac的svn browser功能,你还需要svn-python-1.4.4.win32-py2.4.exe

关于数据库的选择,trac最初只支持sqlite,现在支持postgresql和mysql,但是官方不推荐使用mysql,说是因为字符集问题?(这个理由有点烂),但是官方不推荐是比较麻烦的,专门装个postgresql也不太现实。其实,sqlite的表现相当好,而且,备份起来相当方便,所以最后还是决定用sqlite

然后。。。没有了,呵,其实trac已经安装完成了
运行

\Python24\Scripts\trac-admin.py my-project initenv
\Python24\Scripts\tracd.py -p 8000 my-project

开始试用你的trac吧

总结一下:
1. 使用python2.4
2. 安装trac-0.10.4.win32.exe、clearsilver-0.9.14.win32-py2.4.exe、pysqlite-2.3.4.win32-py2.4.exe
3. 开始使用!

上面介绍了怎么在windows下安装并使用trac,但是只能说基本能用在公司里面使用trac,我们还有一些额外的需求:比如,如何用windows service来运行,可以用web server的方式来跑吗,如何身份认证

其实,所有的这些问题,都可以用apache跑trac解决,而且效果也非常好。下面我就来说说我现在用的配置

首先说一下trac可以使用的运行方式,一共有4种
第一种就是tracd,就是上一篇文章所说的,使用相当便捷,可以作为调试使用,不推荐生产环境
第二种是cgi模式,cgi出名低效率了,直接跳过

第三种是mod_python,一开始我也是使用这种,配置也很方便,不过遇上一个专有问题了
在TracInstall中有描述

> if using mod_python together with xml-related things (like 0.11, or xml-rpc plugin), use python-2.5. expat is namespaced there and does not cause apache to crash any more(see here for details).

刚好我们需要使用xml-rpc,然后apache不停报错,虽然不影响使用,但是还是挺烦的

最后一种方法,就是我们目前在使用的方法,就是使用mod_wsgi
wsgi是最近python提出的一种类似cgi的模型,希望能统一web server <-> app server的通讯,似乎很多人都很推崇,不过因为比较新生,所以似乎用的人也不是很多,刚好trac提供了支持。搜索到mod_wsgi for windows编译好的包,使用非常稳定,下面是我的apache配置

LoadModule wsgi_module modules/mod_wsgi.so
WSGIScriptAlias /trac d:/trac/apache/trac.wsgi

Order deny,allow
Allow from all

呵呵,很简单

然后就是认证问题,好像有多种方法,我使用的是apache内置的认证,trac直接支持
刚好我们的svn也是用这种方式来配置认证的,可以使用同一个user文件,这样svn和trac的帐号就可以互通了


AuthType Basic
AuthName “xxxx”
AuthUserFile d:/svn-repo/users
Require valid-user