我当然愿意公司花钱整一个好的Bug管理工具,但是我发现哪里都是一样,又要马儿跑的快,又要马儿不吃草。所以我要自己找一个开源的东东来玩玩。
2005年的第一期的《程序员》介绍了BugFree,我去sf上看了看,还是0.2版本。虽然很想支持国人的东西,可是毕竟满足不了需求。于是转向了Bugzilla,最主要是最近在sf上看到了Bugzilla有中文版的了,最新的Bugzilla 2.18rc3都有中文语言支持,强!对英语水平不高的测试人员来说,可能是比较好的选择。但是Bugzilla对我们来说,有一点不太好,就是我们的环境都是Windows的。Bugzilla在Windows安装非常复杂,邮件提醒功能好像也有些问题!
使用的软件版本如下:
Bugzilla 2.18 rc3版本(2.18版本是第一个支持windows操作系统的release)
Bugzilla_cn 0.9版本 for Bugzilla 2.18rc3
Apache 2.0.52 win32版本
Mysql 4.1.9 windows版本
Mysqlcc 0.9.4 windows版本
ActivePerl 5.8.6.811 windows版本
操作系统 windows 2000 AD Server
1.安装bugzilla
从www.bugzilla.org下载Bugzilla 2.18rc3版本,直接下载后tar.gz文件,用Winrar解压到c:/bugzilla目录。利用CVS进行更新:
cvs update -rBUGZILLA-2_18rc3 Bugzilla
2.安装mysql
从www.mysql.com下载Mysql 4.1.9的windows版本。安装到c:/mysql目录下。安装完成后,需要配置一个服务,采用快速的配置就可以了。安装完成,默认就启动了mysql服务了。
从www.mysql.com下载Mysqlcc 0.9.4的windows版本。安装到c:/program files/mysqlcc目录下。启动mysqlcc,进入管理界面,新建Server,取名字叫bugs,hostname采用localhost,新建一个数据库,取名字叫bugs,同时新建一个用户bugs,记得选中刚才新建的bugs数据库,并且选中All Privileges和下面的With GRANT option.
这里需要注意一下,在后来的生成bugzilla的数据库表的时候,老是出现cannot access的DBI错误,包括用root帐号都不行。这个问题困扰了我大概一个上午的时间,最后我把bugs用户的密码改为空的,就可以导入了,也不知道是什么地方的问题。如果你也碰到这个问题,可以把密码设置为空试一试。
3.安装ActivePerl
从http://activestate.com/Products/Download/Download.plex?id=ActivePerl地址下载,安装,默认安装路径是c:/perl,我们不用修改。安装完成之后,需要建立一个目录c:/temp,可以把操作系统的默认TMP和TEMP的地址修改到c:/temp下。
4.安装需要的Modules
这是Bugzilla需要的一些Modules,具体可以参考http://landfill.bugzilla.org/ppm/。该目录下的bugzilla-bundle.zip就包含了所有需要的Modules。为了不在Perl的ppm中安装的时候才去下载这些ppd文件,你可以把bugzilla-bundle.zip下载到本地,解压到c:/ppd目录下,然后在安装Modules的时候,直接指定路径就可以了。在cmd的窗口中执行如下的命令:
cd perl/bin
ppm
rep add Bugzilla http://landfill.bugzilla.org/ppm
install file://c://ppd//AppConfig.ppd
install file://c://ppd//TimeDate.ppd
install file://c://ppd//DBI.ppd
install file://c://ppd//DBD-mysql.ppd
install file://c://ppd//Template-Toolkit.ppd
install file://c://ppd//GD.ppd
install file://c://ppd//Chart.ppd
Install file://c://ppd//GDTextUtil.ppd
install file://c://ppd//GDGraph.ppd
install file://c://ppd//PatchReader.ppd
一定要确保PatchReader的版本是0.9.4或者更高。
(如果你的网络速度很快,你就不用下载bugzilla-bundle.zip文件和解压了,可以直接在ppm下输入如下的命令就可以了
install AppConfig
install TimeDate
install DBI
install DBD-mysql
install Template-Toolkit
install GD
install Chart
install GDGraph (安装前会自动下载GDTextUtil并安装)
install PatchReader
)
如果以上步骤没有出错,我们就可以开始安装Apache了。(也可以直接用Windows自带的IIS或者WPS等做Web服务器,但是我没有使用,所以也没有配置。)
5.安装Apache
去Apache网站上下载 2.0.52版本的Apache。直接默认安装到C:/Program Files/Apache Group/Apache2目录下。一切采用默认配置,无需太复杂说明。(如果你安装了其他Web服务器,如IIS、WPS等,占用了80端口的话,你可以在Apache安装的时候,选择使用其他端口,如8080等。或者把IIS的所有Web站点停止也是一个好办法)
安装完成之后,需要对C:/Program Files/Apache Group/Apache2/conf/httpd.conf文件进行编辑。
5.1
如果端口需要修改,可能需要修改该文件中的
Listen 80——> Listen 8080
5.2
修改DocumentRoot参数的路径到C:/Bugzilla,注意,不能写成C:/Bugzilla,而且,同时需要修改DocumentRoot参数行下面的第一个<Directory>的参数,如下所示:
DocumentRoot "C:/Bugzilla"
<Directory "C:/Bugzilla">
5.3
配置CGI访问,需要把下面这一句前面的#给去掉
AddHandler cgi-script .cgi
5.4
修改Options Indexes FollowSymLinks 参数行
Options Indexes FollowSymLinks ——> Options Indexes FollowSymLinks ExecCGI
同时修改紧随其后的AllowOverride None为AllowOverride All,并且在这一行之后添加一行如下内容,用来告诉Apache,将使用perl来执行.cgi程序文件。
ScriptInterpreterSource Registry-Strict
5.5
为Apache启动的默认文件添加一个index.cgi。如下修改
DirectoryIndex index.html index.html.var——>DirectoryIndex index.html index.html.var index.cgi
5.6
在window的运行中,输入regedit,打开注册表,在HKEY_CLASSES_ROOT下面新建项.cgi,在.cgi下面新建项Shell,在Shell下面新建项ExecCGI,在ExecCGI下面新建Command项,然后修改Command项的默认值为C:/Perl/bin/perl.exe -T
重启Apache就可以了。(可以直接在cmd窗口下输net stop Apache2或者net start Apache2来停止和重启Apache服务,也可以打开管理工具中的服务来停止和启动Apache)
6.配置Bugzilla
打开cmd窗口,进入Bugzilla安装目录
cd Bugzilla
perl checksetup.pl
说明一下,这里需要执行两次perl checksetup.pl,第一次执行的时候,主要是检查Bugzilla需要的Perl的Modules是否正确安装,如果没有问题,则会在c:/Bugzilla目录下生成一个localconfig文件,这个文件用来配置本地的一些信息,以便checksetup.pl程序能够生成Bugzilla需要的数据库内容。
如果第一次执行后没有问题,我们需要编辑localconfig文件的内容。
$cvsbin = "c:/bugzilla/win32/cvs.exe";
$interdiffbin = "c:/bugzilla/win32/interdiff.exe";
$diffpath = "c:/bugzilla/win32";
$db_host = "localhost"; # where is the database?
$db_port = 3306; # which port to use
$db_name = "bugs"; # name of the MySQL database
$db_user = "bugs"; # user to attach to the MySQL database
$db_pass = ''; # 诚如我先前所说,这个地方,我第一次执行perl checksetup.pl没有问题,但是第二次执行的时候,一直提示DBI不能访问mysql数据库的问题。我也试着修改checksetup.pl文件,可是没有用。修改db_name和db_user等信息都没有用,最后无意中把数据库用户bugs的密码设置为空就通过了,再把root的密码改为空,用root帐号测试也通过了,到现在都还不知道具体的原因。见鬼!
修改完成之后,我们再次执行perl checksetup.pl,希望你不要象我一样,碰到这种奇怪的问题。OK,如果你看到一堆的Creating table XXXX ... 直到要求你需要输入管理员的邮箱,管理员的真实姓名,管理员的密码都没有出错,那么,恭喜你!
7.测试一下
到了这一步,基本上来说,是可以通过http://localhost进行Bugzilla系统的访问了。如果没有出现预期的首页界面,可以到C:/Program Files/Apache Group/Apache2/logs下查看一下error.log文件记录。我在测试过程中,也碰到不能出现首页面的问题。然后没有办法,根据错误信息到google上去搜索,才发现有很多介绍Bugzilla在Windows下安装的文章。(黎叔的语气:唉,大意了,大意了!)不过后来还是坚持把这些内容写下来,主要是因为我用的软件版本基本上都是最新的,而且,Bugzilla 2.18增强了图表功能,升级的人还是有吧,嘿嘿。
我碰到的第一个问题,就是所有的.cgi文件的第一行“#!/usr/bin/perl -wT”造成的问题,我按照晚上有人的提示,说修改为#!c:/perl/bin/perl.exe -wT就可以了,真的就可以了,然后发现基本上所有的.cgi文件都要修改,非常麻烦。但是,按照bugzilla的帮助文档的说法,我设置了windows的注册表和增加了ScriptInterpreterSource Registry-Strict这一句,应该就没有问题了,但是为什么还是有问题呢?(我也不知道,不要问我!但是我晚上回到家里,用家里的计算机配置出来的就没有这个问题,不需要进行修改,又见鬼了!)
8.汉化
从http://sourceforge.net/projects/bugzilla-cn下载Bugzilla_cn 0.9版本,然后把压缩文件中的.css文件解压到c:/bugzilla/css目录中覆盖,把压缩文件中的cn目录解压到C:/bugzilla/template。
我以为可以了,进入http://localhost去看,还是没有改变,看来我还是有点单纯。又去google了一把,发现了一个方法,就是修改C:/bugzilla/Bugzilla下的Template.pm文件,把其中的my $languages = trim(Param('languages'))这一行注释掉,然后修增加一行 my $languages = "cn"; 保存后,无需重启apache,重新进入http://localhost,出现一堆乱码,改一下IE的编码为GB2312就可以了。
注意,有人说,可以修改c:/bugzilla下面的globals.pl文件中的信息,结果我找了半天没有找到,估计新版本的Bugzilla已经不在该文件中设置了。另外一个方法,直接进入http://localhost/editparams.cgi页面,设置languages和defaultlanguage两个输入框内容为cn,保存,重新登陆就可以了。设置结束后,发现每个页面进入都是乱码,都需要在IE浏览器中修改编码为GB2312才能正常显示,无所谓,这是Apache的设置问题,再次打开C:/Program Files/Apache Group/Apache2/conf/httpd.conf文件,找到AddDefaultCharset的行,这里默认是ISO-8859-1,修改为GB2312,重启Apache服务,一切搞定。