Win2000下Bugzilla安装实录
( 作者: Jackey ,网址: www.kuihua.net )
1 前言:
Bugzilla 是软件测试的利器,是一款优秀的开源的 Bug Tracking System ;由于是专门为 Unix 定制开发的,因此要想在 Windows 平台下安装,需要费不少的劲;不晓得是什么原因,网上有关 Bugzilla 的安装讲解大多都是支离破碎的,再加上它本身就是一种可以任意修改的 Perl 脚本程序,而且 Bugzilla 开发小组在代码维护和发布上也可能有点小问题;这些因素造成要想在 Windows 平台下搭建一个相对完整的 Bugzilla 系统,更是难上加难;不过,如果有一定的 Perl 语言知识的话,改动起来还是比较快的。
本文是针对在 Windows 的 LAN 环境下,安装和修改 Bugzilla 脚本的的经验介绍,一步一步的向您介绍如何配置和搭建 Bugzilla 的安装环境。下面是本文的另一些连接映射,欢迎各位看官讨论使用,共同进步。
葵花论坛: http://www.kuihua.net/bbs/dispbbs.asp?boardID=1&RootID=1035&ID=1035
微软培训: http://www.devmanclub.com/ShowPost.aspx?PostID=4130
CSDN 专栏: http://www.csdn.net/Develop/read_article.asp?id=24088
另外,本文参考了微软培训论坛里的如下文章,本文应该是此文的改进版:),如有不妥,请留言或 E-Mail 联系我。同时,为了确保各位看官能够真正将 Bugzilla 用起来,将广大的人民群众从修改 Perl 脚本的苦海中解救出来,我还提供了一个已经排除了大量 Bug 的汉化版,但还是要做简单修改,主要是填写 E-Mail 地址和 Mysql 的安装路径;文章最后还探讨了如何利用 CVSNT 系统,与 Bugzilla 开发小组同步升级,避免重复修改 Bugzilla 的升级版本;有关 CVSNT 系统请参考本人的相关文章。
参考文章: http://www.devmanclub.com/ShowPost.aspx?PostID=2584
CVS 文章: http://www.csdn.net/Develop/read_article.asp?id=19756
下载连接: http://www.kuihua.net/soft/Bugzilla-2.17.6(Jackey).rar
最后,祝愿各位看官用得开心,每天利用 Bugzilla 消灭无数的 Bug ,哈哈!!
2 安装 Mysql 与 Mysqlcc :
1. 本文使用的是最新 Mysql For Windows 的 4.0.17 版本,没有出现问题,这是官方下载连接: http://www.mysql.com/get/Downloads/MySQL-4.0/mysql-4.0.17-win.zip
2. 安装时需要注意最好不要改动 Mysql 的默认安装位置,否则,无法引导,需要改动一些设置。这里假设你的安装位置为: D:\mysql
3. 安装完毕后进入 D:\mysql\bin ,执行 winmysqladmin.exe ,如果出现绿灯,则说明你的 Mysql 系统正常启动了。
4. 下载 Mysql Center Control 版本,这是一个 Mysql 的管理器,可以直接修改数据库内容,非常方便。下载连接: http://ftp.tku.edu.tw/mysql/Downloads/MySQLCC/mysqlcc-0.9.3-win32.zip
5. 修改 mysql 的 root 用户密码:
D:\>cd mysql
D:\mysql>cd bin
D:\mysql\bin>mysql -u root mysql
mysql>UPDATE user SET Password=PASSWORD('<new_password'>) WHERE user='root';
mysql>FLUSH PRIVILEGES;
说明: 其中 <new_password> 为 root 用户的新密码。更改密码后,要用 root 用户访问 mysql ,必须使用 mysql -u root -p ,按提示敲入正确的 root 新密码。
6. 创建 bugs 用户,并赋给相应的权限:
mysql>GRANT SELECT, INSERT, UPDATE, DELETE, INDEX, ALTER, CREATE, DROP, REFERENCES, LOCK TABLES, CREATE TEMPORARY TABLES ON bugs.* TO bugs@localhost IDENTIFIED BY '<bugs_password>';
mysql> FLUSH PRIVILEGES;
说明: 要记住 bugs 用户的密码,在下面的 bugzilla 配置文件要用。
7. 创建 bugs 数据库:
mysql>create database bugs;
mysql>exit
8. 这时可以打开 mysqlcc.exe ,用 root 用户登陆到本机的 mysql 数据库中,看看变化;注意:上面的数据库操作可以直接在 mysqlcc 中操作。
3 安装 ActivePerl 和相关 Module :
1. 下载 ActivePerl-5.6.1.633-MSWin32-x86.msi 或以上版本。这里假设你的安装路径是: D:\Perl
2. 修改 PPM ( Perl Package Manager )的下载地址,提高 Perl 安装其它模块时的下载速度。
打开 D:\Perl\Lib\CPAN.pm ,查找并更改 $CPAN: defaultsite ||= "ftp://ftp.perl.org/pub/CPAN"; 为 $CPAN: defaultsite ||= "http://cpan.shellhung.org";
3. 由于有几个 Perl Module 无法直接安装,需要下载到本地通过 nmake.exe 和 cl.exe 编译并安装,因此,最好装一个 Visual C++ 6.0 ,这样才能完成特殊模块的安装。
4. Bugzilla 需要多个 Perl Module 的支持,在它的帮助文档中有介绍,为了方便和简化各位看官的安装过程,本人写了一个简单的批处理文件,如果你下载了本人提供的修改包,解压后有一个 PerlModule 目录,里面有一个 PerlModule.bat 文件,直接运行就可以了,但需要注意的是:有几个模块无法直接安装,仔细看提示,告诉了你如何安装这些特殊模块。这里新增加了 Authen::SASL 模块,用于发送邮件认证信息。此外,在本文的附录中列出了这个批处理的源代码,供各位看官改进和参考。
4 下载 Bugzilla :
1. 首先说明:如果你已经下载了我提供的修改包,这部分可以直接跳过,修改包里已经改好了。
2. www.bugzilla.org 上目前只有 bugzilla-2.17.6.tar.gz 下载,但是它的用户认证部分有问题,就是 Bugzilla\Bugzilla\Auth\DB.pm 这个文件,可以从 Mozilla 提供的 CVS 服务器上下载最新的替换掉, Mozilla 的 CVS 服务器如下: anonymous@cvs-mirror.mozilla.org:/cvsroot
3. 这里假设你的解压位置为: D:\Bugzilla
4. 下载中文汉化版,可以到 sourceforge.net 下载,本人的修改包中使用的是最新的 bugailla-2.17.4-cn-0.92.tar.gz ,由候光敏汉化,不过,好多地方都还是英文的,如果各位看官有兴趣的话可以自己跟自己的需要自己汉化,因为它都是一些有源代码的脚本。
5. 把下载的文件解压,将 cn 目录拷贝到 D:\Bugzilla\template 目录下。
5 配置 IIS :
1. 打开【控制面板】 -> 【管理工具】 -> 【 Internet 服务管理器】,在【默认 Web 站点】点按右键选择【属性】 -> 【主目录】 -> 【配置 … 】,在【应用程序映射】中点击【添加】,增加如下资料:
2. Perl 脚本解析器: (*.pl)
可执行文件 : D:\Perl\bin\perl.exe "%s" %s
扩展名 : .pl
仅限于 : GET,HEAD,POST
3. CGI 脚本解析器: (*.cgi)
可执行文件 : D:\Perl\bin\perl.exe "%s" %s
扩展名 : .cgi
仅限于 : GET,HEAD,POST
4. 默认 Web 站点】 -> 【新建】 -> 【虚拟目录】:
别名: Bugzilla ,访问目录: D:\Bugzilla ,访问权限中增加【写入】权限。
5. 选择刚建立的虚拟目录 Bugzilla ,右键选择【属性】 -> 【文档】。【默认文档】中增加 index.cgi 。
6 修改 Perl 脚本文件:
6.1 已经下载了本人提供的修改包的看官请看:
1. 打开 D:\Bugzilla\defparams.pl 文件,定位到文件尾部,做如下的信息修改:
2. 替换 Bugzilla 访问页面:
替换 http://<Your Bugzilla Root URL> 为你对外提供 Bugzilla 访问的地址,主要用于 E-Mail 通知。
例如: http://192.168.0.1/Bugzilla/ (最后一个反斜杠一定要加,否则会出问题。)
3. 替换 E-Mail 的服务器地址:
找到 <Your E-Mail Server Address> ,替换成你的邮箱的服务器地址,主要用于 E-Mail 通知。
例如: pop3.263.net
4. 替换 E-Mail 的发送者地址:
找到 <Your E-Mail Address> ,替换成你的邮箱的地址, Bugzilla 系统邮件通知的源地址。
例如: yoyo@263.net
5. 替换 E-Mail 发送者的邮箱密码:
找到 <Your E-Mail Password> ,替换成你的邮箱密码,主要用于需要认证的邮件服务器。
例如: I am ladeng J
6. 打开 D:\Bugzilla\localconfig 文件,做如下的信息修改:
7. 修改 Mysql 的安装路径:
找到 $mysqlpath= 替换成你的 mysql 安装路径,注意要用双斜杠。
例如: $mysqlpath = “D:\\mysql\\bin\\mysql”;
8. 修改登陆 Mysql 系统的 bugs 用户的登陆密码:
找到 $db_pass= 替换成在安装 Mysql 时创建的 bugs 用户的登陆密码。
例如: $db_pass = "I am ladeng";
6.2 没有下载本人提供的修改包的看官请看:
1. 打开 D:\Bugzilla 下所有的 .cgi 文件,将最后一行的 T 字符去掉,如下:
例如: #!/usr/bin/perl –wT => #!/usr/bin/perl -w
2. 打开 D:\Bugzilla 下所有的 .cgi 文件,找到 require "CGI.pl"; 在它后面增加一行:
require "Globals.pl"; 注意 G 一定要打写,否则 Perl 会报告无法定位一些文件;但有几个文件很特殊,必须写成 require “globals.pl” ,真是奇怪,这些文件是: Token.cgi 、 UserPrefs.cgi 、 Token.pm ,这个问题不晓得是什么原因,哪位看官晓得原因的话,请给我讲讲:)
3. 打开 D:\Bugzilla\globals.pl 文件,在 Use Bugzilla 前面加入如下的邮件发送代码:
sub SendMail
{
my ($msg,$person) = @_;
use Net::SMTP;
my $smtp_server = Param("mailserver");
my $smtp_user = Param("mailuser");
my $smtp_pass = Param("mailpass");
#$person .= Param('emailsuffix');
my $smtp = Net::SMTP->new($smtp_server) ||
die 'Cannot connect to server \'$smtp_server\'';
$smtp->auth($smtp_user,$smtp_pass);
$smtp->mail($smtp_user);
$smtp->to($person);
$smtp->data();
$smtp->datasend($msg);
$smtp->dataend();
$smtp->quit;
}
4. 打开 D:\Bugzilla\defparams.pl 文件,修改默认语言设置:
找到 name => ‘language’
修改 default => ‘en’ 为 default => ‘cn’
找到 name => ‘defaultlanguage’
修改 default => ‘en’ 为 default => ‘cn’
5. 打开 D:\Bugzilla\defparams.pl 文件,修改默认 Bugzilla 登陆页面:
找到 name => 'urlbase'
修改 default => ‘http://….’ 根据你的具体 Bugzilla 登陆页面进行修改。
6. 打开 D:\Bugzilla\ defparams.pl 文件,增加 3 个邮件通知需要的全局参数配置项:
① MailServer (邮件发送服务器地址)
{
name => 'mailserver',
desc => 'Mail-Server assigned by Jackey in 2004.02.02!',
type => 't',
default => 'pop3.263.net'
},
② MailUser (邮件发送者邮箱)
{
name => 'mailuser',
desc => 'Mail-User assigned by Jackey in 2004.02.02!',
type => 't',
default => 'yoyo@263.net'
},
③ MailPass (邮件发送者密码)
{
name => 'mailpass',
desc => 'Mail-Pass assigned by Jackey in 2004.02.02!',
type => 't',
default => 'I am ladeng J '
},
7. 打开与邮件发送相关的 .cgi 、 .pl 、 .pm 文件进行邮件配置修改:具体方法是屏蔽掉原来的邮件发送代码 open SendMail ,替换成自定义的 SendMail(…) 函数。
① 打开 D:\Bugzilla\CGI.pl ,将 open SendMail 改成:
SendMail($msg,$login);
② 打开 D:\Bugzilla\Token.pm ,将 open SendMail 改成:
SendMail($message,$vars->{'emailaddress'});
③ 打开 D:\Bugzilla\whineatnews.pl ,将 open SendMail 改成:
SendMail($msg,$substs{'email'});
④ 打开 D:\Bugzilla\move.pl ,将 open SendMail 改成:
SendMail($msg,$to);
⑤ 打开 D:\Bugzilla\importxml.pl ,将 open SendMail 改成:
SendMail($header . $message . "\n",$to);
⑥ 打开 D:\Bugzilla\BugMail.pm ,将 open SendMail 改成:
SendMail($msg,$person)
⑦ 打开 D:\Bugzilla\Flag.pm ,将 open SendMail 改成:
SendMail($message,$flag->{'type'}->{'cc_list'});
⑧ 打开 D:\Bugzilla\globals.pl ,将 open SendMail 改成:
SendMail($msg,$name);
8. 打开 D:\Bugzilla\checksetup.pl 文件,注释掉与平台相关的代码: [3967-3972 , 4004-4008]
#$SIG{HUP} = \&bailout;
#$SIG{INT} = \&bailout;
#$SIG{QUIT} = \&bailout;
#$SIG{TERM} = \&bailout;
#system("stty","-echo"); # disable input echoing
9. 打开 D:\Bugzilla\checksetup.pl 文件,修改 mysql 安装路径:
找到 my $mysql_binaries = `which mysql`; => my $mysql_binaries = "D:\\mysql\\bin\\mysql"
10. 打开 D:\Bugzilla\checksetup.pl 文件,修改 cvsnt 安装路径: ( 安装了 cvsnt 才需要修改 )
找到 my $cvs_executable = `which cvs`; => my $cvs_executable = “D:\\cvsnt\\cvs.exe”;
11. 打开 D:\Bugzilla\checksetup.pl 文件,修改 webservergid 信息:
找到 my $webservergid = getgrnam($my_webservergroup) => my my $webservergid = ‘8’
12. 打开 D:\Bugzilla\checksetup.pl 文件,更正回车换行问题,这是由于 Unix 与 Windows 平台差异造成的: Unix 的回车换行是 \n ,而 Windows 是 \r\n ,因此需要去掉一个字符。
找到 chomp $login; 增加一行 chop $login;
找到 chomp $realname; 增加一行 chop $realname;
找到 chomp $pass1; 增加一行 chop $pass1;
找到 chomp $pass2; 增加一行 chop $pass2;
13. 打开 CMD.exe ,进入 D:\Bugzilla 目录,键入 perl checksetup.pl ,运行一下,这时会生成一些文件,打开生成的 localconfig 文件,修改如下信息:
$index_html = 1 ( 生成 index.html)
$mysqlpath = "D:\\mysql\\bin" ( 你的 mysql\bin 路径 )
$webservergroup = "8"
$db_user = "bugs" (mysql 的登陆用户名 )
$db_pass = '<bugs_password>'(mysql bugs 用户的登陆密码 )
14. OK !!脚本修改完毕,就差一步了,下面是正式安装 Bugzilla 。
7 正式安装 Bugzilla :
1. 打开 CMD.exe ,进入到 D:\Bugzilla 目录,键入 perl checksetup.pl ,会显示一系列的信息,仔细阅读,它可以反映你所配置的环境是否适合安装 Bugzilla , Good Luck!!! J
2. 如果一切顺利的话,系统提示创建 Administrator 的相关邮件(用户登陆名)、 Realname 、登陆密码等资料。最后,如果成功,会提示“ Reminder: Bugzilla now requires version 8.7 or later of sendmail !”
3. 打开浏览器,键入 http://localhost/bugzilla 即可进入 Bugzilla 登陆界面,输入刚刚建立的 Administrator 用户和密码,注意:登陆名是邮箱地址。
4. 如果你很幸运的话,应该看到了一张很奇怪,很单调,甚至有点粗糙的页面;那么,我可以恭喜你了,因为,你已经进入了 Bugzilla 的神奇世界了 … J
5. 你可以测试一下邮件通知功能:在注册与密码丢失部分都可以进行测试,亲身体会一下 Bugzilla 带来的神奇世界吧 … J
8 如何与 Bugzilla 开发小组的版本同步:
当各位看官费劲千辛万苦,终于把经过大量修改的脚本代码运行起来以后,没过多长时间, Bugzilla 开发小组又发布了 2.18 版本,不仅更正了 2.17 中的大量 Bug ,而且功能增强不少,看得你心痒痒的,下载了一个最新版本,遇到了与以前同样的问题:修改大量的 Perl 脚本,真是一场恶梦 ! L !
鉴于这种情况,本人使用 CVS 系统来处理,供各位看官参考!!前提是,你已经搭建了一套 CVSNT 系统,如果你还没有,可以 参考 本人写的相关文档。
首先,从 www.bugzilla.org 下载最新的 Bugzilla-2.17.6 版本,解压后,使用 WinCVS 将 Bugzilla 代码 Import 到 CVS 系统中,并建立 Mozilla 开发分支和发行标记,注意:主分支是你自己使用的分支,根据你自己的需要进行修改;而 Mozilla 是开发旁分支,用于与 Mozilla 的 Bugzilla 开发小组进行版本同步更新,即当 Bugzilla 有大的改进时,你可以下载那个发行版本,加入到这个 Mozilla 开发分支当中,然后再与主分支合并,就可以得到我们需要的最新的,而且是修改过的 Bugzilla 版本了。这样,就能很好的避免每一个新版本的 Bugzilla 源代码都去进行费时费力的大量修改。哈哈,‘爽’就一个字!!当然,在合并的过程中,可能会遇到冲突问题,不过,至少比直接修改源代码来得容易三。
下面是本人使用的分支名称,仅供参考:
Branch => Mozilla (Vendor Tag)
Release => Ver-2-17-6 (Release Tag)
9 附录: (PerlModule.bat)
@echo off
@echo *******Start install perl module for Bugzilla***********
@echo ******************Ready Go!!!***********************
@echo ********* Install Bundle::Bugzilla Module ************
call ppm install Bundle::Bugzilla
@echo OK!!
@echo ********* Install Chart Module ************
call ppm install Chart
@echo OK!!
@echo ********* Install CGI Module ************
call ppm install CGI
@echo ********* Failed??:)
@echo ********* Download it from fllowing URL **********
@echo http://cpan.shellhung.org/authors/id/L/LD/LDS/CGI.pm-3.04.tar.gz
@echo ********* Use it with fllowing step **********
@echo ********* 1. Upzip this tar.gz
@echo ********* 2. Run the CMD.exe
@echo ********* 3. Into the upzipped tar.gz use dos command "cd"
@echo ********* 4. perl MakeFile.pl
@echo ********* 5. nmake
@echo ********* 6. nmake test
@echo ********* 7. nmake install
@echo ********* 8. OK!!
@echo ********* Install Date::Format Module ************
call ppm install Date::Format
@echo ********* Failed??:)
@echo ********* Download it from fllowing URL **********
@echo http://cpan.shellhung.org/authors/id/G/GB/GBARR/TimeDate-1.16.tar.gz
@echo ********* Use it with fllowing step **********
@echo ********* 1. Upzip this tar.gz
@echo ********* 2. Run the CMD.exe
@echo ********* 3. Into the upzipped tar.gz use dos command "cd"
@echo ********* 4. perl MakeFile.pl
@echo ********* 5. nmake
@echo ********* 6. nmake test
@echo ********* 7. nmake install
@echo ********* 8. OK!!
@echo ********* Install AppConfig Module **********
call ppm install AppConfig
@echo ********* Failed??:)
@echo ********* Download it from fllowing URL **********
@echo http://cpan.shellhung.org/authors/id/A/AB/ABW/AppConfig-1.55.tar.gz
@echo ********* Use it with fllowing step **********
@echo ********* 1. Upzip this tar.gz
@echo ********* 2. Run the CMD.exe
@echo ********* 3. Into the upzipped tar.gz use dos command "cd"
@echo ********* 4. perl MakeFile.pl
@echo ********* 5. nmake
@echo ********* 6. nmake test
@echo ********* 7. nmake install
@echo ********* 8. OK!!
@echo ********* Install Template::Toolkit Module **********
call ppm install Template::Toolkit
@echo ********* Failed??:)
@echo ********* Download it from fllowing URL **********
@echo http://cpan.shellhung.org/authors/id/A/AB/ABW/Template-Toolkit-2.12.tar.gz
@echo ********* Use it with fllowing step **********
@echo ********* 1. Upzip this tar.gz
@echo ********* 2. Run the CMD.exe
@echo ********* 3. Into the upzipped tar.gz use dos command "cd"
@echo ********* 4. perl MakeFile.pl
@echo ********* 5. nmake
@echo ********* 6. nmake test
@echo ********* 7. nmake install
@echo ********* 8. OK!!
@echo ********* Install Data::Dumper Module **********
call ppm install Data::Dumper
@echo OK!!
@echo ********* Install Date::Format Module **********
call ppm install Date::Format
@echo OK!!
@echo ********* Install DBI Module **********
call ppm install DBI
@echo OK!!
@echo ********* Install DBD::mysql Module **********
call ppm install DBD::mysql
@echo OK!!
@echo ********* Install File::Spec Module **********
call ppm install File::Spec
@echo OK!!
@echo ********* Install File::Temp Module **********
call ppm install File::Temp
@echo OK!!
@echo ********* Install Text::Wrap Module **********
call ppm install Text::Wrap
@echo OK!!
@echo ********* Install GD Module **********
call ppm install GD
@echo OK!!
@echo ********* Install GD::Graph Module **********
call ppm install GD::Graph
@echo OK!!
@echo ********* Install GD::Text::Align Module **********
call ppm install GD::Text::Align
@echo OK!!
@echo ********* Install PatchReader Module **********
call ppm install PatchReader
@echo OK!!
@echo ********* Install MIME::Tools Module **********
call ppm install MIME::Tools
@echo OK!!
@echo ********* Install MIME::Base64 Module **********
call ppm install MIME::Base64
@echo OK!!
@echo ********* Install Authen::SASL Module **********
call ppm install Authen::SASL
@echo OK!!
pause
查看更多关于Win2000下Bugzilla安装实录的详细内容...