前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux 下 Bugzilla 的安装及配置

Linux 下 Bugzilla 的安装及配置

作者头像
悠风
发布2020-03-16 18:20:56
3.3K0
发布2020-03-16 18:20:56
举报

Bugzilla 是一个基于 Web 的,开源的,用来记录跟踪缺陷数据库的 bug 跟踪软件。它可以管理软件开发中缺陷的提交(new)、修复(resolve)和关闭(close)等整个生命周期,它允许个人和团队有效地记录下他们产品的一些突出问题。

Linux 下 Bugzilla 的安装及配置安装 Perl安装 MySQL 并配置安装 Apache2 并配置下载 Bugzilla 并安装配置搭建在云服务器上使用 Nginx 服务器常见问题及解决方案


在 Linux 下安装 bugzilla 并正常使用,需要依赖以下的软件或模块:Perl、MySQL、Apache2、Bugzilla

下面以 deepin 在系统下的安装来详细讲解安装及配置过程。


安装 Perl

Perl 是一种实用报表提取语言,其前身是 Unix 系统管理的一个工具,后逐渐发展为一种功能强大的程序设计语言,用作 Web 编程、数据库处理、XML 处理以及系统管理。查看系统中是否已安装 Perl:

代码语言:javascript
复制
  perl -v

一般情况下 Linux 系统会默认安装 Perl。若未安装,则执行命令下面命令进行安装:

代码语言:javascript
复制
  sudo apt install perl*

安装 MySQL 并配置

MySQL 是一个关系型数据库。输入命令进行安装:

代码语言:javascript
复制
   sudo apt install mysql-common mysql-client mysql-server

安装完成后默认没有设置密码,可通过以下两种方式设置密码:

  1. 方式一:修改配置文件 编辑 /etc/mysql/debian.cnf 文件 sudo vim /etc/mysql/debian.cnf 找到 “password”这一行,直接在后面添加密码即可 password = Abc123
  2. 方式二:登录后设置密码 无密码登录进入 mysql 命令行 sudo mysql -u root 在 mysql 命令行执行以下命令 # 选用 mysql 数据库进行操作 use mysql; # 更改 root 用户的登录密码 update mysql.user set authentication_string=password('Abc123') where user='root'; # 注意:新版的 MySQL 已经没有 password 字段了,改成了 authentication_string

接着创建 bugzilla 用户和 bugs 数据库,并给 bugzilla 用户分配权限。同样是在 mysql 命令行执行:

代码语言:javascript
复制
  # 创建一个名为 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 服务:

代码语言:javascript
复制
  sudo systemctl restart mysql

安装 Apache2 并配置

在某些 Linux 服务器中,安装 apache 的命令为:

代码语言:javascript
复制
  sudo apt install httpd

但是在 deepin 系统中,httpd 集成在了 apache2 中,所以安装命令为:

代码语言:javascript
复制
  sudo apt install apache2

安装成功后启动 apache2 服务并设置为开机自启:

代码语言:javascript
复制
  apache2 -k start
  sudo update-rc.d apache2 enable

在 deepin 中其配置文件的目录也不是 /etc/httpd/,而是在 /etc/apache2/ 中。接下来配置 apache 解析 bugzilla 的 web 服务。首先创建配置文件:

代码语言:javascript
复制
  sudo vim /etc/apache2/sites-available/bugzilla.conf

往文件中写入以下内容:

代码语言:javascript
复制
  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 中。

保存配置文件后创建软连接以启用配置:

代码语言:javascript
复制
  sudo ln -s /etc/apache2/sites-available/bugzilla.conf /etc/apache2/sites-enabled/

或者使用下面的命令来使配置生效:

代码语言:javascript
复制
  sudo a2ensite /etc/apache2/sites/available/bugzilla.conf

然后检查配置文件是否存在语法错误:

代码语言:javascript
复制
  apache2ctl configtest

如果最后一行显示 “Syntax OK” 则表示配置文件语法正确。接下来重启 apache:

代码语言:javascript
复制
  sudo systemctl restart apache2

创建 apache 用户并加入到当前用户组:

代码语言:javascript
复制
  # 创建 apache 用户组
  sudo groupadd apache
  
  # 创建 apache 用户并加入到 yowfung 用户组中,其中 yowfung 为我当前登录用户所在的用户组
  sudo useradd -g yowfung

下载 Bugzilla 并安装配置

选定一个将要安装 bugzilla 的目录,例如 /opt ,然后下载 bugzilla 到本地:

代码语言:javascript
复制
  sudo wget https://ftp.mozilla.org/pub/mozilla.org/webtools/bugzilla-5.0.3.tar.gz -O /opt/bugzilla5.tar.gz

解压缩包:

代码语言:javascript
复制
  sudo tar -zxvf /opt/bugzilla.tar.gz

此时可以在 /opt 下看到多出来 bugzilla 文件夹,给该文件夹重新分配用户权限:

代码语言:javascript
复制
  sudo chown -R apache:yowfung /opt/bugzilla

进入到 bugzilla 安装目录中:

代码语言:javascript
复制
  cd /opt/bugzilla5

查看有哪些 Perl 模块缺失:

代码语言:javascript
复制
  ./checksetup.pl

在输出的结果中,红色标记的模块即为缺失的模块,可以使用以下命令来安装这些模块:

代码语言:javascript
复制
  perl install-module.pl --all

这个安装过程可能比较耗时,耐心等待即可,如果出现某些包错误可以输入终端上面提示的指令进行手动安装,或者下载对应的 Perl 模块进行安装。安装完成后再次运行 ./checksetup.pl 进行验证,如果所有的 Perl 模块都安装成功的话,会在当前路径下生成一个 localconfig 文件,接下来对这个文件进行配置:

代码语言:javascript
复制
  vim ./localconfig
  1. 找到 $index_html = 0 这一行,将 0 改成 1,这样才会生成一个 index.html 文件,这个文件指向 index.cgi 文件,这个 index.cgi 即为 bugzilla 的网站主页脚本。 $index_html = 1
  2. 修改数据库配置,将 $db_driver 的值设为 mysql,将 $db_name 设为上面创建的数据库的名称,将 $db_user$db_pass 设为上面新创建的 MySQL 用户名和密码。 $db_driver = 'mysql'; $db_name = 'bugs'; $db_user = 'bugzilla'; $db_pass = 'BugsAbc';
  3. 修改 Web 服务用户组,如果没有正确设置用户权限,届时网页会出现 403 错误,这里的用户组名称设为你上面创建 apache 用户时实际加入的用户组。 $webservergroup = 'yowfung';

修改完成后,再次运行 ./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 服务器

如果你习惯上使用 Nginx 而不喜欢 Apache,Bugzilla 同样也可以使用 nginx 来搭载,原理与 apache 类似,只需添加一个 nginx 的解析配置文件即可。

首先下载 fastcgi-wrapper.pl 并设置执行权限:

代码语言:javascript
复制
  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 的脚本,设置执行权限和开机启动,随后启动该脚本:

代码语言:javascript
复制
  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,并写入以下内容:

代码语言:javascript
复制
  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:

代码语言:javascript
复制
  sudo chown -R www-data:www-data /opt/bugzilla5

重启 Nginx 即可在浏览器上访问 Bugzilla 页面:

代码语言:javascript
复制
  sudo nginx -s reload

常见问题及解决方案

问题1:无法打开 Bugzilla 网页

  1. 首先确认 Bugzilla 是否正确安装。
  2. 其次确认 apache2 和 mysql 是否正确启动。
  3. 然后检查 apache2 的网页解析文件是否正确配置。
  4. 检查 bugzilla 安装目录下的 localconfig 文件是否正确配置。

问题1:打开网页出现 403 错误

出现这种情况一般有以下几种原因:

  1. bugzilla 安装目录下的 localconfig 文件中,$webservergroup 这一项没有正确配置,将其设置为 apache 用户所在用户组即可。
  2. bugzilla 目录没有访问权限,使用 chown 命令将其目录权限设置为 apache 用户及其所在用户组即可。
  3. apache 的网页解析配置文件没有正确配置,检查一遍 /etc/apache2/sites-available/bugzilla.conf 文件有没配置错误的,尤其注意 Require all granted 这一项。
  4. 如果问题还是没有解决,可查看 apache2 的错误日志来排查问题,日志文件在 /var/log/apache2 目录中。

问题2:打开网页后显示的是代码文本而不是网页内容

出现这种情况一般有以下几种原因:

  1. 在 apache 网页解析文件中没有正确配置 cgi 文件解析,尤其注意 AddHandler cgi-script .cgi .plOptions +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>
  2. 没有安装 mod_cgi.c 和 mod_cgid.c 模块 # 下载 apache 源码安装包 sudo wget https://mirrors.tuna.tsinghua.edu.cn/apache/httpd/httpd-2.4.41.tar.bz2 -O /usr/local/httpd.tar.bz2 # 解压缩并删除压缩包文件 sudo tar -jxvf /usr/local/httpd.tar.bz2 -C /usr/local/httpd sudo rm /usr/local/httpd.tar.bz2 # 进入到 apache 源文件包中 cd /usr/local/httpd/modules/generators # 使用 apxs 对模块进行编译 sudo apxs -i -a -c mod_cgi.c sudo apxs -i -a -c mod_cgid.c # 修改输出文件的执行权限 sudo chmod 755 /usr/lib/apache2/modeles/mod_cgi.so sudo chmod 755 /usr/lib/apache2/modules/mod_cgid.so # 重启 apache2 sudo systemctl restart apache2

问题3:无法启动 apache2 排查方法

  1. 首先执行 apache2ctl configtest 查看配置文件是否存在语法问题。
  2. 如果配置文件没有语法文件并且问题还存在,则执行 apache2 -k start 查看输出信息,根据输出信息来排查解决。
  3. 还可以执行 systemctl status apache2 来查看错误信息从而定位问题。

问题4:apache2.conf: DefaultRuntimeDir must be a valid directory...

出现这种情况可能是因为没有导入 apache2 的环境变量,可通过以下命令导入环境变量:

代码语言:javascript
复制
  source /etc/apache2/envvars

问题5:apache2: Could not reliably determine the server's fully qualified domain name...

这个问题不大,主要是因为在 apache2 配置文件中没有设置 ServerName。如果强迫症看不顺眼的话,可以进入到 apache2 安装目录,编辑 apache2.conf

代码语言:javascript
复制
  sudo vim /etc/apache2/apache2.conf

在最后一行添加一项 ServerName 即可

代码语言:javascript
复制
  ServerName localhost:80

问题6:could not bind to address [::]:80

出现这个问题说明你的 80 端口被占用了,可以有以下几种办法解决:

  1. 如果你的 apache 暂时没有使用到 80 端口的话,就将 /etc/apache2/sites-enabled 目录下的 000-default.conf 文件删了,然后再重启 apache2 即可 sudo rm /etc/apache2/sites-enabled/000-default.conf apache2ctl -k start
  2. 如果你系统中同时安装了 Nginx,并且 Nginx 暂不使用的话,只需将 Nginx 进程杀死即可: # 查看 nginx 进程 ps -ef | grep nginx # 杀死所有的 nginx 进程 sudo kill -9 <PID>
  3. 如果还有其他进程占用了 80 端口,可通过 netstat 命令查看并杀死相应的进程 PID: # 查看占用 80 端口的进程 netstat -tulnp | grep ":80" # 杀死该进程 sudo kill -9 <PID>
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-03-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 悠风的采坑日记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 安装 Perl
  • 安装 MySQL 并配置
  • 安装 Apache2 并配置
  • 下载 Bugzilla 并安装配置
  • 搭建在云服务器上
  • 使用 Nginx 服务器
  • 常见问题及解决方案
相关产品与服务
访问管理
访问管理(Cloud Access Management,CAM)可以帮助您安全、便捷地管理对腾讯云服务和资源的访问。您可以使用CAM创建子用户、用户组和角色,并通过策略控制其访问范围。CAM支持用户和角色SSO能力,您可以根据具体管理场景针对性设置企业内用户和腾讯云的互通能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档