开发过大型项目的朋友一定都接触过这样几类工具:需求管理、代码和版本控制和Bug跟踪工具。比较常见的需求管理是ClearQuest,代码和版本控制工具中用最多的是VSS和CVS,而Bug跟踪工具最出名的一定就是bugzilla了。

  Bugzilla是Mozilla团队为我们奉献的一款免费的优秀的bug跟踪工具,它完全基于web方式,安装简单、运行方便快捷,可以使用MySQL数据库或者Ldap进行存储,系统非常灵活,有强大的可配置能力,并且可以自动发送Email进行通知和提醒,生产灵活方便的各种报表、图形,还能支持标准的XML导入和导出。

  作为一个产品缺陷的记录及跟踪工具,它能够为你建立一个完善的Bug跟踪体系,同时,由于在需求管理和bug追踪之间有很多流程和特点的相似,Bugzilla同时还可以用来实现入门级的需求管理,一个需求如同一个bug一样,从提出到接收、处理、反馈、验证整个过程都可以在bugzilla中得到体现和处理,并且可以和bug一样对应到产品和相关人员,Michael原来在yahoo工作的时候,公司就是使用了bugzilla作为需求和bug管理的平台,感觉非常方便实用。

更多的Bugzilla的特点在这里就不多说了,Michael在这里主要讲述一下在FreeBSD6.1环境下如何快速安装配置Bugzilla,为您的项目提供需求和bug管理支持。

  Michael这里提到的安装有个前提,那就是假设您的系统上已经成功安装了FreeBSD6.1和配置了ports,并通过ports完成了Apache、Perl、MySQL的安装和配置,有关FreeBSD6.1的安装,ports的配置以及Apache、Perl和MySQL的安装配置在这里就不多说了,相关的资料相当之多。

  下面是Michael的Bugzilla安装过程。

#cd /usr/ports/devel/bugzilla
#more ./distinfo (看看版本信息,可以看到类似下面的内容)

MD5 (bugzilla-2.22.tar.gz) = bbf2f1ec5607978d39855df104231973
SHA256 (bugzilla-2.22.tar.gz) = 9d7e2144cd8499430c802ef5267dd2237aaec401546e5b9476db4f9ca19ebd4d
SIZE (bugzilla-2.22.tar.gz) = 1956898
表示当前ports中的bugzilla版本是2.22版,这个版本基本上是当前官方发布的stable版本的最新版

#make config    (进行初始化配置选项设置,下面是我的选择)
[X] MYSQL             MySQL database support   
[ ] PGSQL             PostgreSQL database support
[X] CHARTING_MODULES  Bug charting support 
[ ] GRAPHVIZ          Use GraphViz
[X] EMAIL_GATEWAY     Use email gateway 
[X] EXPORT_IMPORT     Import/export bugs (via XML) 
[ ] CONTRIB           Install user-contributed scripts
[ ] LDAP              Enable LDAP support
选择对MySQL数据库、图形报表、邮件、XML导入导出的支持

#make install clean

以上完成基本的安装,接下来要进行一些设置才能最终使用。

设置MySQL

我们需要设置使用MySQL数据库来存储Bugzilla的数据,你可以通过命令行或者phpmyadmin这样的web管理工具来进行设置,下面我们使用MySQL的命令行来完成设置。

#mysql -hlocalhost -uroot -p
Enter password:xxxxxx
mysql> create database <dbname>;
mysql> GRANT SELECT, INSERT,
           UPDATE, DELETE, INDEX, ALTER, CREATE, LOCK TABLES,
           CREATE TEMPORARY TABLES, DROP, REFERENCES ON <dbname>.*
           TO <dbuser>@localhost IDENTIFIED BY '<dbpass>';
mysql> FLUSH PRIVILEGES;
mysql> exit;

上面完成了在本机的MySQL上创建供bugzilla使用的数据库 (这里的 更换成您要使用的数据库名称),同时添加用户 和口令 ,该用户对 具有所有权限。
在这里,Michael使用的 是bugzilla, 均为bugzilla
另外,为了让MySQL支持bugzilla的较大附件存储,还需要修改MySQL的默认设置,bugzilla默认支持的附件最大1M,修改方式如下:

#vi /etc/my.cnf
在[mysqld]段中加入下面一行
  max_allowed_packet=1M

然后重启MySQL即可。

设置Apache

如果您的系统是FreeBSD6.1版,同时更新了ports为当前最新,那么通过ports安装的Apache应该是Apache2.2.3版本,它的ServerRoot目录应该在/usr/local/www/apache22 ,但是Bugzilla通过ports安装后会把bugzilla的web目录安装在/usr/local/www/data/bugzilla下,这里您可以根据自己的喜好进行调整,可以把bugzilla目录移动到/usr/local/www/apache22/data/bugzilla下,也可以重新修改Apache的httpd.conf文件,把ServerRoot修改为/usr/local/www下,同时更新httpd.conf里面别的和/usr/local/www/apache22相关的设置。我用了后面的方法,因为通过ports安装的很多别的和apache相关的web应用都会默认到/usr/local/www下,比如cvsweb就是默认到/usr/local/www/cgi-bin目录下,未来安装其他应用的方便,我选择了修改apache的配置,而且修改起来很简单。大致的相关设置如下:

#cp -r /usr/local/www/apache22/* /usr/local/www/
#vi /usr/local/etc/apache22/httpd.conf
修改文件中和/usr/local/www/apache22相关的部分为 /usr/local/www,大概有三四个地方。

然后在httpd.conf文件中增加下面一段内容
<Directory /usr/local/www/data/bugzilla>
  AddHandler cgi-script .cgi
  Options +Indexes +ExecCGI
  DirectoryIndex index.cgi
  AllowOverride Limit
</Directory>
这段内容设置bugzilla目录可以执行cgi文件,因为bugzilla都是使用perl来编写的。

这样就完成了Apache的配置,重新启动apache服务即可。

Bugzilla最后设置

完成MySQL和Apache的设置基本上就完成了99%了,最后一步就是bugzilla自己的配置部分,配置过程也很简单,步骤如下:

#cd /usr/local/www/data/bugzilla
#./checksetup.pl
这是第一次执行该脚本,将自动为您创建配置文件localconfig
#vi ./localconfig
修改里面的数据库名、用户名、口令为您之前创建时候设置的值,保存退出
#./checksetup.pl
这个命令将使bugzilla自己完成数据库中各种表的创建和设置,同时会要求您输入bugzilla管理员的邮件地址和口令,按照提示输入即可,过程很简单

到此,bugzilla的全部安装就已经结束了,在浏览器里面输入 http://yourserverip/bugzilla/index.cgi 呵呵,看到可爱的虫子了吗?当然,您也可以配置apache的VirtualHost来使用独立的域名访问您的bugzilla,比如我配置的bugzilla就可以通过下面的域名访问 http://bugzilla.toplee.com,您可以测试一下!

由于目前bugzilla的中文汉化只支持到了2.20版本,我们安装的2.22版还没有汉化文件出来,暂时无法享受中文界面了,再等等吧,具体的可以关注 http://www.bugzilla.org 最新动态!