Bugzilla 是一个基于 Web 的,开源的,用来记录跟踪缺陷数据库的 bug 跟踪软件。它可以管理软件开发中缺陷的提交(new)、修复(resolve)和关闭(close)等整个生命周期,它允许个人和团队有效地记录下他们产品的一些突出问题。
Linux 下 Bugzilla 的安装及配置安装 Perl安装 MySQL 并配置安装 Apache2 并配置下载 Bugzilla 并安装配置搭建在云服务器上使用 Nginx 服务器常见问题及解决方案
在 Linux 下安装 bugzilla 并正常使用,需要依赖以下的软件或模块:Perl、MySQL、Apache2、Bugzilla
下面以 deepin 在系统下的安装来详细讲解安装及配置过程。
Perl 是一种实用报表提取语言,其前身是 Unix 系统管理的一个工具,后逐渐发展为一种功能强大的程序设计语言,用作 Web 编程、数据库处理、XML 处理以及系统管理。查看系统中是否已安装 Perl:
perl -v
一般情况下 Linux 系统会默认安装 Perl。若未安装,则执行命令下面命令进行安装:
sudo apt install perl*
MySQL 是一个关系型数据库。输入命令进行安装:
sudo apt install mysql-common mysql-client mysql-server
安装完成后默认没有设置密码,可通过以下两种方式设置密码:
接着创建 bugzilla 用户和 bugs 数据库,并给 bugzilla 用户分配权限。同样是在 mysql 命令行执行:
# 创建一个名为 bugzilla 的 mysql 用户
create user 'bugzilla'@'localhost' identified by 'BugsAbc';
# 创建一个名为 bugs 的数据库
create database bugs;
# 给 bugzilla 用户分配权限,使其可以完全操作 bugs 数据库
grant all privileges on bugs.* to 'bugzilla'@'localhost' identified by 'BugsAbc';
# 从 MySQL 数据库授权表中重新装载权限
flush privileges;
然后重启 MySQl 服务:
sudo systemctl restart mysql
在某些 Linux 服务器中,安装 apache 的命令为:
sudo apt install httpd
但是在 deepin 系统中,httpd 集成在了 apache2 中,所以安装命令为:
sudo apt install apache2
安装成功后启动 apache2 服务并设置为开机自启:
apache2 -k start
sudo update-rc.d apache2 enable
在 deepin 中其配置文件的目录也不是 /etc/httpd/,而是在 /etc/apache2/ 中。接下来配置 apache 解析 bugzilla 的 web 服务。首先创建配置文件:
sudo vim /etc/apache2/sites-available/bugzilla.conf
往文件中写入以下内容:
Listen 8555
<VirtualHost *:8555>
ServerAdmin yowfung@outlook.com
DocumentRoot "/opt/bugzilla5"
ServerName 192.168.10.192
ServerAlias 192.168.10.192
ErrorLog "${APACHE_LOG_DIR}/vhost.bugzilla.error.log"
CustomLog "${APACHE_LOG_DIR}/vhost.bugzilla.access.log" combined
<Directory /opt/bugzilla5>
AddHandler cgi-script .cgi .pl
Options +Indexes +ExecCGI
DirectoryIndex index.cgi index.html index.html.var
AllowOverride all
Require all granted
</Directory>
</VirtualHost>
# 其中监听的端口号、邮箱、服务器 IP 地址等根据实际情况填写,网站根目录则指向接下来 bugzilla 要安装到的目录,我这里预计安装到 /opt/bugzilla5 中。
保存配置文件后创建软连接以启用配置:
sudo ln -s /etc/apache2/sites-available/bugzilla.conf /etc/apache2/sites-enabled/
或者使用下面的命令来使配置生效:
sudo a2ensite /etc/apache2/sites/available/bugzilla.conf
然后检查配置文件是否存在语法错误:
apache2ctl configtest
如果最后一行显示 “Syntax OK” 则表示配置文件语法正确。接下来重启 apache:
sudo systemctl restart apache2
创建 apache 用户并加入到当前用户组:
# 创建 apache 用户组
sudo groupadd apache
# 创建 apache 用户并加入到 yowfung 用户组中,其中 yowfung 为我当前登录用户所在的用户组
sudo useradd -g yowfung
选定一个将要安装 bugzilla 的目录,例如 /opt ,然后下载 bugzilla 到本地:
sudo wget https://ftp.mozilla.org/pub/mozilla.org/webtools/bugzilla-5.0.3.tar.gz -O /opt/bugzilla5.tar.gz
解压缩包:
sudo tar -zxvf /opt/bugzilla.tar.gz
此时可以在 /opt 下看到多出来 bugzilla 文件夹,给该文件夹重新分配用户权限:
sudo chown -R apache:yowfung /opt/bugzilla
进入到 bugzilla 安装目录中:
cd /opt/bugzilla5
查看有哪些 Perl 模块缺失:
./checksetup.pl
在输出的结果中,红色标记的模块即为缺失的模块,可以使用以下命令来安装这些模块:
perl install-module.pl --all
这个安装过程可能比较耗时,耐心等待即可,如果出现某些包错误可以输入终端上面提示的指令进行手动安装,或者下载对应的 Perl 模块进行安装。安装完成后再次运行 ./checksetup.pl
进行验证,如果所有的 Perl 模块都安装成功的话,会在当前路径下生成一个 localconfig 文件,接下来对这个文件进行配置:
vim ./localconfig
$index_html = 0
这一行,将 0 改成 1,这样才会生成一个 index.html 文件,这个文件指向 index.cgi 文件,这个 index.cgi 即为 bugzilla 的网站主页脚本。
$index_html = 1$db_driver
的值设为 mysql,将 $db_name
设为上面创建的数据库的名称,将 $db_user
和 $db_pass
设为上面新创建的 MySQL 用户名和密码。
$db_driver = 'mysql'; $db_name = 'bugs'; $db_user = 'bugzilla'; $db_pass = 'BugsAbc';修改完成后,再次运行 ./checksetup.pl
进行验证,如果没问题,则会自动进行 bugzilla 的安装,安装过程中会让你输入一些信息(管理员账号、密码等),安装成功后则会出现以下画面:
此时打开浏览器,在地址栏输入你的 IP 地址和端口号,或者输入 127.0.1.1 和端口号即可访问 bugzilla 网页
上述过程安装的 Bugzilla,只能在 Linux-Desktop 系统本地上使用,如果想要在 Linux-Server 中运行,或者想要实现远程访问该机器上的 Bugzilla,你需要一个公网 IP 和一个域名(可选),只需修改 /etc/apache2/sites-available/bugzilla.conf 中的 ServerName
这一项,将其改为你的公网 IP 地址或者域名地址(记得在域名管理网站上进行解析)即可。
如果你习惯上使用 Nginx 而不喜欢 Apache,Bugzilla 同样也可以使用 nginx 来搭载,原理与 apache 类似,只需添加一个 nginx 的解析配置文件即可。
首先下载 fastcgi-wrapper.pl 并设置执行权限:
sudo wget -O /usr/local/bin/fastcgi-wrapper http://ftp.quzart.com/notes/bugzilla-nginx-fcgi/fastcgi-wrapper.pl
sudo chmod 755 /usr/local/bin/fastcgi-wrapper
下载用于启动 fastcgi 的脚本,设置执行权限和开机启动,随后启动该脚本:
sudo wget -O /etc/init.d/fastcgi-wrapper http://ftp.quzart.com/notes/bugzilla-nginx-fcgi/fastcgi-wrapper-initscript
sudo chmod 755 /etc/init.d/fastcgi-wrapper
sudo update-rc.d fastcgi-wrapper defaults
sudo invoke-rc.d fastcgi-wrapper start
在 /etc/nginx/sites-available/ 中添加一个新的配置文件 bugzilla.conf,并写入以下内容:
server {
listen 8555;
root /opt/bugzilla5;
index index.cgi index.html;
server_name localhost;
error_log /var/log/nginx/error.bugzilla.log;
access_log /var/log/nginx/access.bugzilla.log;
location / {
autoindex off;
}
location ~ ^.*\.cgi$ {
fastcgi_pass unix:/var/run/fastcgi-wrapper/fastcgi-wrapper.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
# 其中网站根目录 root 和域名 server_name 需要根据实际情况填写。
然后记得修改 bugzilla 安装目录的用户和用户组权限,因为 Nginx 使用的用户和用户组均为 www-data:
sudo chown -R www-data:www-data /opt/bugzilla5
重启 Nginx 即可在浏览器上访问 Bugzilla 页面:
sudo nginx -s reload
问题1:无法打开 Bugzilla 网页
问题1:打开网页出现 403 错误
出现这种情况一般有以下几种原因:
$webservergroup
这一项没有正确配置,将其设置为 apache 用户所在用户组即可。Require all granted
这一项。问题2:打开网页后显示的是代码文本而不是网页内容
出现这种情况一般有以下几种原因:
AddHandler cgi-script .cgi .pl
和 Options +Indexes +ExecCGI
这两项。
<Directory /opt/bugzilla5> AddHandler cgi-script .cgi .pl Options +Indexes +ExecCGI DirectoryIndex index.cgi index.html index.html.var AllowOverride all Require all granted </Directory>问题3:无法启动 apache2 排查方法
apache2ctl configtest
查看配置文件是否存在语法问题。apache2 -k start
查看输出信息,根据输出信息来排查解决。systemctl status apache2
来查看错误信息从而定位问题。问题4:apache2.conf: DefaultRuntimeDir must be a valid directory...
出现这种情况可能是因为没有导入 apache2 的环境变量,可通过以下命令导入环境变量:
source /etc/apache2/envvars
问题5:apache2: Could not reliably determine the server's fully qualified domain name...
这个问题不大,主要是因为在 apache2 配置文件中没有设置 ServerName。如果强迫症看不顺眼的话,可以进入到 apache2 安装目录,编辑 apache2.conf
sudo vim /etc/apache2/apache2.conf
在最后一行添加一项 ServerName 即可
ServerName localhost:80
问题6:could not bind to address [::]:80
出现这个问题说明你的 80 端口被占用了,可以有以下几种办法解决: