ubuntu 系统中搭建bugzilla系统及遇到的各种奇葩问题(心力憔悴)

因为一些原因,需要搭建bugzilla,在这里讲一下在搭建过程以及遇到的一些问题

这篇文章有好多地方是从其他地方借鉴的,安装时比较仓促,没有把链接记下,这边就不发链接了.虽然不全面,但是希望大家少踩一些坑

一:什么是bugzilla

Bugzilla简介
         Bugzilla是一个共享的免费的产品缺陷记录及跟踪工具(Bug-Tracking System)。由Mozilla公司提供。创始人是Terry Weissman,开始时使用一种名为“TCL”的语言创建的,后用Perl语言实现,并作为Open source发布。它可以管理软件开发中缺陷的提交(new),修复(resolve),关闭(close)等整个生命周期。
Bugzilla特点
Bugzilla能够为你建立一个完善的bug跟踪体系,包括报告bug、查询bug记录并产生报表、处理解决bug、管理员系统初始化和设置四部分。Bugzilla具有如下特点:
1.基于Web方式,安装简单、运行方便快捷、管理安全。
2.有利于缺陷的清楚传达。本系统使用数据库进行管理,提供全面详尽的报告输入项,产生标准化的bug报告。 提供大量的分析选项和强大的查询匹配能力,能根据各种条件组合进行bug统计。当缺陷在它的生命周期中变化时,开发人员、测试人员、及管理人员将及时获得 动态的变化信息,允许你获取历史记录,并在检查缺陷的状态时参考这一记录。
3.系统灵活,强大的可配置能力。Bugzilla工具可以对软件产品设定不同的模块,并针对不同的模块设定开发人员和测试人员。这样可以实现提交报告时 自动发给指定的责任人,并可设定不同的小组,权限也可划分。设定不同的用户对bug记录的操作权限不同,可有效控制进行管理。允许设定不同的严重程度和优 先级。可以在缺陷的生命期中管理缺陷。从最初的报告到最后的解决,确保了缺陷不会被忽略。同时可以使注意力集中在优先级和严重程度高的缺陷上。
4.自动发送Email,通知相关人员。根据设定的不同责任人,自动发送最新的动态信息,有效的帮助测试人员和开发人员进行沟通。

二:需要预先下载和安装的相关软件

  • Perl

    Perl,一种功能丰富的计算机程序语言,运行在超过100种计算机平台上,适用广泛,从大型机到便携设备,从快速原型创建   到大规模可扩展开发。

    Perl最初的设计者为拉里·沃尔(Larry Wall),于1987年12月18日发表。现在的版本为Perl 6,于2015年12月25日更新。

    Perl借取了C、sed、awk、shell 脚本语言以及很多其他程序语言的特性,其中最重要的特性是它内部集成了正则表达式的功  能,以及巨大的第三方代码库CPAN。简而言之,Perl像C一样强大,像awk、sed等脚本描述语言一样方便,被Perl语言爱好者称之为“一种拥有各种语言功能的梦幻脚本语言”、“Unix 中的王牌工具”。

    Perl 一般被称为“实用报表提取语言”(Practical Extraction and Report Language),你也可能看到“perl”,所有的字母都是小 写的。一般,“Perl”,有大写的 P,是指语言本身,而“perl”,小写的 p,是指程序运行的解释器

  • 数据库引擎(Mysql)
  • Web服务器(apache2)
  • Mail Transfer Agent
  • Bugzilla压缩包的下载和Perl Moudles(Perl 模块)

三:安装过程

  1. 安装Perl

安装之前确认是否安装了perl

查看perl版本信息,如下所示:

[email protected]:$ perl -v

ubuntu 系统中搭建bugzilla系统及遇到的各种奇葩问题(心力憔悴)

从以上打印信息可以看出,已经安装了perl v5.14.2 如果没安装perl,可以先执行以下命令,更新一下安装包

sudo apt-get update

然后执行安装命令,如下所示:

apt-get install perl

perl的官方网址是:http://www.perl.org/

      2.安装MySQL

查看本机是否已安装mysql,输入命令 mysql --version 如下所示

ubuntu 系统中搭建bugzilla系统及遇到的各种奇葩问题(心力憔悴)

如果没安装mysql,安装命令如下所示

sudo apt-get install MySQL-server

系统将提示您在安装过程中创建 root 密码。选择一个安全的密码,并确保你记住它,因为你以后需要它。

      3.安装Web服务器apache2

安装命令 : sudo apt-get install apache2

      4、Mail Transfer Agent

安装命令: sudo apt-get install sendmail

      5、下载bugzilla并安装Perl模块

wget http://ftp.mozilla.org/pub/mozilla.org/webtools/bugzilla-4.5.2.tar.gz

解压到httpd的/var/www/html目录下

tar xf bugzilla-4.5.2.tar.gz -C /var/www/html/    

将解压的bugzilla目录重命名

mv bugzilla-4.5.2/ bugzilla    

在bugzilla目录下有一个checksetup.pl的文件,运行该文件

sudo perl checksetup.pl

运行完毕,会告诉你当前bugzilla还差哪些perl模块需要安装(如下图),并且有提示安装命令。这里我们只需要安装必须的一些包就可以

ubuntu 系统中搭建bugzilla系统及遇到的各种奇葩问题(心力憔悴)

sudo /usr/bin/perl install-module.pl –all

在这里我出现了问题:can't exec mysql_config

安装mysql的perl驱动DBD::mysql时出现错误.

当时有点蒙,不明所以,因为没有接触过Perl语言,百度中.....

解决错误can't exec mysql_config

  1. 在系统中查找mysql_config,找到后加入到环境变量 
    ubuntu 系统中搭建bugzilla系统及遇到的各种奇葩问题(心力憔悴) 
    可是在电脑上找不到这个执行脚本.

  2. 安装libmysqlclient-dev解决问题.

可惜这不是我的菜,因为这边其他原因 我有两个MySQL(另外一个是其他软件集成的 无法合并,在ubuntu下也找不到我这个MySQL的mysql_config,尴尬... 应该是我太笨了吧)

解决错误can't exec mysql_config

Can't exec "mysql_config": 没有那个文件或目录 at Makefile.PL line 479.

解决方法:

进入DBD::mysql的代码安装目录

$ cd ~/.cpan/build/DBD-mysql-3.0008
$ perl Makefile.PL --mysql_config=<mysql_config 所在的目录>
如:$MYSQL_PREFIX_DIR/bin/mysql_config

$ make
$ make test
$ make install

也不行... 持续崩溃中

解决错误can't exec mysql_config三

我想应该是没有安装开发工具包

         sudo apt-get install python-dev

   sudo apt-get install libmysqld-dev 

   sudo apt-get install libmysqlclient-dev

如果在这里遇到需要安装其他依赖包或者无法安装的情况,硬怼(使用aptitude会给出你满意的安装方案,第一次回让你直接安装工具包,我选择了N,第二次给出的是降级处理,但都会给你安装,我选择第二个,怎么选择看你的)

         sudo aptitude install python-dev

   sudo aptitude install libmysqld-dev 

   sudo aptitude install libmysqlclient-dev

在运行 

sudo /usr/bin/perl install-module.pl –all

上诉问题已经解决----不知道我遇到的问题和大家一样不一样,这只是我遇到该问题的解决办法,希望能给大家有所帮助

接下来运行

sudo perl checksetup.pl 

还提示我安装中止

ubuntu 系统中搭建bugzilla系统及遇到的各种奇葩问题(心力憔悴)

*** Installation aborted. Read the messages above. ***

发现下边还有好多工具包没有安装

sudo /usr/bin/perl install-module.pl GD

按着这个格式把缺少的工具包安装上就好了

再运行

sudo perl checksetup.pl 

成功...

此时会在/var/www/bugzilla目录下生成localconfig文件,后面配置bugzilla需要修改这个文件

 bugzilla需要用mysql数据库来管理bugs,其默认的数据库名字为bugs,默认的数据库管理员帐号为bugs,默认管理员密码为空,这些都是写在配置文件localconfig中的。所以我们需要添加一个bugs的mysql数据管理员用户,并创建一个名为bugs的数据库来保存bugzilla提交的bugs。

在终端输入: 

mysql -u root -p(用mysql的root管理员登录mysql,以添加用户bugs),终端会提示输入密码,即之前安装mysql时的最后输入的root密码。

进入mysql界面后

grant all on *.* to bugs@localhost identified by '';flush privileges;(别忘最后的‘;'号),这样我们就创建好了mysql的用户bugs,供bugzilla使用。

最后创建bugs数据库文件。在mysql界面中输入:

CREATE DATABASE bugs;

         6、apache2服务器的配置   

打开apache2的配置文件httpd.conf

sudo vi /etc/apache2/httpd.conf,在其中添加如下内容:

   <Directory "/var/www/html/bugzilla/">

        AddHandler cgi-script .cgi 

        Options +Indexes +ExecCGI +FollowSymLinks

         DirectoryIndex index.cgi index.html

        AllowOverride None

        Order allow,deny

        Allow from all

    </Directory>

       7、bugzilla的配置

修改/bugzilla/localconfig文件中的一句话:$webservergroup = 'www-data';

这里为什么填www-data呢,这是由我们安装好的apache2的环境变数决定的,该变数存在文件/etc/apache2/envvars中,文件的内容如下:

# settings are defined via environment variables and then used in apache2ctl,
# /etc/init.d/apache2, /etc/logrotate.d/apache2, etc.
export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data

这就是我们要填www-data的原因了,另外我们需要修改bugzilla目录的owner和groups。因为apache2环境变数决定是其是用www-data用户组来执行的。修改的命令为:sudo chgrp -R root.www-data bugzilla。

 

最后在终端执行下面的命令:sudo perl checksetup.pl,运行完毕bugzilla将会顺利的安装好,在安装的最后会让你输入bugzilla系统的管理员帐号和密码,这个必须记好了。

     8、启动bugzilla

重启apache2服务器和mysqlserver

sudo /etc/init.d/apache2 restart 

sudo /etc/init.d/mysql restart

bugzilla的环境算是基本上搭建好了,接下来打开firefox就可以用了。

在地址一栏输入http://localhost/bugzilla

又出现一个问题:bugzilla 在apache上运行网页时,网页显示的是index.cgi 的源码

解决办法:(cgi 模块启动)

sudo a2enmod cgi

重启apache2

sudo service apache2 restart

好了再去访问,完美运行

ubuntu 系统中搭建bugzilla系统及遇到的各种奇葩问题(心力憔悴)