Bugzilla 已在 Solaris、Linux 和 Win32 下成功安装。Win32 尚未获得官方支持,但许多人已成功使其正常运行。请参阅 Win32 安装说明,以获取关于在 Microsoft Windows 上运行 Bugzilla 的更多建议。
![]() | 如果您在系统上运行最新版本的 Perl 和 MySQL(包括可执行文件和开发库),则可以使用 Bundle::Bugzilla 跳过 Perl 模块的这些手动安装步骤;请参阅 使用 Bundle::Bugzilla 代替手动安装 Perl 模块。 |
正常运行 Bugzilla 所需的软件包(附带下载链接)包括:
MySQL 数据库服务器 (3.22.5 或更高版本)
Perl (5.005 或更高版本,如果您希望使用 Bundle::Bugzilla,建议使用 5.6.1)
Perl 模块(最低版本)
Template (v2.07)
AppConfig (v1.52)
Text::Wrap (v2001.0131)
File::Spec (v0.8.2)
Data::Dumper (任意版本)
DBD::mysql (v1.2209)
DBI (v1.13)
Date::Parse (任意版本)
CGI::Carp (任意版本)
GD (v1.19),用于错误图表
Chart::Base (v0.99c),用于错误图表
XML::Parser (任意版本),用于 XML 接口
MIME::Parser (任意版本),用于电子邮件接口
您选择的 Web 服务器。Apache 是强烈推荐的。
![]() | 在安装 Bugzilla 时,最好确保您和 Internet 的其余部分之间存在某种防火墙,因为在安装期间,您的机器可能会在一段时间内不安全。许多安装步骤需要活动的 Internet 连接才能完成,但您必须注意确保您的机器在任何时候都不会受到攻击。 |
![]() | Linux-Mandrake 8.0 包含 Bugzilla 所需和可选的所有库。安装它们最简单的方法是使用urpmi实用程序。如果您按照这些命令操作,您应该拥有 Bugzilla 所需的一切,并且checksetup.pl不应抱怨任何缺失的库。您可能已经安装了其中一些。
|
访问 MySQL 主页 www.mysql.com,获取并安装服务器的最新稳定版本。
![]() | 许多 MySQL 二进制版本将其数据文件存储在/var中。在某些 Unix 系统上,这是较小的根分区的一部分,可能没有足够的空间容纳您的错误数据库。如果您自己从源代码构建 MySQL,则可以将数据目录设置为configure的选项。 |
如果您从 RPM 或 Debian 包以外的其他方式安装,则需要将mysqld添加到您的 init 脚本中,以便服务器守护程序在您的机器重新启动时重新启动。关于 UNIX init 序列的进一步讨论超出了本指南的范围。
更改您的 init 脚本以启动mysqld并使其能够接受大型数据包。默认情况下,mysqld仅接受最大 64K 的数据包。这限制了您可以附加到错误上的附件的大小。如果您添加-O max_allowed_packet=1M到启动mysqld的命令中(或safe_mysqld),那么您将能够拥有最大约 1 兆字节的附件。Bugzilla 中有一个用于最大附件大小的参数;您应该将其配置为与您在此处选择的值匹配。
如果您计划在同一台机器上运行 Bugzilla 和 MySQL,请考虑在 init 脚本中使用--skip-networking选项。这通过阻止网络访问 MySQL 来增强安全性。
任何没有 Perl 的机器都是一台悲伤的机器。对于极少数没有 Perl 的 *nix 系统,可以从 perl.com 获取 Perl 的源代码形式。虽然 Bugzilla 可以使用所有 5.005 版本之后的 Perl 版本运行,但如果可以,最好在运行 Bugzilla 时使用最新的版本。截至撰写本文时,最新的 Perl 版本是 5.6.1。
![]() | 您可以通过从 CPAN 安装 Bundle::Bugzilla 来跳过以下 Perl 模块安装步骤,它会为您安装所有必需的模块。 bash# perl -MCPAN -e 'install "Bundle::Bugzilla"' Bundle::Bugzilla 不包括 GD、Chart::Base 或 MIME::Parser,这些对于基本的 Bugzilla 安装不是必需的。如果安装此捆绑包失败,您应该单独安装每个模块以隔离问题。 |
所有 Perl 模块都可以在 Comprehensive Perl Archive Network (CPAN) 上找到。CPAN 服务器非常容易拥堵,因此请使用镜像站点。
高质量、通用的 Perl 模块安装说明可以在 CPAN 网站上找到,但最简单的方法是直接使用 CPAN shell,它可以为您完成所有繁重的工作。要使用 CPAN shell 安装模块,请执行:
bash# perl -MCPAN -e 'install "<模块名称>"'
要以更复杂的方式进行安装:
解压模块 tarball -- 它应该创建自己的目录
CD 进入刚创建的目录,并输入以下命令
bash# perl Makefile.PL
bash# make
bash# make test
bash# make install
![]() | 许多人抱怨 Perl 模块无法为他们安装。大多数情况下,错误消息抱怨他们在 "@INC" 中缺少文件。几乎每次,此错误都是由于权限设置过于严格,导致您无法编译 Perl 模块,或者您的系统上未安装必要的 Perl 开发库。请咨询您当地的 UNIX 系统管理员以获得解决这些权限问题的帮助;如果您是当地的 UNIX 系统管理员,请咨询新闻组/邮件列表以获得进一步的帮助,或聘请某人来帮助您。 |
DBI 模块是一个通用的 Perl 模块,用于 MySQL 相关的模块。只要您的 Perl 安装正确完成,DBI 模块应该很容易安装。它是一个混合 Perl/C 模块,但 Perl 的 MakeMaker 系统大大简化了 C 编译。
Data::Dumper 模块为 Perl 提供数据结构持久性(类似于 Java 的序列化)。它随 Perl 5.004 的后续子版本一起提供,但重新安装以确保它可用不会有任何坏处。
Perl/MySQL 接口需要一些相互依赖的 Perl 模块。这些模块组合在一起构成 Msql-Mysql-modules 包。
MakeMaker 过程会询问您一些关于期望的编译目标和您的 MySQL 安装的问题。对于大多数问题,提供的默认值就足够了,但是当被问及您期望的目标是 MySQL 还是 mSQL 包时,您应该选择 MySQL 相关的包。稍后,您将被问及是否希望提供与旧版 MySQL 包的向后兼容性;您应该对此问题回答“是”。默认答案是“否”。
主机 'localhost' 应该可以,并且具有空密码的测试用户 'test' 应该能够获得足够的访问权限来在 MySQL 安装时创建的 'test' 数据库上运行测试。
许多更常见的日期/时间/日历相关的 Perl 模块已被分组到一个类似于 MySQL 模块捆绑包的捆绑包中。此捆绑包存储在 CPAN 上,名称为 TimeDate。我们最感兴趣的组件模块是 Date::Format 模块,但无论如何,安装所有模块可能都是一个好主意。
GD 库是 Thomas Boutell 在很久以前编写的,用于以编程方式在 C 语言中生成图像。从那时起,它已成为编程图像构建的事实标准。Perl GD 库中的 Perl 绑定被数百万个网页用于动态生成图表。这就是 Bugzilla 将要使用它的目的,因此如果您希望任何图表功能正常工作,则必须安装它。
![]() | Perl GD 库需要一些其他库,这些库可能已安装或未安装在您的系统上,包括libpng和libgd。完整的需求列在 Perl GD 库的 README 文件中。如果编译 GD 失败,则可能是因为您缺少必需的库。 |
您可以在此处自由选择 - Apache、Netscape 或 UNIX 上的任何其他服务器都可以。您可以将 Web 服务器与 MySQL 放在不同的机器上运行,但需要相应地调整 MySQL "bugs" 用户的权限。
![]() | 我们强烈建议使用 Apache 作为 Web 服务器。Bugzilla 指南安装说明通常假设您正在使用 Apache。如果您已使用其他 Web 服务器成功运行 Bugzilla,请与我们分享您的经验。 |
您需要确保您的 Web 服务器将任何扩展名为 .cgi 的文件作为 CGI 运行,而不仅仅是显示它。如果您使用的是 Apache,则意味着取消注释 httpd.conf 文件中的以下行:
AddHandler cgi-script .cgi |
对于 Apache,您还需要确保在 httpd.conf 文件中,以下行
Options ExecCGI AllowOverride Limit |
![]() | AllowOverride Limit 允许在 checksetup.pl 生成的 .htaccess 文件中使用 Deny 语句。 旧版本 Apache 的用户可能会在 srm.conf 和 access.conf 文件中分别找到上述行。 |
![]() | 有一些重要的文件和目录不应由 HTTP 服务器提供服务 - "data" 和 "shadow" 目录中的大多数文件以及 "localconfig" 文件。您应该配置您的 HTTP 服务器以不提供这些文件。否则将暴露关键密码和其他数据。请参阅 .htaccess 文件和安全性,详细了解如何为 Apache 执行此操作;checksetup.pl 脚本应为您创建适当的 .htaccess 文件。 |
您应该将 Bugzilla 文件解压到您愿意让默认 Web 服务器用户(可能是 "nobody")可写的目录中。您可以决定将文件放在 Web 服务器的主 Web 空间中,或者放在/usr/local中,并在指向 Bugzilla 目录的 Web 空间中使用符号链接。
![]() | 如果您将 bugzilla 目录符号链接到 Apache 的 HTML 层次结构中,您可能会收到 Forbidden 错误,除非您将 "FollowSymLinks" 指令添加到 httpd.conf 中 HTML 根目录的 <Directory> 条目中。 |
一旦所有文件都位于 Web 可访问的目录中,请使该目录对您的 Web 服务器用户可写。这是一个临时步骤,直到您运行安装后checksetup.pl脚本,该脚本会锁定您的安装。
最后,您需要为/usr/bonsaitools/bin/perl设置一个符号链接到您的 Perl 可执行文件的正确位置(可能是/usr/bin/perl)。否则,您必须修改所有 .cgi 文件以更改它们查找 Perl 的位置。可以使用以下 Perl 单行命令来完成此操作,但我建议使用符号链接方法以避免升级麻烦。
perl -pi -e 's@#\!/usr/bonsaitools/bin/perl@#\!/usr/bin/perl@' *cgi *pl Bug.pm processmail syncshadowdb |
在您安装并运行所有软件后,您就可以开始准备数据库,使其成为高质量错误跟踪器的后端。
首先,您需要修复 MySQL 权限以允许 Bugzilla 访问。在本安装部分中,Bugzilla 用户名将是 "bugs",并将具有最低权限。
首先,为 MySQL root 用户设置密码。MySQL 密码限制为 16 个字符。
bash# mysql -u root mysql |
mysql> UPDATE user SET Password=PASSWORD('<新密码>') WHERE user='root'; |
mysql> FLUSH PRIVILEGES; |
接下来,我们使用 SQL GRANT 命令创建一个 "bugs" 用户,并授予 checksetup.pl(稍后我们将使用它)工作所需的足够权限。这也将 "bugs" 用户限制为在名为 "bugs" 的数据库中进行操作,并且仅允许该帐户从 "localhost" 连接。如果您将从另一台机器或以不同的用户身份连接,请修改它以反映您的设置。
请记住将 <bugs_password> 设置为某个唯一的密码。
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,INDEX, ALTER,CREATE,DROP,REFERENCES ON bugs.* TO bugs@localhost IDENTIFIED BY '<bugs_password>'; |
mysql> FLUSH PRIVILEGES; |
![]() | 如果您使用的是 MySQL 4,则 bugs 用户还需要被授予 LOCK TABLES 和 CREATE TEMPORARY TABLES 权限。 |
接下来,运行神奇的 checksetup.pl 脚本。(非常感谢 Holger Schurig 编写此脚本!)此脚本旨在确保您的 MySQL 数据库和其他配置选项与 Bugzilla CGI 文件一致。它将确保 Bugzilla 文件和目录具有合理的权限,设置data目录,并创建所有 MySQL 表。
bash# ./checksetup.pl |
的文件。此文件包含您可能需要调整的各种设置,包括 Bugzilla 应如何连接到 MySQL 数据库。
连接设置包括:
服务器主机:如果 MySQL 服务器是本地服务器,则只需使用 "localhost"
数据库名称:如果您遵循这些说明,则为 "bugs"
MySQL 用户名:如果您遵循这些说明,则为 "bugs"
MySQL "bugs" 帐户的密码;(上面的 <bugs_password>)
在您对设置感到满意后,su到您的 Web 服务器运行的用户,然后重新运行checksetup.pl。 (注意:在某些注重安全的系统上,您可能需要更改 Web 服务器帐户的登录 shell 才能执行此操作。)在第二次运行时,它将创建数据库和一个管理员帐户,系统将提示您提供该帐户的信息。
![]() | checksetup.pl 脚本的设计使其可以随时运行而不会造成危害。您应该在每次升级 Bugzilla 后运行它。 |
您应该浏览“编辑参数”页面(页脚中的链接)上的参数,并将它们全部设置为适当的值。关键参数记录在 第 5.1 节中。