Bugzilla 这个名字,在软件开发和测试领域广为人知。它是一款基于 Web 的开源缺陷跟踪系统与测试工具,由 Mozilla 团队开发,采用 Mozilla 公共许可证(MPL)进行授权。诸如 Mozilla、红帽公司、GNOME 等知名技术团队,在日常开发流程中都离不开它。该项目最早由 Terry Weissman 于 1998 年使用 Perl 语言编写,后端数据库采用 MySQL。简单来说,它是一款协助团队高效管理软件开发流程的服务器软件,功能丰富且数据库经过高度优化。

本次教程的目标是:在 FreeBSD 10.2 系统上部署 Bugzilla 5.0,采用 Apache 作为 Web 服务器并启用 SSL 加密,后端数据库选择 MySQL 5.1。按照完整流程操作后,你会发现这套组合在实际生产环境中运行非常稳定可靠。
准备
FreeBSD 10.2 64位系统,Root 权限为 root
更新系统
首先通过 SSH 登录到 FreeBSD 服务器,接着执行系统更新命令:
sudo su
freebsd-update fetch
freebsd-update install
安装并配置 Apache
这一步使用 pkg 命令从 FreeBSD 软件仓库中安装 Apache,然后编辑 httpd.conf 配置文件,开启 SSL 与 CGI 支持。安装 Apache:
pkg install apache24
进入 Apache 目录,利用 nano 编辑配置文件:
cd /usr/local/etc/apache24
nano -c httpd.conf
需要取消以下几行前面的注释(对应行号已在注释中标注):
- 第70行:
LoadModule authn_socache_module libexec/apache24/mod_authn_socache.so - 第89行:
LoadModule socache_shmcb_module libexec/apache24/mod_socache_shmcb.so - 第117行:
LoadModule expires_module libexec/apache24/mod_expires.so - 第141行:
LoadModule ssl_module libexec/apache24/mod_ssl.so(启用SSL) - 第162行:
LoadModule cgi_module libexec/apache24/mod_cgi.so(支持CGI) - 第174行:
LoadModule rewrite_module libexec/apache24/mod_rewrite.so(启用重写) - 第219行:
ServerName 127.0.0.1:80(配置服务器名称)
保存并退出。接下来,从 FreeBSD 仓库安装 mod_perl 并启用它:
pkg install ap24-mod_perl2
再次编辑 httpd.conf,在大概第175行添加一行:
LoadModule perl_module libexec/apache24/mod_perl.so
保存退出。在启动 Apache 之前,先用 sysrc 设置开机自启动:
sysrc apache24_enable=yes
service apache24 start
安装并配置 MySQL 数据库
后端数据库选用 MySQL 5.1,同时需要安装对应的 Perl 模块。执行:
pkg install p5-DBD-mysql51 mysql51-server mysql51-client
设置 MySQL 开机启动,然后配置 root 密码:
sysrc mysql_enable=yes
service mysql-server start
mysqladmin -u root password aqwe123
注意:此处 MySQL 密码设置为 aqwe123。

上述工作完成后,使用 root 账户登录 MySQL shell,为 Bugzilla 创建专用数据库和用户:
mysql -u root -p
password: aqwe123
创建数据库和用户:
create database bugzilladb;
create user bugzillauser@localhost identified by 'bugzillauser@';
grant all privileges on bugzilladb.* to bugzillauser@localhost identified by 'bugzillauser@';
flush privileges;
\q

至此,数据库 bugzilladb、用户名 bugzillauser、密码 bugzillauser@ 均已就绪。
生成新的 SSL 证书
在 Apache 的配置目录下创建 ssl 文件夹,用于存放自签名证书:
cd /usr/local/etc/apache24/
mkdir ssl; cd ssl
使用 OpenSSL 生成证书文件并设置权限:
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /usr/local/etc/apache24/ssl/bugzilla.key -out /usr/local/etc/apache24/ssl/bugzilla.crt
chmod 600 *
配置虚拟主机
Bugzilla 计划安装在 /usr/local/www/bugzilla 目录下,为此需要创建虚拟主机配置。进入 Apache 目录,新建 vhost 文件夹:
cd /usr/local/etc/apache24/
mkdir vhost; cd vhost
创建虚拟主机配置文件 bugzilla.conf:
nano -c bugzilla.conf
粘贴以下内容:
ServerName mybugzilla.me
ServerAlias www.mybuzilla.me
DocumentRoot /usr/local/www/bugzilla
Redirect permanent / https://mybugzilla.me/
Listen 443
ServerName mybugzilla.me
DocumentRoot /usr/local/www/bugzilla
ErrorLog "/var/log/mybugzilla.me-error_log"
CustomLog "/var/log/mybugzilla.me-access_log" common
SSLEngine On
SSLCertificateFile /usr/local/etc/apache24/ssl/bugzilla.crt
SSLCertificateKeyFile /usr/local/etc/apache24/ssl/bugzilla.key
AddHandler cgi-script .cgi
Options +ExecCGI
DirectoryIndex index.cgi index.html
AllowOverride Limit FileInfo Indexes Options
Require all granted
保存退出。然后为 Bugzilla 创建安装目录,并在 httpd.conf 末尾引入虚拟主机配置:
mkdir -p /usr/local/www/bugzilla
cd /usr/local/etc/apache24/
nano -c httpd.conf
在文件末尾添加:
Include etc/apache24/vhost/*.conf
保存退出。用 apachectl configtest 测试配置是否正确,然后重启 Apache:
apachectl configtest
service apache24 restart
安装 Bugzilla
既可以通过源码手动安装,也可以直接从 FreeBSD 仓库中用 pkg 安装。这里选择后者:
pkg install bugzilla50
完成后,进入 Bugzilla 安装目录,安装所有必需的 Perl 模块:
cd /usr/local/www/bugzilla
./install-module --all
这一步会比较耗时,请耐心等待。接着执行 checksetup.pl 生成配置文件 localconfig:
./checksetup.pl
此时会看到数据库配置相关的错误提示,因为默认配置需要调整。用 nano 编辑 localconfig 文件:
nano -c localconfig
找到并修改以下三行:
- 第57行:
$db_name = 'bugzilladb'; - 第60行:
$db_user = 'bugzillauser'; - 第67行:
$db_pass = 'bugzillauser@';
保存退出,再次运行 checksetup.pl:
./checksetup.pl
这时会提示输入管理员账号信息,按要求输入邮箱、用户名和密码即可。

最后一步,将安装目录的所有者改为 www,并重启 Apache:
cd /usr/local/www/
chown -R www:www bugzilla
service apache24 restart
至此,Bugzilla 已安装完成。现在可以通过浏览器访问 mybugzilla.me,它会自动重定向到 HTTPS 连接。以下是首页展示:

Bugzilla 管理面板:

结论
Bugzilla 是一款基于 Web 的应用,能够高效地协助团队管理软件开发流程。它使用 Perl 开发,以 MySQL 作为数据库系统,被 Mozilla、Red Hat、GNOME 等众多知名团队广泛采用。其功能全面,配置与安装过程清晰明了——只要按照上述步骤操作,一套成熟的缺陷跟踪系统即可迅速部署并投入运行。
