|
|
4.3. Win32 Installation NotesThis section covers installation on Microsoft Windows.
Bugzilla has been made to work on Win32 platforms, but the Bugzilla team
wish to emphasise that The easiest way to install Bugzilla on
Intel-archiecture machines
is to install some variant of GNU/Linux, then follow the UNIX
installation instructions in this Guide. If you have any influence in the
platform choice for running this system, please choose GNU/Linux instead
of Microsoft Windows.  | After that warning, here's the situation for 2.16
and Windows. It doesn't work at all out of the box.
You are almost certainly better off getting
the 2.17 version from CVS (after consultation with the Bugzilla Team to
make sure you are pulling on a stable day) because we'll be doing a load
of work to make the Win32 experience more pleasant than it is now.
|
If you still want to try this, to have any hope of getting it to work,
you'll need to apply the
mail patch from
bug 124174.
After that, you'll need to read the (outdated) installation
instructions below, some (probably a lot better) more
recent ones kindly provided by Toms Baugis and Jean-Sebastien
Guay, and also check the
Bugzilla 2.16 Win32 update page
. If we get time,
we'll write some better installation instructions for 2.16 and put
them up there. But no promises.
4.3.1. Win32 Installation: Step-by-step | You should be familiar with, and cross-reference, the rest of
the
Bugzilla Installation
section while performing your Win32 installation. Making Bugzilla work on Microsoft Windows is no picnic. Support
for Win32 has improved dramatically in the last few releases, but, if
you choose to proceed, you should be a
very
skilled Windows Systems Administrator with strong troubleshooting
abilities, a high tolerance for pain, and moderate perl skills.
Bugzilla on NT requires hacking source code and implementing some
advanced utilities. What follows is the recommended installation
procedure for Win32; additional suggestions are provided in
Appendix A
. |
Install
Apache Web Server
for Windows, and copy the Bugzilla files somewhere Apache can serve
them. Please follow all the instructions referenced in
Bugzilla Installation
regarding your Apache configuration, particularly instructions
regarding the
"AddHandler"
parameter and
"ExecCGI"
.  | You may also use Internet Information Server or Personal
Web Server for this purpose. However, setup is quite different.
If ActivePerl doesn't seem to handle your file associations
correctly (for .cgi and .pl files), please consult
Appendix A
. If you are going to use IIS, if on Windows NT you must be
updated to at least Service Pack 4. Windows 2000 ships with a
sufficient version of IIS. |
Install
ActivePerl
for Windows. Check
http://aspn.activestate.com/ASPN/Downloads/ActivePerl
for a current compiled binary. Please also check the following links to fully understand the
status of ActivePerl on Win32:
Perl Porting
, and
Perl on Win32 FAQ
Use ppm from your perl\bin directory to install the following
packs: DBI, DBD-Mysql, TimeDate, Chart, Date-Calc, Date-Manip, GD,
AppConfig, and Template. You may need to extract them from .zip
format using Winzip or other unzip program first. Most of these
additional ppm modules can be downloaded from ActiveState, but
AppConfig and Template should be obtained from OpenInteract using
the
instructions on the Template Toolkit web site
. The syntax for ppm is:
C:>
ppm <modulename>
Example 4-1. Installing ActivePerl ppd Modules on Microsoft
Windows
C:>
ppm
DBD-Mysql
Watch your capitalization! ActiveState's 5.6Plus directory also contains an AppConfig
ppm, so you might see the following error when trying to install
the version at OpenInteract:
Error installing package 'AppConfig': Read a PPD
for 'AppConfig', but it is not intended for this build of Perl
(MSWin32-x86-multi-thread)
If so, download both
the tarball
and
the ppd
directly from OpenInteract, then run ppm from within the same
directory to which you downloaded those files and install the
package by referencing the ppd file explicitly via in the install
command, f.e.:
Example 4-2. Installing OpenInteract ppd Modules manually on Microsoft
Windows
install
C:\AppConfig.ppd
Install MySQL for NT.
 | You can download MySQL for Windows NT from
MySQL.com
. Some find it helpful to use the WinMySqlAdmin utility, included
with the download, to set up the database. |
Setup 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"
, above, indicates whatever password you wish to use for your
"root"
user.
mysql>
GRANT SELECT, INSERT, UPDATE, DELETE, INDEX,
ALTER, CREATE, DROP, REFERENCES ON bugs.* to bugs@localhost
IDENTIFIED BY 'bugs_password';
"bugs_password"
, above, indicates whatever password you wish to use for your
"bugs"
user.
mysql>
FLUSH PRIVILEGES;
mysql>
create database bugs;
mysql>
exit;
C:>
C:\mysql\bin\mysqladmin -u root -p
reload
Edit
checksetup.pl
in your Bugzilla directory. Change this line:
my $webservergid =
getgrnam($my_webservergroup); |
to
my $webservergid =
$my_webservergroup; |
or the name of the group you wish to own the files explicitly:
my $webservergid =
'Administrators' |
Run
checksetup.pl
from the Bugzilla directory. Edit
localconfig
to suit your requirements. Set
$db_pass
to your
"bugs_password"
from
step 5.d
, and
$webservergroup
to
"8"
.  | Not sure on the
"8"
for
$webservergroup
above. If it's wrong, please send corrections. |
Edit
defparams.pl
to suit your requirements. Particularly, set
DefParam("maintainer")
and
DefParam("urlbase") to match your install.
 | This is yet another step I'm not sure of, since the
maintainer of this documentation does not maintain Bugzilla on
NT. If you can confirm or deny that this step is required, please
let me know. |
 | There are several alternatives to Sendmail that will work
on Win32. The one mentioned here is a
suggestion
, not a requirement. Some other mail packages that can work
include
BLAT
,
Windmail
,
Mercury
Sendmail
, and the CPAN Net::SMTP Perl module (available in .ppm). Every
option requires some hacking of the Perl scripts for Bugzilla to
make it work. The option here simply requires the least. |
Download NTsendmail, available from
www.ntsendmail.com
. You must have a "real" mail server which allows you to relay
off it in your $ENV{"NTsendmail"} (which you should probably
place in globals.pl) Put ntsendmail.pm into your .\perl\lib directory. Add to globals.pl: # these settings configure the NTsendmail
process use NTsendmail;
$ENV{"NTsendmail"}="your.smtpserver.box";
$ENV{"NTsendmail_debug"}=1;
$ENV{"NTsendmail_max_tries"}=5; |
 | Some mention to also edit
$db_pass
in
globals.pl
to be your
"bugs_password"
. Although this may get you around some problem
authenticating to your database, since globals.pl is not
normally restricted by
.htaccess
, your database password is exposed to whoever uses your web
server. |
Find and comment out all occurences of
"
open(SENDMAIL
"
in your Bugzilla directory. Then replace them with:
# 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); |
 | Some have found success using the commercial product,
Windmail
. You could try replacing your sendmail calls with:
open SENDMAIL,
"|\"C:/General/Web/tools/Windmail 4.0 Beta/windmail\" -t >
mail.log"; |
or something to that effect. |
Change all references in all files from
processmail
to
processmail.pl
, and rename
processmail
to
processmail.pl
.  | Many think this may be a change we want to make for
main-tree Bugzilla. It's painless for the UNIX folks, and will
make the Win32 people happier. |
 | Some people have suggested using the Net::SMTP Perl module
instead of NTsendmail or the other options listed here. You can
change processmail.pl to make this work.
my $smtp = Net::SMTP->new('<Name of your SMTP server>'); #connect to SMTP server
$smtp->mail('<your name>@<you smpt server>');# use the sender's adress here
$smtp->to($tolist); # recipient's address
$smtp->data(); # Start the mail
$smtp->datasend($msg);
$smtp->dataend(); # Finish sending the mail
$smtp->quit; # Close the SMTP connection
$logstr = "$logstr; mail sent to $tolist $cclist";
}
|
here is a test mail program for Net::SMTP:
use Net::SMTP;
my $smtp = Net::SMTP->new('<Name of your SMTP server', Timeout => 30, Debug
=> 1, ); # connect to SMTP server
$smtp->auth;
$smtp->mail('you@yourcompany.com');# use the sender's adress
here
$smtp->to('someotherAddress@someotherdomain.com'); #
recipient's address
$smtp->data(); # Start the mail
$smtp->datasend('test');
$smtp->dataend(); # Finish sending the mail
$smtp->quit; # Close the SMTP connection
exit;
|
|
 | This step is optional if you are using IIS or another web
server which only decides on an interpreter based upon the file
extension (.pl), rather than the
"shebang"
line (#/usr/bonsaitools/bin/perl) |
Modify the path to perl on the first line (#!) of all files
to point to your Perl installation, and add
"perl"
to the beginning of all Perl system calls that use a perl script as
an argument. This may take you a while. There is a
"setperl.csh"
utility to speed part of this procedure, available in the
Useful Patches and Utilities for Bugzilla
section of The Bugzilla Guide. However, it requires the Cygwin
GNU-compatible environment for Win32 be set up in order to work.
See
http://www.cygwin.com/
for details on obtaining Cygwin. Modify the invocation of all system() calls in all perl
scripts in your Bugzilla directory. You should specify the full
path to perl for each system() call. For instance, change this line
in processmail:
system ("./processmail",@ARGLIST);
</programlisting> to
<programlisting>
system ("C:\\perl\\bin\\perl", "processmail", @ARGLIST);
|
Add
binmode()
calls so attachments will work (
bug
62000
). Because Microsoft Windows based systems handle binary files
different than Unix based systems, you need to add the following
lines to
createattachment.cgi
and
showattachment.cgi
before the
require 'CGI.pl';
line.
binmode(STDIN);
binmode(STDOUT);
|
 | According to
bug 62000
, the perl documentation says that you should always use
binmode()
when dealing with binary files, but never when dealing with text
files. That seems to suggest that rather than arbitrarily putting
binmode()
at the beginning of the attachment files, there should be logic
to determine if
binmode()
is needed or not. |
 | If you are using IIS or Personal Web Server, you must add cgi
relationships to Properties -> Home directory (tab) ->
Application Settings (section) -> Configuration (button), such
as:
.cgi to: <perl install directory>\perl.exe %s
%s .pl to: <perl install directory>\perl.exe %s %s
GET,HEAD,POST |
Change the path to Perl to match your install, of course. |
4.3.2. Additional Windows Tips | From Andrew Pearson:
You can make Bugzilla work with Personal Web Server for
Windows 98 and higher, as well as for IIS 4.0. Microsoft has
information available at
http://support.microsoft.com/support/kb/articles/Q231/9/98.ASP
Basically you need to add two String Keys in the registry at
the following location:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC\Parameters\ScriptMap |
The keys should be called ".pl" and ".cgi", and both should
have a value something like:
c:/perl/bin/perl.exe "%s" "%s"
The KB article only talks about .pl, but it goes into more
detail and provides a perl test script.
|
 | If attempting to run Bugzilla 2.12 or older, you will need to
remove encrypt() calls from the Perl source. This is
not necessary
for Bugzilla 2.13 and later, which includes the current release,
Bugzilla 2.16.3.
Example 4-3. Removing encrypt() for Windows NT Bugzilla version 2.12 or
earlier Replace this:
SendSQL("SELECT encrypt(" . SqlQuote($enteredpwd) .
", " . SQLQuote(substr($realcryptpwd, 0, 2)) . ")"); my
$enteredcryptpwd = FetchOneColumn(); |
with this:
my $enteredcryptpwd = $enteredpwd |
in cgi.pl.
|
|