[图] Windows平台下trac管理平台的搭建
1. 前言
本文将介绍Windows平台下trac+svn+apache平台的搭建。
Trac是一个集成了Wiki和问题跟踪系统的轻量级项目管理平台,采用Python语言开发。
首先我们来看一下trac项目的网站(http://trac.edgewall.org)。这个网站本身也是用trac搭建的哦,就像svn项目自己也是用svn来进行管理一样。
trac平台的首页是wiki,通常这里可以用来放置用户手册、FAQ、下载链接以及各种小技巧。
在时间线(timeline)页面,可以浏览各种事件,包括源码的变更集(changeset)、wiki的编辑、任务单(ticket)的建立和状态变更等。
点击其中的一个事件链接,如一个变更集(changeset),可以看到更详细的资料。
在路线图(roadmap)页面中,可以查看各个里程碑的完成状态。
点击其中一个里程碑,可以查看相应的描述信息,和各个组件(component)中任务的完成状态。在trac中,组件通常是一些抽象服务的描述,而不是软件实现过程中的模块(module)。如上图所示,attachment组件用来表示所有和“附件”相关的任务,而i18n表示国际化支持。
最后,trac还支持对svn库中的文件进行浏览,并且可以在给定的两个版本间进行比较。
2. 安装前的准备
下载以下安装包。
- Apache:httpd-2.2.21-win32-x86-openssl-0.9.8r.msi
- mod_wsgi: mod_wsgi-win32-ap22py27-3.3.so
- Subversion:Setup-Subversion-1.7.1.msi
- Subversion Python Binding:svn-win32-1.7.1_py27.zip
- Python:python-2.7.2.msi
- Setuptools:setuptools-0.6c11.win32-py2.7.exe
- trac:Trac-0.12.2.win32.exe
- Babel:Babel-0.9.6.win32.exe
- Genshi:Genshi-0.6.win32.exe
如果需要一个图形化的svn客户端,还可以先把TortoiseSVN准备好。
- TortoiseSVN-1.7.1.22161-win32.msi
- TortoiseSVN-1.7.1.22161-x64.msi (用于64位Windows)
以上各软件的版本都是是写这篇文章时的最新版,不过有一个例外。Python的 3.x的最新版已经是3.2.2了,不过trac并不支持Python 3.x版,因此这里使用的是Python 2.x的最新版。
3. 开始安装
3.1 Apache
运行httpd-2.2.21-win32-x86-openssl-0.9.8r.msi。在服务器信息页面,按照下面填写即可。
安装类型(Setup Type)选择为Typical,安装路径可以略加精简,这里设置为H:\Apache。
安装完成后,托盘图标区域会自动出现Apache Service Monitor,可对服务器进行一些基本的操作。这时也可以打开127.0.0.1访问Apache默认首页了。
注意:如果80端口被占用,安装将失败。在安装之前,请关闭Microsoft SQL Server服务,或者卸载类似的软件。
3.2 mod_wsgi
将文件mod_wsgi-win32-ap22py27-3.3.so重命名为mod_wsgi.so,并复制到H:\Apache\modules\目录下。
3.3 Python
安装Python到默认位置,这里是H:\Python27,安装方式保持默认状态。
3.4 Setuptools、Babel、Genshi、Trac
依次安装Setuptools、Babel、Genshi和Trac。以上4者都是Python应用程序,只需一路点击下一步即可完成安装。
3.5 Subversion
安装Subversion到默认路径,这里是H:\Program Files\Subversion。
3.6 Subversion Python Binding
解压文件svn-win32-1.7.1_py27.zip,将libsvn和svn两个目录复制到H:\Python27\Lib\site-packages下。
4. 配置环境变量
在环境变量Path中,加入以下的路径。
- H:\Python27
- H:\Python27\Scripts
- H:\Apache\bin
- H:\Program Files\Subversion\bin
如果安装至默认路径,则环境变量Path中需要新增的内容可能是这个样子。
C:\Python27;C:\Python27\Scripts;C:\Program Files\Apache Software Foundation\Apache2.2\bin;C:\Program Files\Subversion\bin
5. 建立项目
这里所说的项目由2部分组成,其一是trac管理平台,其二是svn库(repository)。
首先需要为二者选定一个路径,这个路径用于保存trac/svn库中的所有信息,同时也是今后备份的对象。假设选定如下两个目录。
- D:\Demo\trac
- D:\Demo\svn
5.1 建立svn库
打开cmd,输入以下指令,建立Demo项目的文件库。
svnadmin create "D:\Demo\svn"
编辑项目Demo的用户密码配置D:\Demo\svn\conf\passwd,将其设置如下。
[users] harry = harryssecret sally = sallyssecret
编辑项目Demo的访问控制配置D:\Demo\svn\conf\authz,将其设置如下。
[groups] harry_and_sally = harry,sally [/] harry = rw sally = r * = r
编辑项目Demo的综合配置D:\Demo\svn\conf\svnserve.conf,将其设置如下。
[general] anon-access = read auth-access = write password-db = passwd authz-db = authz
此时我们已经为Demo的文件库建立了2个用户,Harry和Sally,密码分别是harryssecret和sallyssecret。Harry具有读写权限,Sally具有读权限,而所有其他的非认证用户都具有读权限。
5.2 建立trac管理平台
打开cmd,输入以下指令。
trac-admin "D:\Demo\trac" initenv
trac-admin首先会提示输入项目名称,这里输入Demo,然后回车。
然后需要输入使用的数据库,这里可以直接回车使用默认内置的SQLite。
于是trac-admin将开始建立项目环境。当建立完成时,最后一行的输出将是Congratulations!。
在cmd下使用htpasswd建立trac平台的用户和密码。使用参数-c代表首先清空文件,否则是新增用户。
htpasswd -c "D:\Demo\trac\password.txt" admin htpasswd "D:\Demo\trac\password.txt" billy
上面已经建立了管理员admin和用户billy的密码文件。但是admin只是名为管理员。使用下面的命令赋予用户admin trac管理员的权限。
trac-admin "D:\Demo\Trac" permission add admin TRAC_ADMIN
接下来产生trac的wsgi脚本。
mod_wsgi是Apache的一个模块,用于运行兼容wsgi的Python应用程序,由于使用C语言编写,具有非常好的性能。
在cmd下输入以下指令。
trac-admin "D:\Demo\trac" deploy "D:\Demo\trac\deploy"
trac-admin会自动建立一个deploy目录,并且生成相应的脚本。我们所需要的文件为D:\Demo\trac\deploy\cgi-bin\trac.wsgi。
编辑Apache的配置文件,H:\Apache\conf\httpd.conf,定位到LoadModule区域的末尾,加入以下内容。
LoadModule wsgi_module modules/mod_wsgi.so WSGIScriptAlias / D:\Demo\trac\deploy\cgi-bin\trac.wsgi <Directory "D:\Demo\trac\deploy\cgi-bin"> WSGIApplicationGroup %{GLOBAL} Order deny,allow Allow from all </Directory> <LocationMatch "/login"> AuthType Basic AuthName "Trac" AuthUserFile "D:\Demo\trac\password.txt" Require valid-user </LocationMatch>
保存配置文件,重启Apche。这时,在浏览器中输入127.0.0.1,已经可以访问管理平台了。
6. 配置trac
6.1 默认附件大小
打开文件D:\Demo\trac\conf\trac.ini,定位到[attachment]一节,将附件大小设置为5 MB。
max_size = 5242880
6.2 使用默认的Logo
编辑D:\Demo\trac\conf\trac.ini的[header_logo]一节,使用默认Logo trac_banner.png。
[header_logo] alt = height = -1 link = src = trac_banner.png width = -1
6.3 集成svn
我们可以让一个trac项目和一个svn库联系在一起,当svn库更新时,将在timeline页面产生一条事件,同时也可直接浏览svn库中的文件。
编辑D:\Demo\trac\conf\trac.ini的[trac]一节,填入svn库的地址,如下所示。
repository_dir = D:/Demo/svn
7. 开始运行
再次重启Apache,这时整个平台已经基本成形了。运行cmd,输入以下指令。
svnserve -d -r "D:\Demo\svn"
这样svn服务将开始运行。为了使用方便,可以安装TortoiseSVN等图形客户端。在向svn库中添加一个文件后,timeline已经可以正常显示了。
8. 一些额外的配置
有时我们会希望以Windows服务的形式来运行svn服务,而不是建立一个快捷方式运行svnserve程序。
为了达到这个目的,可以使用管理员权限打开cmd,输入以下指令。
sc create svnservice binpath= "\"H:\Program Files\Subversion\bin\svnserve.exe\" --service -r D:\Demo\svn" displayname= "svnservice" depend= Tcpip
注意如果参数中有空格,那么双引号中的双引号需要使用转义字符(\")。另外displayname和depend后面必须紧跟等号,后跟一个空格。
如果需要启动svn服务,输入如下指令。
net start svnservice
如需停止,输入以下指令。
net stop svnservice