• Win2000下Bugzilla安装实录


     

     

    (作者:Jackey,网址:www.kuihua.net)

    1       前言:

    Bugzilla是软件测试的利器,是一款优秀的开源的Bug Tracking System;由于是专门为Unix定制开发的,因此要想在Windows平台下安装,需要费不少的劲;不晓得是什么原因,网上有关Bugzilla的安装讲解大多都是支离破碎的,再加上它本身就是一种可以任意修改的Perl脚本程序,而且Bugzilla开发小组在代码维护和发布上也可能有点小问题;这些因素造成要想在Windows平台下搭建一个相对完整的Bugzilla系统,更是难上加难;不过,如果有一定的Perl语言知识的话,改动起来还是比较快的。

    本文是针对在WindowsLAN环境下,安装和修改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       安装MysqlMysqlcc

    1.   本文使用的是最新Mysql For Windows4.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.   修改mysqlroot用户密码:

    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.   修改PPMPerl 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.execl.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服务器上下载最新的替换掉,MozillaCVS服务器如下: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 ladengJ

    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.cgiUserPrefs.cgiToken.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 ladengJ'

    }, 

    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-39724004-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文件,更正回车换行问题,这是由于UnixWindows平台差异造成的: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,会显示一系列的信息,仔细阅读,它可以反映你所配置的环境是否适合安装BugzillaGood 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版本,解压后,使用WinCVSBugzilla代码ImportCVS系统中,并建立Mozilla开发分支和发行标记,注意:主分支是你自己使用的分支,根据你自己的需要进行修改;而Mozilla是开发旁分支,用于与MozillaBugzilla开发小组进行版本同步更新,即当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

  • 相关阅读:
    什么变量在堆内存里存放,什么变量在栈内存里存放
    iOS应用开发:什么是ARC?
    Stack栈 Heap堆
    iOS中四种实例变量的范围类型@private@protected@public@package
    [转载] iOS应用程序的生命周期
    总结iOS 8和Xcode 6的各种坑
    [转载]对iOS开发中内存管理的一点总结与理解
    企业账号申请以及打包上传
    更换AppleWWDRCA.cer证书
    iOS9适配
  • 原文地址:https://www.cnblogs.com/huqingyu/p/53074.html
Copyright © 2020-2023  润新知