最近项目进入测试阶段,需要用到一个bug管理工具,第一个想到的就是bugzilla。现在最新的是2.20,修正和增强了不少东西。只是没有汉化补丁,不过这没关系。安装过程其实可以参考bugzilla发布包中的安装文档,只是其中一些地方需要自己修改才行。另外bugzilla在Unix环境下的安装很方便,照着官方的安装文档一步步做下来就可以用了,而在windows下则不这么容易,特别是发送邮件这一块,花了我不少时间。
一、软件准备: 1、 Apache HTTP Server: 优秀的Http服务器,不用多说了,可以在http://httpd./下载,最新的是 2、 Perl解释器: 可以在http://www.下载,最新的是 3、 MySQL数据库: 在http://www.下载,我用的是 4、 James邮件服务器: 这是Apache的一个开源邮件服务器,解压后几乎不用配置就可以用了,提供其他程序进行邮件发送服务是很实用的。http://james./可以下载,最新是 5、 JDK或JRE: 要使用James就需要安装一个Java运行时环境,JDK包含了JRE的安装,同时提供JAVA开发能力。JRE只包括Java运行时。到http://java./j2se/1.5.0/download.jsp下载,最新的是1.5。 6、 Bugzilla: http://www./下载,最新是2.20。
二、JDK/JRE安装: 安装JDK: 我安装的是JDK1.5,安装过程很简单,中间只需要指定一下JDK和JRE的安装路径即可,如果只安装JRE则只需要指定JRE的安装路径。 JDK:D:\sdks\jdk JRE:D:\sdks\jre
配置环境变量: 打开:我的电脑-属性-高级-环境变量 在系统变量中增加一个JAVA_HOME= D:\sdks\jdk 在系统变量中增加一个CLASSPATH=%JAVA_HOME%\lib 在系统变量的PATH变量中增加值%JAVA_HOME%\bin 注意值间用分号隔开。
测试: 进入命令行模式,输入java –version 如果出现Java的版本信息则表名以上安装成功了。
三、James安装: 安装: 将下载到的james包解压到一个目录。如 D:\tools\james-
测试: 打开安装目录下的bin目录,执行run.bat。 如果出现如下提示信息表名安装成功,可以发送邮件了。
四、MySQL安装: 安装: 建议下载可执行的安装程序,这样配置会方便许多。基本是默认安装,最多修改一下安装路径。我装在D:\tools\MySQL\MySQL Server 5.0。 安装完后进入服务实例配置向导,基本也是默认,只是到了安装配置界面时,需要为root账号输入一个密码。也可以把MySQL的服务加入windows服务中,这样服务器启动的时候就会自动启动MySQL了。 顺便安装两个管理工具,一个是administrator,一个是query。
测试: 可以打开windows的服务管理来启动MySQL,然后打开administrator管理工具,输入Server Host(服务器的IP地址),Port(端口,默认的3306即可),Username(管理员用户名是root),Password(配置实例时设置的root密码)。 如果可以正常登入管理界面,表示数据库安装成功。
配置: 我们需要为bugzilla在MySQL中建一个用户和一个存储空间。 可以在管理界面左侧的Catalogs选项中建立一个存储空间,名为bugs。 可以在管理界面左侧的User Administration选项中建立一个用户,名为bugs。同时需要为这个bugs用户在右侧的Schema Privileges选项卡中分配权限,操作bugs存储空间的权限。必要的权限如下,其实全加上也没关系:
注意: 我在使用管理界面进行用户的建立和授权过程时,每次都出现错误,无法建立。这时可以使用query查询工具来通过sql的方式完成。启动query查询工具,连接数据库的配置和administrator管理工具配置类似,不过需要多指定一个Default Schema(要操作的存储空间)。填入刚才通过管理工具建好的存储空间名称:bugs。 打开后在顶部的长条形输入框中输入如下sql命令:
请把$db_pass换成该存储空间的用户bugs的密码:bugs。 然后点击右侧的绿色Execute按钮执行命令,如果底部出现红色警告,请自己查看sql语句是否正确。 接着再执行一句:
现在数据库的配置也完成了。
五、perl安装: 安装: 直接运行下载到的perl安装程序,需要指定安装路径,最后注意有一个复选框需要勾选,要求把perl的bin目录自动加入环境变量PATH中。 我安装在D:\tools\Perl
测试: 进入命令行模式,执行
如果出现版本信息则表示安装正确了。
六、bugzilla安装: 将下载到的bugzilla压缩包解压到任意目录,我的是D:\tools\bugzilla
七、Apache HTTP Server安装: 安装: 运行下载的Apache HTTP Server安装文件,选择安装路径和端口。我安装在D:\tools\Apache Group\Apache2,端口是默认的80。好像还有一个选择就是启动时自动监视Apache服务器,安装后在启动栏中会多一个“Monitor Apache Servers”。运行它后,在系统栏会出现一个图标,打开它可以看到Apache服务器的运行状态,并且可以启动和停止服务。后边我们讲到启动或重启服务器,表示使用这个监视工具来操作Apache服务器。
测试: 启动Apache服务器后,在浏览器中输入“http://[服务器IP地址]”,应该会出现Apache的欢迎界面。如果没有,请检查服务是否正常启动了,端口是否和其他程序冲突了等等。
八、Perl Module安装: 我对Perl不熟悉,我的理解是Perl Module是Perl需要做一个特定的事情时需要的相关组件。我们这里要让Perl支持bugzilla的运行,就需要安装必要的一些Module。安装Perl、配置bugzilla以及配置Apache服务器是交叉进行的,所以下边我将描述整个安装配置过程。
Bugzilla提供了一个checksetup.pl的文件,其实就是它的安装处理文件了,它可以检查必要的perl Module是否存在,然后还能创建数据库表,编译一些文件等。
在执行checksetup.pl之前,我们需要修改一些bugzilla的文件。因为我们是在windows环境下使用,bugzilla默认是用于Unix环境的,所以不得不对源文件做一些改动。
这是bugzilla自带的官方文档里的帮助,我们以此进行修改:打开安装目录内的Bugzilla/Bugmail.pm,即D:\tools\bugzilla\Bugzilla\BugMail.pm。将其中的
替换为:
现在要做一些改变。首先要把“smtp.mycompany.com”改为邮件服务器的地址,我们在本机安装了James做为邮件服务器,所以这里改为“127.0.
James不需要身份验证,所以不用增加此项。 这里有一个很严重的问题是
这一行,不知道是bugzilla故意写错还是怎么样,后边使用checksetup.pl进行安装时,这一行编译不过去,报告的是$person没有进行声明。稍微有点编程知识的人在查看我们修改的这个位置所处的方法sub MessageToMTA ($) 内,并没有将$person做为参数传进来,也没有单独的声明,不出错才怪了。奇怪的在以前的bugzilla2.18中已经有这个问题了。 网上有这个问题的很多解决办法,通常是修改这个sub MessageToMTA ($)方法,在参数中增加一个值,将person做为参数传进来。同时在将参数值赋给$person。即将
修改为
增加了一个$符号。接着把该方法开始位置的
修改为
增加了对$person的参数赋值。
但是这样修改后,方法增加了一个参数。还需要对整个bugzilla的目录进行全面搜索,寻找使用到这个MessageToMTA的地方,然后修改为需要两个参数的形式。但是我发现很难确定应该如何设置需要传入的第二个参数。在我做了对应的修改后,并不能成功的发送邮件,而且都没有连接邮件服务器,所以决定不使用这种方式。
我的做法是在“$smtp->to($person);”这一行前加上#号将其注释掉,而且可以成功发送邮件,希望深入研究过的朋友给点建议。
现在修改BugMail.pm文件,将sub MessageToMTA ($)方法中的“$smtp->to($person);”用#号注释掉。
完成以上修改后保存。
现在在命令行模式进入bugzilla的安装目录,执行一下命令开始安装:
如果一切正常,将出现如下的提示信息:
其中的checkfor用来检查bugzilla需要用到的perl module是否存在,如果存在的话会显示“ok found”以及版本号,不存在的会显示“not found”。 接着看后边的提示信息,说使用如下命令可以把一个资源库加入perl的下载路径,来下载这些不存在的perl module。
现在执行这行命令,将出现下边的提示:
再看一下前边执行cheksetup.pl文件时列出的提示,其中有很多“ppm install xxx”这样的语句,这些其实就是用来下载并安装缺少的perl module的命令。现在在命令行中依次执行这些“ppm install xxx”命令。主要有下边这几个:
因为我们使用了mysql数据库,需要再安装一个module:
每次执行安装命令需要的时间是由你的网络速度决定的,可能会花些时间,你也可以写一个批处理文件来自动执行这些命令。 执行过程中有些时候会询问是否安装,请选择yes,或者需要你指定一个安装目录等,随意指定一个目录即可,我的是d:\tools\perl\module。
如果正常执行了一个安装程序,将出现类似如下的提示信息:
现在来再次执行perl checksetup.pl命令,提示应该显示必要的模块都可以找到了。
同时要求我们对自动生成的localconfig文件进行配置,主要是数据库的。现在打开bugzilla安装目录中的localconfig文件,这个文件是在执行了checksetup.pl后生成的。 因为我们是在本机安装了MySQL数据库,并且存储空间和用户名都是“bugs”,所以localconfig文件中的
都不用修改,默认即可。需要修改的是
这是bugs存储空间的bugs用户的密码,前边配置数据库时,密码设置为“bugs”,所以这里修改为:
保存该文件,然后再来执行checksetup.pl文件。如果一切正常,将会出现一些正常的提示信息,然后会询问SMTP服务器的主机名是什么,因为我们在本机使用James,所以这里就填127.0.0.1。 接着会出现一些建表的提示信息,最后要求输入系统的超级管理员的邮箱账号、管理员名字、两次密码。 这样就结束了bugzilla的安装配置了。
现在来看Apache的配置,主要是Apache的httpd.conf文件,位于安装目录Apache Group下的Apache2\conf内。我的是“D:/tools/Apache Group/Apache2/htdocs/httpd.conf”。
打开它,首先找到
这一行,将地址修改为bugzilla的安装目录:
然后找到
这一行,在它与紧接着的</Directory>之间是我们主要修改的地方。 首先把
修改为bugzilla的安装目录:
然后将
这一行修改为:
还有把
一行改为
接着在</Directory>之前加一行:
这一行很重要,是让Apache从注册表中寻找我们安装好的Perl的路径,使用Perl来对bugzilla里的cgi进行解释。
最后在整个httpd.conf中寻找如下一行:
将其修改为:
指明让Apache能够以index.cgi做为访问的默认页面。
再寻找如下一行:
将其前边的#号去掉:
下边我列出修改前和修改后的重要部分的对比,中间去掉了注释信息: 修改前:
修改后:
修改完成后保存。
修改注册表: 我们已经在httpd.conf文件中配置了让Apache在注册表中寻找Perl的安装路径,但是我们还没有在注册表中添加这些内容。现在就来新建一个注册表导入文件来完成添加。 新建一个名为cgi.reg的文件,添加如下内容:
注意,最后一行应该是正确的perl安装路径。
保存后执行该文件完成注册表的修改。
九、正式运行: 现在应该首先启动好James服务器、MySQL数据库服务器,最后启动Apache服务器。 打开浏览器访问http://[服务器IP地址],应该可以看到bugzilla的首页了。 可以使用在执行checksetup.pl文件时要求输入的管理员邮件地址(账号)和密码登录系统,如果可以正常登录,说明基本功能已经安装成功。 再来测试邮件发送是否正常。 先退出登录,然后在右下角点“New Account”创建一个新账号。输入一个你的其他可用邮箱地址,然后提交。如果正常的话会出现一个“Account Created”页面,说账号创建成功,密码已经发到你的邮箱去了。到底有没有发送成功,我们可以去看看James的日志,James会把每次发送邮件的情况都记录下来的。 打开James安装目录下的apps\james\logs目录,我的在D:\tools\james- 找到文件名以smtpserver开头,日期做为后缀的文件,如smtpserver- 如果发送正常,里边会记录发送成功的信息,类似如下:
From是系统构造的,不用管它,for是邮件发送到的地址,应该是你刚刚注册新账号时用的地址。这里是成功了,如果失败的话,会有一些错误提示,请进行修正。
需要严重注意的是,你的这台服务器的计算机名最好不要有特殊字符,比如下划线。我遇到过就是计算机名包含了下划线,结果James识别postmaster@myMachineName地址时,认为地址格式有误。如果你深入研究James的配置,应该可以解决这个问题的。 另外还要注意你的机器是否安装了什么防火墙啊等等安全软件,如果不成功也可以去检查一下。
现在打开你刚才注册用的那个邮箱收取邮件吧。如果正常的话,应该可以收到bugzilla发送的一封包含登录密码的邮件。 另外,就算James可以正常的发出邮件,你的邮箱还不一定可以收得到。我测试过几个网站提供的邮箱,只有google提供的gmail可以正常接收邮件,还有我们公司自己的邮箱也可以。但是像126.com这些就收不到了,不知是怎么回事。
我也测试过查询自己的密码、提交一个bug、操作bug等等,都可以正常的发送邮件到相关的邮箱去。不过这些邮件中的“发送人”却一直是“bugzilla-daemon”,这个我也不清楚该在什么地方配置。
至于bugzilla的使用,请参考其他文档,我这里只写了如何安装。 我们现在用的这个是2.20版的,只有英文版,所以有一些专业词汇最好还是能找一篇比较好的文章理解一下,比如修正状态分类、严重程度分类等等。 Bugzilla2.18版时,有人做一个一份中文模板,可以将它进行汉化,不过翻译的不全、翻译质量也有很大的问题,不如不用。你也不要期望可以把这套中文模板用到2.20中,这样将出现不可预计的错误,版本不同嘛。 这个中文模板已经几年没有更新了,好像汉化人已经放弃了这个东东。希望哪位牛人可以抽时间做个汉化的工作,因为bugzilla对于项目开发确实是个好东西。 |
|