第1章 引 言
目前在软件开发中越来越提倡团队的开发效率与彼此之间的协作开发,在一个团队里面bug tracker工具是很重要的。软件一定有bug,我们需要一个跟踪bug的工具,谁报告的bug?详细情况怎么样?别人能不能还原?
需要修正吗?优先度?已经修正了吗?开发进度跟踪如何了?等等。需求越多,太全面的功能在实际中也会导致其复杂性,为了减少在这复杂过程出现错误,最近需要在公司部署一个bug tracker,目前可以选择的工具也有不少,比如Bugzilla、JIRA、Mantis、Trac;由于其Trac可以很好的与SVN进行整合,同时还融入了Wiki的功能,其应用性具有很高的优势,而目前对于这方面的相关文档主要以英文资料为主,为了更好地便于大家掌握此管理工具的应用,故编写本文档以供大家参考!
笔者在编写本文档过种中也参考了在线官方英文站点:
http://trac.edgewall.org/,有兴趣的朋友可以直接在线查看英文资料!
1.
Trac
简介
Trac
是一个为软件开发项目需要而集成了
Wiki
和问题跟踪管理系统的应用平台,是一个开源软件应用。
Trac
以简单的方式建立了一个软件项目管理的
Web
应用,以帮助开发人员更好地写出高质量的软件;
Trac
应用力求不影响现有团队的开发过程。
2.
Wiki
的概念
Wiki 是一个协同写作平台或者称之为开放编辑系统,即它允许所有人修改它的网页。
Wiki 使用了简化的语法,替代复杂的 HTML,加上 WEB 界面的编辑工具,降低内容维护的门槛。Wiki的特点是方便和开放。
Wiki 最适合做百科全书、知识库、整理某一个领域的知识等知识型站点,几个分在不同地区的人利用
Wiki 协同工作共同写一本书等等。Wiki 技术已经被较好的用在百科全书、手册/FAQ编写、专题知识库方面。
目前Trac版本最新的为0.11b1版本,但不建议大家下载其beta版,可以下载官方网上的Trac0.11dev版,而本文中由于考虑到Eclipse中的mylyn2.2最新版也只支持0.9X与0.10.X版的支持,故在本文档中结合实现需要,以Trac0.10.4为例进行讲解,其两种版本在安装上有了很大的变化,至于0.11dev版的安装请参见作者的另一篇安装详解,将不在本文中探讨!
Trac是一个轻量级的项目管理工具,是一个基于web的应用程序。Trac是用Python语言开发的,需要数据库(
SQLite,
PostgreSQL,
MySQL 等)的支持才能运行。对于HTML渲染,在Trac 0.11版本之前用的是
ClearSilver,以后推荐用的是
Genshi.这就是两个不同版本安装配置之间最大的区别之一。
在Trac的官网上有有一篇安装指南,针对Trac0.11版本的,而本文档中将以Trac0.10.4为例向大家讲解在Windows平台环境下的安装与配置的详细过程。
注:请务必注意软件的版本及安装的顺序
!
另外其中有很多软件可以下到
zip
包的,但不建议下载
ZIP
包的文件,手工配置也较为烦琐,稍有疏忽就有可能造成其
python
不能用的情况,所以建议使用
exe
安装版来自动完成识别操作,当然有人非想尝试手工配置也是可以的,需将其相关文档解压到
site-packages
文件夹中并进行相关配置也是可以的,但其配置相当烦琐,需要有耐心方可不会出错,此方法将不在本文中讨论。
1. 首先进行下载
Python,然后进行默认安装,在本例中推荐大家使用
python-2.4.4msi,否则ClearSilver将无法安装,目前ClearSilver还暂未支持python2.5。
2. 下载并进行安装
ClearSilver,本例中下载
clearsilver-0.9.14.win32-py2.4.exe在安装过程中会自动识别python的安装目录,直接进行下一步操作完成安装即可。
3. 下载安装
Subversion Python Bindings,本例中下载
svn-python-1.4.6.win32-py2.4.exe安装时会自动识别Python的安装目录,此软件是对SVN的版本库的支持功能。
4. 下载安装
PySQLite,本例中下载
pysqlite-2.4.1.win32-py2.4.exe安装时会识别Python安装目录。PySQLite是SQLite和Python 绑定的轻量级数据库引擎,它是Trac默认的数据库。
在安装Trac之前,首先要下载安装
setuptools ,安装步骤如下:在主页
http://peak.telecommunity.com/DevCenter/EasyInstall#installing-easy-install中将
ez_setup.py的文件右击给另存下载下来(如保存到Python24的安装目录下面,放在这个目录下是为了后面的方便操作),以CMD命令窗口方式进入ez_setup.py文件所在的目录输入以下命令:
>python ez_setup.py
即可自动完成安装和python版本对应的setuptools了!(此安装过程会自动从网站上下载文件,所以必须在Internet网进行安装操作,同样也可以通过下载文件的方式进行安装,
http://pypi.python.org/pypi/setuptools进入该页后点击下载
setuptools-0.6c7.win32-py2.4.exe
或者
setuptools-0.6c7-py2.4.egg
都可以,后者
egg
的文件需要通过命令方式进行安装就像安装
ez_setup.py
文件一样,只是将文件的名称换一下就可以了)。
安装setuptools以后就可以直接开始安装Trac了,下载并安装
trac-0.10.4.win32.exe,安装时会自动识别Python的安装目录,根据向导一步步完成安装操作即可。
2.3 配置Trac环境
完成上述的安装后,就可以创建一个TracEnvironment,它是Trac存储信息的地方,如 wiki pages, tickets, reports, settings等,也是最重要的一个环节!
可以通过Trac-admin的命令方式进行创建TracEnvironment,但在创建之前要确保你也安装了SVN并创建了SVN的版本库,关于SVN的安装与配置请参见作者另一篇书籍《Apache+SVN服务器安装与配置》。
2.3.1 创建Trac Environment
在本例中首先在D盘的目录下新建一个var/trachome目录结构,然后以CMD命令窗口方式进入python/Scripts目录下输入:
>[python
的目录]/python trac-admin D:/var/trachome/projects initenv
然后根据提示输入项目的名字(本例中为projects),如下图所示:
![](https://p-blog.csdn.net/images/p_blog_csdn_net/apicescn/environment.jpg)
然后提示询问数据库连接字符串类型,本例中使用的是sqlite,故采用默认就可以了(如果你本机装了 mysql可以选择mysql,但此版对mysql的支持还需加强,故推荐使用默认的数据库),详情如下图所示:
![](https://p-blog.csdn.net/images/p_blog_csdn_net/apicescn/project.jpg)
接下来是询问版本库类型,也是默认SVN,直接回车以后询问版本库路径位置,也就是SVN的源码版本库,输入即可,回车。
注意:此处一定要填写正确否则是没法将
SVN
的版本库与
Trac
进行联系起来。不过在这里填写错误后还是可以通过
trac.ini
配置文件进行修改的。另外如果此时还没有创建
SVN
版本库也没有关系,只需当创建
SVN
版本库时将目录指向这里就可以了。
最后询问模板路径,这个采用默认即可,回车接下来就是自动生成一系列模板,最后显示Congratulations!即完成了所有的配置操作。
2.3.2 启动Trac
上述TracEnvironment创建好以后,接下来我们将需要启动它,以命令窗口方式进入Python/Scripts文件夹输入:
>[python
的目录]/python tracd -p 8080 D:/var/trachome/projects
当看到 Serving on 0.0.0.0:8080 view at http://127.0.0.1:8080/ 时,就表示服务器启动成功了,如下图:
![](https://p-blog.csdn.net/images/p_blog_csdn_net/apicescn/server.jpg)
本例中将python加入了环境变量中,故无须输入
[python
的目录]/python这样的前缀
,出现此提示即表示启动完成!
启动以后该窗口将不可关闭,打开浏览器输入
http://127.0.0.1:8080/projects/就可以看到欢迎页面了,到此完成了Trac的安装,且实现了与SVN版本库的统一平台,点击Browse Source就可以看到SVN库中的项目资源了。如下图所示:
![](https://p-blog.csdn.net/images/p_blog_csdn_net/apicescn/Browse%20Source.jpg)
正如前面所述,Trac
是以简单的方式建立了一个软件项目管理的
Web
应用,它可以很方便地利用
web
应用来管理你的项目以及相关版本、报告的发布与异常信息的跟踪等
.
此处存在一个问题,就是任何人都可以看到相关的资源以及跟踪信息,这在企业中是需要对资源有一定的权限控制的,针对不同的用户可以自由控制其权限。由于
Trac
有两个默认用户
anonymous
(匿名用户)
authenticated
(验证用户),其默认权限对所有功能都具有
view
的权限,这个项目管理中有时是不允许的,那么如何进行权限的控制以及相关赋权设置呢?
Trac
的优点就在于它的身份验证可以使用
Apache
的身份验证并可以与
SVN
的身份验证一致,三者有机的结合,无论从高性能上还是其应用性上都具有较为完美的搭配,目前上面
Trac
的配置是运行在一个独立的服务器上,只能运行一个项目,一般只用于自己单机访问。为了便于网上共享;发挥与
Apache
集成更多的优点,比如充分利用
Apache
的强大功能以及
ModPython
的高效率,便于管理与控制,且很方便支持
ssl
等等。
如何与
Apache
集成在其官方网站上提供的安装指南上面提供了三种方法
CGI,
FastCGI and
mod_python.为了提高性能,推荐使用后面两种,在本例中安装时采用第三种。关于Apache的安装与配置可参见《Apache+SVN服务器安装与配置》一文。
在
http://www.modpython.org/
页面下载相应的安装程序,注意版本对应。本例中下载的是
mod_python-3.3.1.win32-py2.4-Apache2.0.exe
,然后安装,安装过程中会要求选择
Apache
的安装目录,并且自动把
mod_python.so
复制到
modules
目录,完成后还要进行配置(类似于
SVN
和
Apache
的集成)。
1.
配置
ModPython
在Apache的安装目录(Apache Group/Apache2/conf)下找到httpd.conf文件中的LoadModule部分的最后加入下面一行:
LoadModule python_module modules/mod_python.so
如下图所示:
![](https://p-blog.csdn.net/images/p_blog_csdn_net/apicescn/httpd.jpg)
2.
配置
Trac
服务
完成上述配置以后,在httpd.conf文件中的最后部分加入以下内容,如下图所示:
![](https://p-blog.csdn.net/images/p_blog_csdn_net/apicescn/trac.jpg)
进行如上后续配置后即完成了Trac与Apache之间的WebDav的工作了。重启Apache以后可看到如下图:
![](https://p-blog.csdn.net/images/p_blog_csdn_net/apicescn/Apache.jpg)
图中状态栏显示Apache/2.0.63(Win32) SVN1.4.6 DAV/2, Apache服务配置完成,打开浏览器输入:
http://127.0.0.1/projects来访问,我们看到了同上一章节独立运行于Trac服务器上一样的界面,接下来将完成统一身份验证!
备注:如果启动时出现错误的话,可
将svn-win32-1.4.6/bin目录下的所有dll文件全部复制到Apache Group/Apache2/cgi-bin目录下,另将下载下来的D:/trac/目录下的cgi-bin文件夹内容复制到Apache Group/Apache2/
cgi-bin
目录下.
3.1.2 Trac的身份验证
1.
创建密码文件
以命令窗口方式进入到
Apache Group/Apache2/bin文件夹下输入:
>htpasswd -c D:/var/trachome/projects/conf/trac.passwd Allen
上述命令表示为
projects创建一个用户名为Allen的trac.passwd密码文件.回车后提示输入密码,如下图:
![](https://p-blog.csdn.net/images/p_blog_csdn_net/apicescn/passwd.jpg)
2.
配置身份验证
创建密码文件以后,对其Allen用户进行Trac用户验证,打开Apache Group/Apache2/conf目录下的httpd.conf配置文件,在最后面加入如下图所示内容:
![](https://p-blog.csdn.net/images/p_blog_csdn_net/apicescn/login.jpg)
完成上述配置后重启Apache服务器,然后浏览
http://127.0.0.1/projects ,点击Login,将看到如下效果图:
![](https://p-blog.csdn.net/images/p_blog_csdn_net/apicescn/projects.jpg)
3.2 Trac的授权设置
在本例中
Trac 0.10.4
版本需要安装
WebAdmin
插件才能以
web
的方式管理用户及授权,而此后的版本就不在需要了,已经集成了,这又是与
Trac0.11
版安装不同的一处。前面创建的
Apache
的身份验证,都不具有
TRAC_ADMIN
权限,也就无法进行授权设置。
1.
安装
WebAdmin
svn export http://svn.edgewall.com/repos/trac/sandbox/webadmin/
然后通过命令方式进行安装,进入webadmin的目录下输入:
>[python
的目录]/python setup.py等待安装完成即可。
另外就是直接访问
http://trac.edgewall.org/wiki/WebAdmin地址下载WebAdmin,在本例中请下载
TracWebAdmin-0.1.2dev_r6060-py2.4.egg.zip文件,然后将其扩展名zip后缀去掉,命令方式进行Python的Scripts目录下输入:
>Easy_install D:/software_tools/TracWebAdmin-0.1.2dev_r6060-py.egg等待完成如下图所示:
![](https://p-blog.csdn.net/images/p_blog_csdn_net/apicescn/webadmin.jpg)
出现Finished提示已经完成安装TracWebAdmin。
2.
授权设置
为了更好地区别不同用户之间的区别,在本例中在原来密码文件中新增一个admin用户,以命令窗口方式进入Apache Group/Apache2/bin目录下输入:
>htpasswd -m D:/software_tools/var/trachome/projects/conf/trac.passwd admin
根据提示完成操作,然后为admin用户授权TRAC_ADMIN,进入到python24/Scripts目录下输入命令:
>trac-admin D:/software_tools/var/trachome/projects permission add admin TRAC_ADMIN
重新启动Apache服务器完成后再以admin帐号Login,在导航栏的search的最后面就会看到Admin,点击进入可以看到如下效果图:
![](https://p-blog.csdn.net/images/p_blog_csdn_net/apicescn/admin.jpg)
此项内容可以对用户的权限、插件的管理、配置属性等等进行相关的设置,对于以后下载的插件可以直接通过Web应用方式进行安装。在这里可以对默认的用户
anonymous
(匿名用户)进行权限的更改,将此
BROWSER_VIEW
与一些项目管理中不应所有人都看到的权限进行修改,点击应用保存更改即可。
另外为了Browse Source的资源库(也就是SVN版本库)的项目能够与SVN的权限保持一致,需要将var/trachome/projects/conf目录下的trac.ini文件进行配置,打开trac.ini文件将其中的[trac]项的authz_file值修改成与SVN版本控制权限一致。例如本例中为:
[trac]
authz_file = D:/software_tools/var/svnhome/projects/conf/accesspolicy
此时在没有登陆的情况下
anonymous
(匿名用户)就是有Browse Source的权限也是无法查看其项目内容的,会提示用户Insufficient permissions to access权限不够,这就实现了与SVN权限统一的目的。
3.
建立
globle trac.ini
将
D:/software_tools/var/trachoma/projects/conf目录下的
trac.ini文件复制到
[python
的目录]/ share/trac/conf(conf需要手工创建)文件夹下,然后删除一些与当前Trac环境相关的特有属性,修改后的文件内容如下:
# -*- coding: utf-8 -*-
[attachment]
max_size = 262144
render_unsafe_content = false
[browser]
downloadable_paths = /trunk, /branches/*, /tags/*
hide_properties = svk:merge
[changeset]
max_diff_bytes = 10000000
max_diff_files = 0
wiki_format_messages = true
[header_logo]
alt =
height = -1
link = http://example.org/
src = common/trac_banner.png
width = -1
[logging]
log_file = trac.log
log_level = DEBUG
log_type = none
[mimeviewer]
enscript_modes = text/x-dylan:dylan:4
enscript_path = enscript
max_preview_size = 262144
mime_map = text/x-dylan:dylan,text/x-idl:ice,text/x-ada:ads:adb
php_path = php
tab_width = 8
[notification]
always_notify_owner = false
always_notify_reporter = false
always_notify_updater = true
mime_encoding = base64
smtp_always_bcc =
smtp_always_cc =
smtp_default_domain =
smtp_enabled = false
smtp_from = trac@localhost
smtp_from_name =
smtp_password =
smtp_port = 25
smtp_replyto = trac@localhost
smtp_server = localhost
smtp_subject_prefix = __default__
smtp_user =
use_public_cc = false
use_short_addr = false
use_tls = false
[project]
admin =
descr = My example project
footer = Visit the Trac open source project at<br /><a href="http://trac.edgewall.org/">http://trac.edgewall.org/</a>
icon = common/trac.ico
name = projects
url =
[search]
min_query_length = 3
[ticket]
default_component =
default_milestone =
default_priority = major
default_type = defect
default_version =
restrict_owner = false
[timeline]
changeset_long_messages = false
changeset_show_files = 0
default_daysback = 30
ticket_show_details = false
[trac]
authz_file =
authz_module_name =
base_url =
check_auth_ip = true
database = sqlite:db/trac.db
default_charset = iso-8859-15
default_handler = WikiModule
htdocs_location =
ignore_auth_case = false
mainnav = wiki,timeline,roadmap,browser,tickets,newticket,search
metanav = login,logout,prefs,help,about
permission_store = DefaultPermissionStore
repository_dir =
repository_type = svn
timeout = 20
[wiki]
ignore_missing_pages = false
split_page_names = false
[components]
webadmin.* = enabled
acct_mgr.htfile.HtPasswdStore = enabled
acct_mgr.admin.AccountManagerAdminPage = enabled
acct_mgr.web_ui.AccountModule = enabled
trac.web.auth.LoginModule = disabled
acct_mgr.web_ui.LoginModule = enabled
acct_mgr.web_ui.RegistrationModule = enabled
[account-manager]
# authentication_url = <set in global trac.ini>
generated_password_length = 8
# htdigest_realm = <set in global trac.ini>
password_format = htpasswd
password_store = HtPasswdStore
password_file = D:/software_tools/var/trachome/projects/conf/trac.passwd
4.
结束
至此完成了Trac的安装与配置,在后续的指南中将陆续推出更多技术方面的资料与大家一同分享,关于如何与Eclipse中的mylyn之间集成使用,将在下一篇文章中给大家讲解,尽请期待!