本节介绍在 Microsoft Windows 上的安装。Bugzilla 已经被制作用于 Win32 平台,但是 Bugzilla 团队希望强调,在 Intel 架构机器上安装 Bugzilla 最简单的方法是安装某种 GNU/Linux 变体,然后按照本指南中的 UNIX 安装说明进行操作。如果您对运行此系统的平台选择有任何影响力,请选择 GNU/Linux 而不是 Microsoft Windows。
![]() | 在发出警告之后,这是关于 2.16 和 Windows 的情况。它根本无法开箱即用。您几乎肯定最好从 CVS 获取 2.17 版本(在与 Bugzilla 团队协商以确保您在稳定的一天拉取之后),因为我们将进行大量工作,以使 Win32 体验比现在更愉快。 |
如果您仍然想尝试,为了有任何希望使其工作,您需要应用来自 bug 124174 的 邮件补丁。之后,您需要阅读下面的(过时的)安装说明,一些(可能好得多)由 Toms Baugis 和 Jean-Sebastien Guay 好心提供的 更新的说明,并查看 Bugzilla 2.16 Win32 更新页面。如果我们有时间,我们将为 2.16 编写一些更好的安装说明并放在那里。但是不保证。
![]() | 在执行 Win32 安装时,您应该熟悉并参考 Bugzilla 安装 部分的其余部分。 在 Microsoft Windows 上使 Bugzilla 工作并非易事。在过去的几个版本中,对 Win32 的支持已大大提高,但是,如果您选择继续,您应该是一位非常熟练的 Windows 系统管理员,具有强大的故障排除能力、高度的痛苦容忍度和一定的 perl 技能。NT 上的 Bugzilla 需要破解源代码并实现一些高级实用程序。以下是在 Win32 上推荐的安装步骤;附录 A 中提供了其他建议。 |
为 Windows 安装 Apache Web Server,并将 Bugzilla 文件复制到 Apache 可以服务它们的位置。请遵循 Bugzilla 安装 中引用的关于您的 Apache 配置的所有说明,特别是关于 "AddHandler" 参数和 "ExecCGI" 的说明。
![]() | 您也可以为此目的使用 Internet Information Server 或 Personal Web Server。但是,设置完全不同。如果 ActivePerl 似乎无法正确处理您的文件关联(对于 .cgi 和 .pl 文件),请查阅 附录 A。 如果您要使用 IIS,如果在 Windows NT 上,您必须至少更新到 Service Pack 4。Windows 2000 附带了足够版本的 IIS。 |
为 Windows 安装 ActivePerl。查看 http://aspn.activestate.com/ASPN/Downloads/ActivePerl 以获取当前的编译二进制文件。
另请查看以下链接以充分了解 Win32 上 ActivePerl 的状态:Perl 移植 和 Perl on Win32 FAQ
使用 perl\bin 目录中的 ppm 安装以下包:DBI、DBD-Mysql、TimeDate、Chart、Date-Calc、Date-Manip、GD、AppConfig 和 Template。您可能需要先使用 Winzip 或其他 unzip 程序从 .zip 格式解压缩它们。大多数这些额外的 ppm 模块可以从 ActiveState 下载,但 AppConfig 和 Template 应该使用 Template Toolkit 网站上的说明 从 OpenInteract 获取。
![]() | 您可以在 http://www.activestate.com/PPMPackages/zips/5xx-builds-only/ 或 http://www.activestate.com/PPMPackages/5.6plus 找到模块列表 |
ppm 的语法是 C:> ppm <模块名>
ActiveState 的 5.6Plus 目录也包含 AppConfig ppm,因此当尝试安装 OpenInteract 版本时,您可能会看到以下错误
Error installing package 'AppConfig': Read a PPD for 'AppConfig', but it is not intended for this build of Perl (MSWin32-x86-multi-thread)
如果是这样,请直接从 OpenInteract 下载 tarball 和 ppd,然后在您下载这些文件的同一目录中运行 ppm,并通过在 install 命令中显式引用 ppd 文件来安装包,例如。
安装 MySQL for NT。
![]() | 您可以从 MySQL.com 下载 Windows NT 版 MySQL。有些人发现使用下载中包含的 WinMySqlAdmin 实用程序来设置数据库很有帮助。 |
设置 MySQL
C:> C:\mysql\bin\mysql -u root mysql
mysql> DELETE FROM user WHERE Host='localhost' AND User='';
mysql> UPDATE user SET Password=PASSWORD ('new_password') WHERE user='root';
上面的 "new_password" 指示您希望为 "root" 用户使用的任何密码。
mysql> GRANT SELECT, INSERT, UPDATE, DELETE, INDEX, ALTER, CREATE, DROP, REFERENCES ON bugs.* to bugs@localhost IDENTIFIED BY 'bugs_password';
上面的 "bugs_password" 指示您希望为 "bugs" 用户使用的任何密码。
mysql> FLUSH PRIVILEGES;
mysql> create database bugs;
mysql> exit;
C:> C:\mysql\bin\mysqladmin -u root -p reload
编辑checksetup.pl在您的 Bugzilla 目录中。更改此行
my $webservergid = getgrnam($my_webservergroup); |
到
my $webservergid = $my_webservergroup; |
my $webservergid = 'Administrators' |
运行checksetup.pl从 Bugzilla 目录。
编辑localconfig以满足您的需求。设置$db_pass为来自 步骤 5.d 的 "bugs_password",以及$webservergroup为 "8"。
![]() | 不确定上面的 "8" 是否正确。$webservergroup如果错误,请发送更正。 |
编辑defparams.pl以满足您的需求。特别是,设置DefParam("maintainer")和DefParam("urlbase") 以匹配您的安装。
![]() | 这是我不确定的另一个步骤,因为本文档的维护者不在 NT 上维护 Bugzilla。如果您可以确认或否认此步骤是必需的,请告诉我。 |
![]() | Sendmail 有几种替代方案可以在 Win32 上工作。这里提到的只是一个建议,而不是要求。其他一些可以工作的邮件包包括 BLAT、Windmail、Mercury Sendmail 和 CPAN Net::SMTP Perl 模块(在 .ppm 中可用)。每个选项都需要对 Bugzilla 的 Perl 脚本进行一些修改才能使其工作。这里的选项只是需要最少的修改。 |
下载 NTsendmail,可从 www.ntsendmail.com 获取。您必须有一个“真正的”邮件服务器,允许您在 $ENV{"NTsendmail"} 中(您可能应该将其放在 globals.pl 中)中继它
将 ntsendmail.pm 放入您的 .\perl\lib 目录。
添加到 globals.pl
# these settings configure the NTsendmail process use NTsendmail; $ENV{"NTsendmail"}="your.smtpserver.box"; $ENV{"NTsendmail_debug"}=1; $ENV{"NTsendmail_max_tries"}=5; |
![]() | 一些人提到还要编辑$db_pass在globals.pl为您的 "bugs_password"。虽然这可能会让您绕过一些验证数据库的问题,但由于 globals.pl 通常不受.htaccess的限制,您的数据库密码会暴露给任何使用您的 Web 服务器的人。 |
在您的 Bugzilla 目录中查找并注释掉所有 " open(SENDMAIL " 的出现。然后将它们替换为
# new sendmail functionality my $mail=new NTsendmail; my $from="bugzilla\@your.machine.name.tld"; my $to=$login; my $subject=$urlbase; $mail->send($from,$to,$subject,$msg); |
![]() | 有些人发现使用商业产品 Windmail 取得了成功。您可以尝试将您的 sendmail 调用替换为
|
将所有文件中从processmail到到processmail.plprocessmail到到 .
![]() | 许多人认为这可能是我们想要为主线 Bugzilla 做出的更改。这对 UNIX 用户来说是无痛的,并且会让 Win32 用户更快乐。 |
![]() | 有些人建议使用 Net::SMTP Perl 模块代替 NTsendmail 或此处列出的其他选项。您可以更改 processmail.pl 以使其工作。
|
![]() | 如果您使用的是 IIS 或另一个仅根据文件扩展名 (.pl) 而不是 "shebang" 行 (#!/usr/bonsaitools/bin/perl) 决定解释器的 Web 服务器,则此步骤是可选的 |
修改所有文件第一行 (#! ) 上 perl 的路径以指向您的 Perl 安装,并在所有使用 perl 脚本作为参数的 Perl 系统调用的开头添加 "perl"。这可能需要一段时间。有一个 "setperl.csh" 实用程序可以加速此过程的一部分,可在 Bugzilla 指南的 Bugzilla 的实用补丁和实用程序 部分中找到。但是,它需要设置 Cygwin GNU 兼容环境才能在 Win32 上工作。有关获取 Cygwin 的详细信息,请参阅 http://www.cygwin.com/。
修改 Bugzilla 目录中所有 perl 脚本中所有 system() 调用的调用。您应该为每个 system() 调用指定 perl 的完整路径。例如,更改 processmail 中的这一行
system ("./processmail",@ARGLIST); </programlisting> to <programlisting> system ("C:\\perl\\bin\\perl", "processmail", @ARGLIST); |
添加binmode()调用,以便附件可以工作 (bug 62000)。
由于基于 Microsoft Windows 的系统处理二进制文件的方式与基于 Unix 的系统不同,因此您需要将以下行添加到createattachment.cgi和showattachment.cgi在require 'CGI.pl';行之前。
binmode(STDIN); binmode(STDOUT); |
![]() | 根据 bug 62000,perl 文档说您应该始终使用binmode()在处理二进制文件时,但绝不应该在处理文本文件时使用。这似乎表明,与其随意放置binmode()在附件文件的开头,应该有逻辑来确定是否binmode()是必需的。 |
![]() | 如果您使用的是 IIS 或 Personal Web Server,则必须在 属性 -> 主目录(选项卡) -> 应用程序设置(部分) -> 配置(按钮)中添加 cgi 关系,例如
|
![]() |
|
![]() | 如果尝试运行 Bugzilla 2.12 或更早版本,您将需要从 Perl 源代码中删除 encrypt() 调用。对于 Bugzilla 2.13 及更高版本(包括当前版本 Bugzilla 2.16.3),这不是必需的。 |