Bugzilla:Win32Install: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 1: Line 1:
If you want a single-package installer that will install Apache, MySQL, Perl, and Bugzilla all at once and configure them all for you, check out the [[Bugzilla:Win32InstallPackages|Windows Install Packages]].
If you want a single-package installer that will install Apache, MySQL, Perl, and Bugzilla all at once and configure them all for you, check out the [[Bugzilla:Win32InstallPackages|Windows Install Packages]].  


If you prefer to do everything yourself, the below instructions explain how to manually configure Bugzilla on Windows.
If you prefer to do everything yourself, the below instructions explain how to manually configure Bugzilla on Windows.  


==Installing Bugzilla on Microsoft Windows==
== Installing Bugzilla on Microsoft Windows ==


<b>Original author: [http://bugzilla.glob.com.au/ Byron Jones]</b>
'''Original author: [http://bugzilla.glob.com.au/ Byron Jones]'''


Bugzilla version 2.18 was the first release that runs unmodified on Windows. This document guides you step by step through the installation process.
Bugzilla version 2.18 was the first release that runs unmodified on Windows. This document guides you step by step through the installation process.  


Note that there are a few things that don't work very well on Windows, such as mod_perl.
Note that there are a few things that don't work very well on Windows, such as mod_perl.  


===Bugzilla===
=== Bugzilla ===


There's two main methods to getting the Bugzilla source - from CVS or in a tarball. The best method for fetching Bugzilla is to grab it directly from CVS, as this will allow for simple upgrades, even if you have customised Bugzilla.
There's two main methods to getting the Bugzilla source - from CVS or in a tarball. The best method for fetching Bugzilla is to grab it directly from CVS, as this will allow for simple upgrades, even if you have customised Bugzilla.  


Read the [http://www.bugzilla.org/releases/3.2/release-notes.html Release Notes] before you do anything.
Read the [http://www.bugzilla.org/releases/3.2/release-notes.html Release Notes] before you do anything.  


====Installing Bugzilla From CVS====
==== Installing Bugzilla From CVS ====


Download the CVSNT client from [http://www.cvsnt.org/] (2.15 Meg).
Download the CVSNT client from [http://www.cvsnt.org/] (2.15 Meg).  


Run the installation, you'll only need to install the <b>Command line client</b> and the <b>Password Server (:pserver:) Protocol</b>. Once the install has completed, log out and log in again to pick up the changes to the PATH.
Run the installation, you'll only need to install the '''Command line client''' and the '''Password Server (:pserver:) Protocol'''. Once the install has completed, log out and log in again to pick up the changes to the PATH.  


Note: this document assumes you want to install Bugzilla into <b>C:\Bugzilla</b>.
Note: this document assumes you want to install Bugzilla into '''C:\Bugzilla'''.  


Open the command line, and cd to the <b>parent</b> of the directory you want to install Bugzilla into. As we'll be installing Bugzilla into <b>C:\Bugzilla</b>, the current directory must be <b>C:\</b>.
Open the command line, and cd to the '''parent''' of the directory you want to install Bugzilla into. As we'll be installing Bugzilla into '''C:\Bugzilla''', the current directory must be '''C:\'''.  


  C:\&gt;<b>set CVSROOT=:pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot</b>
  C:\&gt;'''set CVSROOT=:pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot'''
   
   
  C:\&gt;<b>cvs login</b>
  C:\&gt;'''cvs login'''
   
   
  Logging in to :pserver:anonymous@cvs-mirror.mozilla.org:2401:/cvsroot
  Logging in to&nbsp;:pserver:anonymous@cvs-mirror.mozilla.org:2401:/cvsroot
  CVS password: <b>anonymous</b>
  CVS password: '''anonymous'''
   
   
  C:\&gt;<b>cvs checkout -d Bugzilla -rBugzilla_Stable Bugzilla</b>
  C:\&gt;'''cvs checkout -d Bugzilla -rBugzilla_Stable Bugzilla'''
  cvs checkout: cwd=C:\ ,current=C:\
  cvs checkout: cwd=C:\ ,current=C:\
  cvs checkout: Updating Bugzilla
  cvs checkout: Updating Bugzilla
Line 48: Line 48:
  C:\&gt;
  C:\&gt;


====Upgrading From CVS====
==== Upgrading From CVS ====


If you've already installed an earlier version of Bugzilla from CVS or from a TarBall, updating is easy. Even if you've made customisations, CVS is smart enough to merge. If CVS needs help merging, it displays a C in the first column of its report. You need to resolve such conflicts manually.
If you've already installed an earlier version of Bugzilla from CVS or from a TarBall, updating is easy. Even if you've made customisations, CVS is smart enough to merge. If CVS needs help merging, it displays a C in the first column of its report. You need to resolve such conflicts manually.  


  C:\Bugzilla&gt;<b>cvs update -R -d -rBugzilla_Stable</b>
  C:\Bugzilla&gt;'''cvs update -R -d -rBugzilla_Stable'''
  cvs update: Updating .
  cvs update: Updating .
  P editusers.cgi
  P editusers.cgi
Line 73: Line 73:
  C:\Bugzilla&gt;
  C:\Bugzilla&gt;


====Installing Bugzilla From the TarBall====
==== Installing Bugzilla From the TarBall ====


Download Bugzilla from [http://bugzilla.org/download.html] (2.4 Meg).
Download Bugzilla from [http://bugzilla.org/download.html] (2.4 Meg).  


Bugzilla ships as a Tarball, which has the extension .tar.gz. Any decent Windows archive tool should be able to extract tarballs.
Bugzilla ships as a Tarball, which has the extension .tar.gz. Any decent Windows archive tool should be able to extract tarballs.  


Extract the archive to the directory of your choice. For the remainder of this document I will assume that you have extracted Bugzilla into <b>C:\Bugzilla</b>.
Extract the archive to the directory of your choice. For the remainder of this document I will assume that you have extracted Bugzilla into '''C:\Bugzilla'''.  


====Upgrading From TarBall====
==== Upgrading From TarBall ====


If you installed Bugzilla from the TarBall, the simplest way to upgrade is to follow the <b>CVS Upgrading</b> instructions.
If you installed Bugzilla from the TarBall, the simplest way to upgrade is to follow the '''CVS Upgrading''' instructions.  


===MySQL===
=== MySQL ===


====Download MySQL ====
==== Download MySQL ====


Download the MySQL "Windows Essentials" installer from [http://dev.mysql.com/downloads/mysql/4.1.html#Windows http://dev.mysql.com/downloads/mysql/4.1.html] (14.1 Meg).
Download the MySQL "Windows Essentials" installer from [http://dev.mysql.com/downloads/mysql/4.1.html#Windows http://dev.mysql.com/downloads/mysql/4.1.html] (14.1 Meg).  


MySQL 5.x is now stable enough and can be used.
MySQL 5.x is now stable enough and can be used.  


==== Install ====
==== Install ====


MySQL has a standard Windows installer. It's ok to select a Typical MySQL install (the default). For the remainder of this document I will assume you have installed MySQL into '''C:\mysql'''.  
MySQL has a standard Windows installer. It's ok to select a Typical MySQL install (the default). For the remainder of this document I will assume you have installed MySQL into '''C:\mysql'''.  
Line 99: Line 99:
Goto mysql\bin\my.ini  
Goto mysql\bin\my.ini  


and edit
and edit  


max_allowed_packet to 4M&nbsp; <br>unter there add<br>ft_min_word_len = 2 <br><br>
max_allowed_packet to 4M&nbsp; <br>unter there add<br>ft_min_word_len = 2 <br><br>  


====Create Bugs Database User====
==== Create Bugs Database User ====


Use the <b>mysql</b> command line utility to create a MySQL account for Bugzilla.
Use the '''mysql''' command line utility to create a MySQL account for Bugzilla.  


Note in the following example 'sockmonkey' is my password for the bugs account:
Note in the following example 'sockmonkey' is my password for the bugs account:  


  C:\mysql\bin&gt;<b>mysql --user=root -p mysql</b>
  C:\mysql\bin&gt;'''mysql --user=root -p mysql'''
   
   
  Enter password: <b>********</b>
  Enter password: '''********'''
  Welcome to the MySQL monitor.  Commands end with ; or \g.
  Welcome to the MySQL monitor.  Commands end with&nbsp;; or \g.
  Your MySQL connection id is 15 to server version: 4.0.20a-debug
  Your MySQL connection id is 15 to server version: 4.0.20a-debug
   
   
  Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
  Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
   
   
  mysql&gt; <b>GRANT ALL PRIVILEGES ON bugs.* TO 'bugs'@'localhost' IDENTIFIED BY 'sockmonkey';</b>
  mysql&gt; '''GRANT ALL PRIVILEGES ON bugs.* TO 'bugs'@'localhost' IDENTIFIED BY 'sockmonkey';'''
  Query OK, 0 rows affected (0.03 sec)
  Query OK, 0 rows affected (0.03 sec)
   
   
  mysql&gt; <b>quit</b>
  mysql&gt; '''quit'''
   
   
  Bye
  Bye
Line 126: Line 126:
  C:\mysql\bin&gt;
  C:\mysql\bin&gt;


If you are running MySQL 4.1, you may encounter the <b>Client does not support authentication protocol requested by server</b> error message. To fix this, once the user has been created you will have to reset the password using OLD_PASSWORD:
If you are running MySQL 4.1, you may encounter the '''Client does not support authentication protocol requested by server''' error message. To fix this, once the user has been created you will have to reset the password using OLD_PASSWORD:  


  C:\mysql\bin&gt;<b>mysql --user=root -p mysql</b>
  C:\mysql\bin&gt;'''mysql --user=root -p mysql'''
  Enter password: <b>********</b>
  Enter password: '''********'''
   
   
  Welcome to the MySQL monitor.  Commands end with ; or \g.
  Welcome to the MySQL monitor.  Commands end with&nbsp;; or \g.
  Your MySQL connection id is 15 to server version: 4.1.11-nt
  Your MySQL connection id is 15 to server version: 4.1.11-nt
   
   
  Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
  Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
   
   
  mysql&gt; <b>set password for 'bugs'@'localhost' = OLD_PASSWORD('sockmonkey');</b>
  mysql&gt; '''set password for 'bugs'@'localhost' = OLD_PASSWORD('sockmonkey');'''
  Query OK, 0 rows affected (0.00 sec)
  Query OK, 0 rows affected (0.00 sec)
   
   
  mysql&gt; <b>quit</b>
  mysql&gt; '''quit'''
   
   
  Bye
  Bye
Line 145: Line 145:
  C:\mysql\bin&gt;
  C:\mysql\bin&gt;


===ActiveState Perl===
=== ActiveState Perl ===


====Download ActiveState Perl 5.8.1 or Higher====
==== Download ActiveState Perl 5.8.1 or Higher ====


Download the ActiveState Perl 5.8.1 or Higher MSI from: http://activestate.com/Products/Download/Download.plex?id=ActivePerl (12.5 Meg).
Download the ActiveState Perl 5.8.1 or Higher MSI from: http://activestate.com/Products/Download/Download.plex?id=ActivePerl (12.5 Meg).  


Note that Bugzilla requires ActiveState Perl 5.8.1 as it needs CGI.pm version 2.93 or higher. 5.8.0 ships with CGI.pm version 2.81, 5.8.1 ships with CGI.pm version 3.00.
Note that Bugzilla requires ActiveState Perl 5.8.1 as it needs CGI.pm version 2.93 or higher. 5.8.0 ships with CGI.pm version 2.81, 5.8.1 ships with CGI.pm version 3.00.  


There is [https://bugzilla.mozilla.org/show_bug.cgi?id=281920 a bug in Time::Local 1.10], which is shipped with ActiveState Perl 5.8.6, that will cause warnings to be generated at the top of every buglist. It's a good idea to avoid version 5.8.6 (version 5.8.4 works without issue).
There is [https://bugzilla.mozilla.org/show_bug.cgi?id=281920 a bug in Time::Local 1.10], which is shipped with ActiveState Perl 5.8.6, that will cause warnings to be generated at the top of every buglist. It's a good idea to avoid version 5.8.6 (version 5.8.4 works without issue).  


====Install====
==== Install ====


ActiveState Perl uses a standard Windows Installer. Install, sticking with the defaults, which will install Perl into <b>C:\Perl</b>.
ActiveState Perl uses a standard Windows Installer. Install, sticking with the defaults, which will install Perl into '''C:\Perl'''.  


Note: Installing Perl into a directory that contains a space (eg "C:\Program Files") will break the Template-Toolkit installer.
Note: Installing Perl into a directory that contains a space (eg "C:\Program Files") will break the Template-Toolkit installer.  


Once the install has completed, log out and log in again to pick up the changes to the PATH.
Once the install has completed, log out and log in again to pick up the changes to the PATH.  


====Upgrading Existing Installs====
==== Upgrading Existing Installs ====


If you already have ActiveState Perl installed, now's a good time to ensure you're running the latest version of ActiveState Perl, along with the latest versions of the modules.
If you already have ActiveState Perl installed, now's a good time to ensure you're running the latest version of ActiveState Perl, along with the latest versions of the modules.  


To upgrade ActiveState Perl, follow the directions at: [http://aspn.activestate.com/ASPN/docs/ActivePerl/install.html#upgrade_56 http://aspn.activestate.com/ASPN/docs/ActivePerl/install.html]
To upgrade ActiveState Perl, follow the directions at: [http://aspn.activestate.com/ASPN/docs/ActivePerl/install.html#upgrade_56 http://aspn.activestate.com/ASPN/docs/ActivePerl/install.html]  


To upgrade your modules, simply run <b>ppm upgrade</b>
To upgrade your modules, simply run '''ppm upgrade'''


====Create Temp Directory====
==== Create Temp Directory ====


On Windows, Perl has a hard time of locating the correct directory to write its temporary files (CGI.pm, File::Spec). Basically it has a list of paths hard coded to use, instead of querying Windows for the correct path.
On Windows, Perl has a hard time of locating the correct directory to write its temporary files (CGI.pm, File::Spec). Basically it has a list of paths hard coded to use, instead of querying Windows for the correct path.  


To avoid problems, create the <b>C:\Temp</b> directory (it has to be on drive C) and ensure SYSTEM has write and modify access.
To avoid problems, create the '''C:\Temp''' directory (it has to be on drive C) and ensure SYSTEM has write and modify access.  


==== Install Modules  ====
==== Install Modules  ====


Bugzilla requires a number of perl modules to be installed. They are available in the ActiveState repository and the following additional repositories:<br>Perl 5.8.x:<br>&nbsp;&nbsp;&nbsp;'''http://theoryx5.uwinnipeg.ca/ppms/'''<br>Perl 5.10.x:<br>&nbsp;&nbsp;&nbsp;'''http://cpan.uwinnipeg.ca/PPMPackages/10xx/''' and<br>&nbsp;&nbsp;&nbsp;'''http://trouchelle.com/ppm10/'''<br>
Bugzilla requires a number of perl modules to be installed. They are available in the ActiveState repository and the following additional repositories:<br>Perl 5.8.x:<br>&nbsp;&nbsp;&nbsp;'''http://theoryx5.uwinnipeg.ca/ppms/'''<br>Perl 5.10.x:<br>&nbsp;&nbsp;&nbsp;'''http://cpan.uwinnipeg.ca/PPMPackages/10xx/''' and<br>&nbsp;&nbsp;&nbsp;'''http://trouchelle.com/ppm10/'''<br>  


If you use a proxy server or a firewall you may have trouble running PPM. This is covered in the [http://aspn.activestate.com/ASPN/docs/ActivePerl/faq/ActivePerl-faq2.html#ppm_and_proxies ActivePerl FAQ].  
If you use a proxy server or a firewall you may have trouble running PPM. This is covered in the [http://aspn.activestate.com/ASPN/docs/ActivePerl/faq/ActivePerl-faq2.html#ppm_and_proxies ActivePerl FAQ].  
Line 325: Line 325:
  103 files installed
  103 files installed


===Apache===
=== Apache ===


It is recommended that you run Bugzilla with the Apache web server. If you want to use IIS to run Bugzilla, there are [http://www.bugzilla.org/docs/2.20/html/configuration.html#http-iis configuration instructions] in the Bugzilla documentation.
It is recommended that you run Bugzilla with the Apache web server. If you want to use IIS to run Bugzilla, there are [http://www.bugzilla.org/docs/2.20/html/configuration.html#http-iis configuration instructions] in the Bugzilla documentation.  


====Download Apache 2.x====
==== Download Apache 2.x ====


Download the Apache HTTP Server version 2.x or high from: http://httpd.apache.org/download.cgi (5.8 Meg).
Download the Apache HTTP Server version 2.x or high from: http://httpd.apache.org/download.cgi (5.8 Meg).  


====Install====
==== Install ====


Yet another standard Windows Installer. Just follow the prompts, making sure you Install for All Users. Be aware the Apache will always install itself into an <b>Apache2</b> directory under what ever path you specify. The default install path will be displayed as <b>C:\Program Files\Apache Group</b> which will result in Apache being installed to <b>C:\Program Files\Apache Group\Apache2</b>. This gets me every time.
Yet another standard Windows Installer. Just follow the prompts, making sure you Install for All Users. Be aware the Apache will always install itself into an '''Apache2''' directory under what ever path you specify. The default install path will be displayed as '''C:\Program Files\Apache Group''' which will result in Apache being installed to '''C:\Program Files\Apache Group\Apache2'''. This gets me every time.  


For the remainder of this document I will assume you installed Apache into the default location, <b>C:\Program Files\Apache Group\Apache2</b>.
For the remainder of this document I will assume you installed Apache into the default location, '''C:\Program Files\Apache Group\Apache2'''.  


If you are already running IIS, you must configure apache to run on a port other than 80, however you aren't asked the port to listen on at install time. Choose <b>All Users</b> (which says port 80), and we'll change the port later.
If you are already running IIS, you must configure apache to run on a port other than 80, however you aren't asked the port to listen on at install time. Choose '''All Users''' (which says port 80), and we'll change the port later.  


By default Apache installs itself to run as the SYSTEM account. For security reasons it's better the reconfigure the service to run as an Apache user. Create a user that is a member of <b>no</b> groups, and reconfigure the Apache2 service to run as that account.
By default Apache installs itself to run as the SYSTEM account. For security reasons it's better the reconfigure the service to run as an Apache user. Create a user that is a member of '''no''' groups, and reconfigure the Apache2 service to run as that account.  


====Grant write access for Apache account====
==== Grant write access for Apache account ====


By default Apache will run as the SYSTEM account. This account needs write and modify access to the following directorys, and all their subdirectories. Depending on your version of Windows, this access may already be granted.
By default Apache will run as the SYSTEM account. This account needs write and modify access to the following directorys, and all their subdirectories. Depending on your version of Windows, this access may already be granted.  


*C:\Bugzilla\data
*C:\Bugzilla\data  
*C:\Program Files\Apache Group\Apache2\logs
*C:\Program Files\Apache Group\Apache2\logs  
*C:\Temp
*C:\Temp  
*C:\Windows\Temp
*C:\Windows\Temp


Note that <b>C:\Bugzilla\data</b> is created the first time you run <b>checksetup.pl</b>.
Note that '''C:\Bugzilla\data''' is created the first time you run '''checksetup.pl'''.  


====Configure Port and DocumentRoot====
==== Configure Port and DocumentRoot ====


Edit <b>C:\Program Files\Apache Group\Apache2\conf\httpd.conf</b> with your [http://www.vim.org/ favourite text editor].
Edit '''C:\Program Files\Apache Group\Apache2\conf\httpd.conf''' with your [http://www.vim.org/ favourite text editor].  


To change the port that Apache runs on (listens on, or binds to), edit the <b>Listen</b> option.
To change the port that Apache runs on (listens on, or binds to), edit the '''Listen''' option.  


  #
  #
Line 369: Line 369:
  #
  #
  #Listen 12.34.56.78:80
  #Listen 12.34.56.78:80
  <b>Listen 80</b>
  '''Listen 80'''
   
   
Change the <b>DocumentRoot</b> setting to point to <b>C:\Bugzilla</b>. Note there are two locations in <b>httpd.conf</b> that need to be updated. Note you need to use / instead of \ as a path separator.
 
Change the '''DocumentRoot''' setting to point to '''C:\Bugzilla'''. Note there are two locations in '''httpd.conf''' that need to be updated. Note you need to use / instead of \ as a path separator.  


  #
  #
Line 379: Line 380:
  #
  #
   
   
  <b>DocumentRoot "C:/Bugzilla"</b>
  '''DocumentRoot "C:/Bugzilla"'''
   
   
  #
  #
Line 390: Line 391:
  #
  #
  &lt;Directory /&gt;
  &lt;Directory /&gt;
    Options FollowSymLinks
    Options FollowSymLinks
    AllowOverride None
    AllowOverride None
  &lt;/Directory&gt;
  &lt;/Directory&gt;
   
   
Line 404: Line 405:
  # This should be changed to whatever you set DocumentRoot to.
  # This should be changed to whatever you set DocumentRoot to.
  #
  #
  <b>&lt;Directory "C:/Bugzilla"&gt;</b>
  '''&lt;Directory "C:/Bugzilla"&gt;'''


====Configure CGI====
==== Configure CGI ====


To enable CGI support in Apache, you need to enable the CGI handler, by uncommenting the <b>AddHandler cgi-script .cgi</b> line.
To enable CGI support in Apache, you need to enable the CGI handler, by uncommenting the '''AddHandler cgi-script .cgi''' line.  


  #
  #
Line 418: Line 419:
  # (You will also need to add "ExecCGI" to the "Options" directive.)
  # (You will also need to add "ExecCGI" to the "Options" directive.)
  #
  #
  <b>AddHandler cgi-script .cgi</b>
  '''AddHandler cgi-script .cgi'''


And allow .cgi scripts in the Bugzilla directory by adding the <b>ExecCGI</b> option. We also need to allow Bugzilla's .htaccess file to restrict access to sensitive documents by allowing it to override the defaults. This involves changing <b>AllowOverride None</b> to <b>AllowOverride All</b>.
And allow .cgi scripts in the Bugzilla directory by adding the '''ExecCGI''' option. We also need to allow Bugzilla's .htaccess file to restrict access to sensitive documents by allowing it to override the defaults. This involves changing '''AllowOverride None''' to '''AllowOverride All'''.  


Apache also needs to know to use Perl to execute .cgi files, via the <b>ScriptInterpreterSource</b> directive.
Apache also needs to know to use Perl to execute .cgi files, via the '''ScriptInterpreterSource''' directive.  


  #
  #
Line 441: Line 442:
  # for more information.
  # for more information.
  #
  #
  <b>   Options Indexes FollowSymLinks ExecCGI</b>
  '''   Options Indexes FollowSymLinks ExecCGI'''
   
   
  #
  #
Line 448: Line 449:
  #  Options FileInfo AuthConfig Limit
  #  Options FileInfo AuthConfig Limit
  #
  #
  <b>   AllowOverride All</b>
  '''   AllowOverride All'''
   
   
  #
  #
  # Controls who can get stuff from this server.
  # Controls who can get stuff from this server.
  #
  #
    Order allow,deny
    Order allow,deny
    Allow from all
    Allow from all
   
   
  <b>#
  '''#
  # Tell Apache to use Perl to execute .cgi
  # Tell Apache to use Perl to execute .cgi
  #
  #
     ScriptInterpreterSource Registry-Strict</b>
     ScriptInterpreterSource Registry-Strict'''
   
   
  &lt;/Directory&gt;
  &lt;/Directory&gt;


You also should add <b>index.cgi</b> to the <b>DirectoryIndex</b> list.
You also should add '''index.cgi''' to the '''DirectoryIndex''' list.  


  #
  #
Line 473: Line 474:
  # same purpose, but it is much slower.
  # same purpose, but it is much slower.
  #
  #
  <b>DirectoryIndex index.html index.html.var index.cgi</b>
  '''DirectoryIndex index.html index.html.var index.cgi'''


In order for <b>ScriptInterpreterSource Registry-Strict</b> to work, you also need to add an entry to the Registry so Apache will use Perl to execute .cgi files.
In order for '''ScriptInterpreterSource Registry-Strict''' to work, you also need to add an entry to the Registry so Apache will use Perl to execute .cgi files.  


Create a key <b>HKEY_CLASSES_ROOT\.cgi\Shell\ExecCGI\Command</b> with the default value of the full path of perl.exe with a -T parameter. For example <b>C:\Perl\bin\perl.exe -T</b>
Create a key '''HKEY_CLASSES_ROOT\.cgi\Shell\ExecCGI\Command''' with the default value of the full path of perl.exe with a -T parameter. For example '''C:\Perl\bin\perl.exe -T'''


[[Image:Bugzilla-Regedit.png|100px|Regedit]]
[[Image:Bugzilla-Regedit.png|100px|Regedit]]  


====Disable Logging====
==== Disable Logging ====


Unless you want to keep statistics on how many hits your Bugzilla install is getting, it's a good idea to disable logging by commenting out the <b>CustomLog</b> directive.
Unless you want to keep statistics on how many hits your Bugzilla install is getting, it's a good idea to disable logging by commenting out the '''CustomLog''' directive.  


  #
  #
Line 492: Line 493:
  # logged therein and *not* in this file.
  # logged therein and *not* in this file.
  #
  #
  <b>#CustomLog logs/access.log common</b>
  '''#CustomLog logs/access.log common'''


====Restart Apache====
==== Restart Apache ====


Finally, restart Apache to get it pick up the changes.
Finally, restart Apache to get it pick up the changes.  


  C:\&gt;<b>net stop apache2</b>
  C:\&gt;'''net stop apache2'''
  The Apache2 service is stopping..
  The Apache2 service is stopping..
  The Apache2 service was stopped successfully.
  The Apache2 service was stopped successfully.
   
   
  C:\&gt;<b>net start apache2</b>
  C:\&gt;'''net start apache2'''
  The Apache2 service is starting.
  The Apache2 service is starting.
  The Apache2 service was started successfully.
  The Apache2 service was started successfully.
Line 508: Line 509:
  C:\&gt;
  C:\&gt;


===Extras===
=== Extras ===


While Bugzilla 2.20 has built in support for SMTP servers, it doesn't (yet) support SMTP authentication or debugging of SMTP errors.
While Bugzilla 2.20 has built in support for SMTP servers, it doesn't (yet) support SMTP authentication or debugging of SMTP errors.  


If you require SMTP authentiation (including POP before SMTP), you can use [http://www.glob.com.au/sendmail/ Glob's sendmail wrapper]. Download and install as per the instructions on that site.
If you require SMTP authentiation (including POP before SMTP), you can use [http://www.glob.com.au/sendmail/ Glob's sendmail wrapper]. Download and install as per the instructions on that site.  


If you enable logging in Sendmail, you need to ensure that your Apache account has write access to <b>C:\usr\lib</b>.
If you enable logging in Sendmail, you need to ensure that your Apache account has write access to '''C:\usr\lib'''.  


===Configure Bugzilla===
=== Configure Bugzilla ===


====checksetup.pl====
==== checksetup.pl ====


Run <b>checksetup.pl</b>. This will check your Perl modules and create <b>localconfig</b>.
Run '''checksetup.pl'''. This will check your Perl modules and create '''localconfig'''.  


  C:\&gt;<b>cd bugzilla</b>
  C:\&gt;'''cd bugzilla'''
   
   
  C:\bugzilla&gt;<b>perl checksetup.pl</b>
  C:\bugzilla&gt;'''perl checksetup.pl'''
   
   
  Checking perl modules ...
  Checking perl modules ...
Line 549: Line 550:
  Most ActivePerl modules are available at Apache's ppm repository.
  Most ActivePerl modules are available at Apache's ppm repository.
  A list of mirrors is available at
  A list of mirrors is available at
    http://www.apache.org/dyn/closer.cgi/perl/win32-bin/ppms/
    http://www.apache.org/dyn/closer.cgi/perl/win32-bin/ppms/
  You can add the repository with the following command:
  You can add the repository with the following command:
    ppm rep add apache http://www.apache.org/dist/perl/win32-bin/ppms/
    ppm rep add apache http://www.apache.org/dist/perl/win32-bin/ppms/
   
   
  Checking user setup ...
  Checking user setup ...
Line 565: Line 566:
  C:\bugzilla&gt;
  C:\bugzilla&gt;


====Edit localconfig====
==== Edit localconfig ====


Open <b>C:\Bugzilla\localconfig</b> in your favourite text editor to configure Bugzilla.
Open '''C:\Bugzilla\localconfig''' in your favourite text editor to configure Bugzilla.  


You have to tell Bugzilla how to access your database. If you used bugs/bugs, you'll only have to set <b>db_pass</b>.
You have to tell Bugzilla how to access your database. If you used bugs/bugs, you'll only have to set '''db_pass'''.  


  #
  #
Line 585: Line 586:
  # need to escape it by preceding it with a \ character. (\') or (\\)
  # need to escape it by preceding it with a \ character. (\') or (\\)
  #
  #
  <b>$db_pass = 'sockmonkey';</b>
  '''$db_pass = 'sockmonkey';'''


====checksetup.pl====
==== checksetup.pl ====


Run <b>checksetup.pl</b> again. This time it will build your database tables and initialise Bugzilla.
Run '''checksetup.pl''' again. This time it will build your database tables and initialise Bugzilla.  


  C:\bugzilla&gt;perl checksetup.pl
  C:\bugzilla&gt;perl checksetup.pl
Line 682: Line 683:
  first time using Bugzilla, or your administrator's privileges might have
  first time using Bugzilla, or your administrator's privileges might have
  accidently been deleted.
  accidently been deleted.
  Enter the e-mail address of the administrator: <b>byron@example.com</b>
  Enter the e-mail address of the administrator: '''byron@example.com'''
  You entered 'byron@example.com'.  Is this correct? [Y/n] <b>y</b>
  You entered 'byron@example.com'.  Is this correct? [Y/n] '''y'''
  Enter the real name of the administrator: <b>Byron Jones</b>
  Enter the real name of the administrator: '''Byron Jones'''
   
   
  Enter a password for the administrator account: <b>beef</b>
  Enter a password for the administrator account: '''beef'''
   
   
  Please retype the password to verify: <b>beef</b>
  Please retype the password to verify: '''beef'''
   
   
  'byron@example.com' is now set up as an administrator account.
  'byron@example.com' is now set up as an administrator account.
Line 694: Line 695:
  C:\bugzilla&gt;
  C:\bugzilla&gt;


====Parameters====
==== MySQL<br> ====
 
open the MySQL console<br>
 
GRANT SELECT, INSERT,<br> UPDATE, DELETE, INDEX, ALTER, CREATE, LOCK TABLES,<br> CREATE TEMPORARY TABLES, DROP, REFERENCES ON bugs.*<br> TO bugs@localhost IDENTIFIED BY 'sockmonkey';<br> FLUSH PRIVILEGES;
 
use bugs<br>ALTER TABLE attachments AVG_ROW_LENGTH=1000000, MAX_ROWS=20000;<br><br>
 
==== Parameters ====


You should now be able to log into to Bugzilla using the account <b>checksetup.pl</b> just created. Point your web browser to >http://localhost/, choose <b>Log in to an existing account</b>, and login.
You should now be able to log into to Bugzilla using the account '''checksetup.pl''' just created. Point your web browser to &gt;http://localhost/, choose '''Log in to an existing account''', and login.  


In the page footer, choose <b>Parameters</b>.
In the page footer, choose '''Parameters'''.  


Put in your email address as the <b>maintainer</b>.
Put in your email address as the '''maintainer'''.  


  maintainer:
  maintainer:
  <b>byron@example.com</b>
  '''byron@example.com'''


Put in the URL to Bugzilla in the <b>urlbase</b> field. This URL will be used in emails, so don't use localhost.
Put in the URL to Bugzilla in the '''urlbase''' field. This URL will be used in emails, so don't use localhost.  


  urlbase:
  urlbase:
  <b>http://bugzilla.example.com/</b>
  '''http://bugzilla.example.com/'''


Download and install WebDot from http://www.graphviz.org/Download_windows.php. Put the complete path to dot.exe in <b>webdotbase</b>.
Download and install WebDot from http://www.graphviz.org/Download_windows.php. Put the complete path to dot.exe in '''webdotbase'''.  


  webdotbase:
  webdotbase:
  <b>C:/Program Files/ATT/Graphviz/bin/dot.exe</b>
  '''C:/Program Files/ATT/Graphviz/bin/dot.exe'''


===Scheduled Tasks===
=== Scheduled Tasks ===


====collectstats.pl====
==== collectstats.pl ====


Add a Scheduled Task to run <b>collectstats.pl</b> nightly.
Add a Scheduled Task to run '''collectstats.pl''' nightly.  


'''Step-by-step for Windows XP:
'''Step-by-step for Windows XP:'''


#Control Panel --&gt; Scheduled Tasks --&gt; Add Scheduled Task
#Control Panel --&gt; Scheduled Tasks --&gt; Add Scheduled Task  
#Next
#Next  
#Browse
#Browse  
#Find <b>perl.exe</b> (normally <b>C:\Perl\bin\perl.exe</b>)
#Find '''perl.exe''' (normally '''C:\Perl\bin\perl.exe''')  
#Give it a name, such as "Bugzilla Collect Stats"
#Give it a name, such as "Bugzilla Collect Stats"  
#Perfom the task daily at your desired time
#Perfom the task daily at your desired time  
#If you're running Apache as a user, not as SYSTEM, enter that user here. Otherwise you're best off creating an account that has write access to the Bugzilla directory and using that
#If you're running Apache as a user, not as SYSTEM, enter that user here. Otherwise you're best off creating an account that has write access to the Bugzilla directory and using that  
#Tick "Open Advanced Properties.." and click Finish
#Tick "Open Advanced Properties.." and click Finish  
#Append the script name to the end of the "Run" field. eg <b>C:\Perl\bin\perl.exe C:\Bugzilla\collectstats.pl</b>
#Append the script name to the end of the "Run" field. eg '''C:\Perl\bin\perl.exe C:\Bugzilla\collectstats.pl'''
#Change "start in" to the Bugzilla directory
#Change "start in" to the Bugzilla directory


====whineatnews.pl====
==== whineatnews.pl ====


Add a Scheduled Task to run <b>whineatnews.pl</b> nightly.
Add a Scheduled Task to run '''whineatnews.pl''' nightly.  


The steps for setting up <b>whineatnews.pl</b> are as per <b>collectstats.pl</b>
The steps for setting up '''whineatnews.pl''' are as per '''collectstats.pl'''


====Backing up Bugzilla====
==== Backing up Bugzilla ====


You may want to backup the entire Bugzilla directory. It's small and you'll get all your settings and customisations on your backup media.
You may want to backup the entire Bugzilla directory. It's small and you'll get all your settings and customisations on your backup media.  


The most important component of Bugzilla to backup is the Bugzilla Database. It contains all your Bugs, Users, Attachments, pretty well everything. Like most databases, backups with MySql are performed by generating a dump of the database and backing up the dump.
The most important component of Bugzilla to backup is the Bugzilla Database. It contains all your Bugs, Users, Attachments, pretty well everything. Like most databases, backups with MySql are performed by generating a dump of the database and backing up the dump.  


Schedule the <b>mysqldump</b> utility to create the dump, and add the resulting file to your backup media. You'll find MySql's <b>mysqldump</b> documentation at http://dev.mysql.com/doc/mysql/en/mysqldump.html.
Schedule the '''mysqldump''' utility to create the dump, and add the resulting file to your backup media. You'll find MySql's '''mysqldump''' documentation at http://dev.mysql.com/doc/mysql/en/mysqldump.html.  


====Congratulations, the Bugzilla installation process is complete!====
==== Congratulations, the Bugzilla installation process is complete! ====

Revision as of 11:55, 24 March 2010

If you want a single-package installer that will install Apache, MySQL, Perl, and Bugzilla all at once and configure them all for you, check out the Windows Install Packages.

If you prefer to do everything yourself, the below instructions explain how to manually configure Bugzilla on Windows.

Installing Bugzilla on Microsoft Windows

Original author: Byron Jones

Bugzilla version 2.18 was the first release that runs unmodified on Windows. This document guides you step by step through the installation process.

Note that there are a few things that don't work very well on Windows, such as mod_perl.

Bugzilla

There's two main methods to getting the Bugzilla source - from CVS or in a tarball. The best method for fetching Bugzilla is to grab it directly from CVS, as this will allow for simple upgrades, even if you have customised Bugzilla.

Read the Release Notes before you do anything.

Installing Bugzilla From CVS

Download the CVSNT client from [1] (2.15 Meg).

Run the installation, you'll only need to install the Command line client and the Password Server (:pserver:) Protocol. Once the install has completed, log out and log in again to pick up the changes to the PATH.

Note: this document assumes you want to install Bugzilla into C:\Bugzilla.

Open the command line, and cd to the parent of the directory you want to install Bugzilla into. As we'll be installing Bugzilla into C:\Bugzilla, the current directory must be C:\.

C:\>set CVSROOT=:pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot

C:\>cvs login

Logging in to :pserver:anonymous@cvs-mirror.mozilla.org:2401:/cvsroot
CVS password: anonymous

C:\>cvs checkout -d Bugzilla -rBugzilla_Stable Bugzilla
cvs checkout: cwd=C:\ ,current=C:\
cvs checkout: Updating Bugzilla
U Bugzilla/.cvsignore
U Bugzilla/Bugzilla.pm
...
U Bugzilla/template/en/default/whine/multipart-mime.txt.tmpl
U Bugzilla/template/en/default/whine/schedule.html.tmpl
cvs checkout: Updating Bugzilla/template/en/extension
U Bugzilla/template/en/extension/filterexceptions.pl
cvs checkout: Updating Bugzilla/template/en/extension/hook

C:\>

Upgrading From CVS

If you've already installed an earlier version of Bugzilla from CVS or from a TarBall, updating is easy. Even if you've made customisations, CVS is smart enough to merge. If CVS needs help merging, it displays a C in the first column of its report. You need to resolve such conflicts manually.

C:\Bugzilla>cvs update -R -d -rBugzilla_Stable
cvs update: Updating .
P editusers.cgi
cvs update: Updating Bugzilla
P Bugzilla/Bug.pm
P Bugzilla/BugMail.pm
P Bugzilla/Chart.pm
P Bugzilla/Flag.pm
P Bugzilla/User.pm
P Bugzilla/Util.pm
cvs update: Updating Bugzilla/Auth
U Bugzilla/Auth/CGI.pm
cvs update: Updating Bugzilla/Template
cvs update: Updating Bugzilla/Template/Plugin
...
cvs update: Updating template/en/default/search
cvs update: Updating template/en/default/whine
cvs update: Updating template/en/extension

C:\Bugzilla>

Installing Bugzilla From the TarBall

Download Bugzilla from [2] (2.4 Meg).

Bugzilla ships as a Tarball, which has the extension .tar.gz. Any decent Windows archive tool should be able to extract tarballs.

Extract the archive to the directory of your choice. For the remainder of this document I will assume that you have extracted Bugzilla into C:\Bugzilla.

Upgrading From TarBall

If you installed Bugzilla from the TarBall, the simplest way to upgrade is to follow the CVS Upgrading instructions.

MySQL

Download MySQL

Download the MySQL "Windows Essentials" installer from http://dev.mysql.com/downloads/mysql/4.1.html (14.1 Meg).

MySQL 5.x is now stable enough and can be used.

Install

MySQL has a standard Windows installer. It's ok to select a Typical MySQL install (the default). For the remainder of this document I will assume you have installed MySQL into C:\mysql.

Goto mysql\bin\my.ini

and edit

max_allowed_packet to 4M 
unter there add
ft_min_word_len = 2

Create Bugs Database User

Use the mysql command line utility to create a MySQL account for Bugzilla.

Note in the following example 'sockmonkey' is my password for the bugs account:

C:\mysql\bin>mysql --user=root -p mysql

Enter password: ********
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 15 to server version: 4.0.20a-debug

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> GRANT ALL PRIVILEGES ON bugs.* TO 'bugs'@'localhost' IDENTIFIED BY 'sockmonkey';
Query OK, 0 rows affected (0.03 sec)

mysql> quit

Bye

C:\mysql\bin>

If you are running MySQL 4.1, you may encounter the Client does not support authentication protocol requested by server error message. To fix this, once the user has been created you will have to reset the password using OLD_PASSWORD:

C:\mysql\bin>mysql --user=root -p mysql
Enter password: ********

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 15 to server version: 4.1.11-nt

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> set password for 'bugs'@'localhost' = OLD_PASSWORD('sockmonkey');
Query OK, 0 rows affected (0.00 sec)

mysql> quit

Bye

C:\mysql\bin>

ActiveState Perl

Download ActiveState Perl 5.8.1 or Higher

Download the ActiveState Perl 5.8.1 or Higher MSI from: http://activestate.com/Products/Download/Download.plex?id=ActivePerl (12.5 Meg).

Note that Bugzilla requires ActiveState Perl 5.8.1 as it needs CGI.pm version 2.93 or higher. 5.8.0 ships with CGI.pm version 2.81, 5.8.1 ships with CGI.pm version 3.00.

There is a bug in Time::Local 1.10, which is shipped with ActiveState Perl 5.8.6, that will cause warnings to be generated at the top of every buglist. It's a good idea to avoid version 5.8.6 (version 5.8.4 works without issue).

Install

ActiveState Perl uses a standard Windows Installer. Install, sticking with the defaults, which will install Perl into C:\Perl.

Note: Installing Perl into a directory that contains a space (eg "C:\Program Files") will break the Template-Toolkit installer.

Once the install has completed, log out and log in again to pick up the changes to the PATH.

Upgrading Existing Installs

If you already have ActiveState Perl installed, now's a good time to ensure you're running the latest version of ActiveState Perl, along with the latest versions of the modules.

To upgrade ActiveState Perl, follow the directions at: http://aspn.activestate.com/ASPN/docs/ActivePerl/install.html

To upgrade your modules, simply run ppm upgrade

Create Temp Directory

On Windows, Perl has a hard time of locating the correct directory to write its temporary files (CGI.pm, File::Spec). Basically it has a list of paths hard coded to use, instead of querying Windows for the correct path.

To avoid problems, create the C:\Temp directory (it has to be on drive C) and ensure SYSTEM has write and modify access.

Install Modules

Bugzilla requires a number of perl modules to be installed. They are available in the ActiveState repository and the following additional repositories:
Perl 5.8.x:
   http://theoryx5.uwinnipeg.ca/ppms/
Perl 5.10.x:
   http://cpan.uwinnipeg.ca/PPMPackages/10xx/ and
   http://trouchelle.com/ppm10/

If you use a proxy server or a firewall you may have trouble running PPM. This is covered in the ActivePerl FAQ.

The Net::LDAP module is only required if you want to use Active Directory for authentication.

The following are the commands and ouput for a 5.10.x perl module installation:

C:\>ppm version
ppm 4.06 (ActivePerl 1006)
Copyright (C) 2009 ActiveState Software Inc. All rights reserved.

C:\>ppm repo add UWinnipeg http://cpan.uwinnipeg.ca/PPMPackages/10xx/
Downloading ActiveState Package Repository packlist...done
Updating ActiveState Package Repository database...done
Downloading UWinnipeg packlist...done
Updating UWinnipeg database...done
Repo 2 added.

C:\>ppm repo add Trouchelle http://trouchelle.com/ppm10/
Downloading Trouchelle packlist...done
Updating Trouchelle database...done
Repo 3 added.

C:\>ppm repo list
+---------------------------------------------+
¦ id ¦ pkgs  ¦ name                           ¦
+----+-------+--------------------------------¦
¦ 1  ¦ 11417 ¦ ActiveState Package Repository ¦
¦ 2  ¦ 291   ¦ UWinnipeg                      ¦
¦ 3  ¦ 11737 ¦ Trouchelle                     ¦
+---------------------------------------------+
(3 enabled repositories)

C:\>ppm upgrade
Syncing site PPM database with .packlists...done
Archive-Tar 1.54 (have 1.52-r1)
Attribute-Handlers 0.87 (have 0.86)
AutoLoader 5.70 (have 5.69)
Bit-Vector 7.1 (have 6.9)
Class-Accessor 0.34 (have 0.33)
Class-ISA 0.36 (have 0.33)
Compress-Raw-Bzip2 2.021 (have 2.020)
Compress-Raw-Zlib 2.021 (have 2.020)
DBD-ODBC 1.23 (have 1.22)
DBI 1.609 (have 1.607)
Date-Calc 5.8 (have 5.6)
Encode 2.37 (have 2.35)
ExtUtils-CBuilder 0.260301 (have 0.2603)
ExtUtils-Manifest 1.57 (have 1.56)
ExtUtils-ParseXS 2.21 (have 2.2002)
File-Path 2.08 (have 2.07_03)
File-Which 1.09 (have 1.07)
IO-Compress 2.021 (have 2.020)
IPC-Cmd 0.50 (have 0.46)
Log-Message-Simple 0.06 (have 0.04)
Math-BigRat 0.24 (have 0.22)
Module-CoreList 2.20 (have 2.17)
Module-Loaded 0.06 (have 0.02)
Object-Accessor 0.36 (have 0.34)
Safe 2.19 (have 2.17)
Test-Simple 0.94 (have 0.92)
Text-CSV_XS 0.68 (have 0.67)
Text-Reform 1.20 (have 1.11)
constant 1.19 (have 1.18)
parent 0.223 (have 0.221)
version 0.7702 (have 0.7701)

C:\>ppm install AppConfig
Downloading AppConfig-1.66...done
Unpacking AppConfig-1.66...done
Generating HTML for AppConfig-1.66...done
Updating files in site area...done
14 files installed

C:\>ppm install TimeDate
Downloading TimeDate-1.19...done
Unpacking TimeDate-1.19...done
Generating HTML for TimeDate-1.19...done
Updating files in site area...done
41 files installed

C:\>ppm install DBI
No missing packages to install

C:\>ppm install DBD-mysql
Downloading DBD-mysql-4.011...done
Unpacking DBD-mysql-4.011...done
Generating HTML for DBD-mysql-4.011...done
Updating files in site area...done
12 files installed

C:\>ppm install Template-Toolkit
Downloading Template-Toolkit-2.22...done
Unpacking Template-Toolkit-2.22...done
Generating HTML for Template-Toolkit-2.22...done
Updating files in site area...done
140 files installed

C:\>ppm install MailTools
Downloading MailTools-2.04...done
Downloading Test-Pod-1.40...done
Unpacking MailTools-2.04...done
Unpacking Test-Pod-1.40...done
Generating HTML for MailTools-2.04...done
Generating HTML for Test-Pod-1.40...done
Updating files in site area...done
43 files installed

C:\>ppm install GD
No missing packages to install

C:\>ppm install Chart
Downloading Chart-2.4.1...done
Unpacking Chart-2.4.1...done
Generating HTML for Chart-2.4.1...done
Updating files in site area...done
16 files installed

C:\>ppm install GDGraph
Downloading GDGraph-1.44...done
Unpacking GDGraph-1.44...done
Generating HTML for GDGraph-1.44...done
Updating files in site area...done
21 files installed

C:\>ppm install PatchReader
Downloading PatchReader-0.9.5...done
Unpacking PatchReader-0.9.5...done
Generating HTML for PatchReader-0.9.5...done
Updating files in site area...done
12 files installed

C:\>ppm install Net-LDAP-Express
Downloading Net-LDAP-Express-0.11...done
Downloading perl-ldap-0.39...done
Downloading Convert-ASN1-0.22...done
Unpacking Net-LDAP-Express-0.11...done
Unpacking perl-ldap-0.39...done
Unpacking Convert-ASN1-0.22...done
Generating HTML for Net-LDAP-Express-0.11...done
Generating HTML for perl-ldap-0.39...done
Generating HTML for Convert-ASN1-0.22...done
Updating files in site area...done
103 files installed

Apache

It is recommended that you run Bugzilla with the Apache web server. If you want to use IIS to run Bugzilla, there are configuration instructions in the Bugzilla documentation.

Download Apache 2.x

Download the Apache HTTP Server version 2.x or high from: http://httpd.apache.org/download.cgi (5.8 Meg).

Install

Yet another standard Windows Installer. Just follow the prompts, making sure you Install for All Users. Be aware the Apache will always install itself into an Apache2 directory under what ever path you specify. The default install path will be displayed as C:\Program Files\Apache Group which will result in Apache being installed to C:\Program Files\Apache Group\Apache2. This gets me every time.

For the remainder of this document I will assume you installed Apache into the default location, C:\Program Files\Apache Group\Apache2.

If you are already running IIS, you must configure apache to run on a port other than 80, however you aren't asked the port to listen on at install time. Choose All Users (which says port 80), and we'll change the port later.

By default Apache installs itself to run as the SYSTEM account. For security reasons it's better the reconfigure the service to run as an Apache user. Create a user that is a member of no groups, and reconfigure the Apache2 service to run as that account.

Grant write access for Apache account

By default Apache will run as the SYSTEM account. This account needs write and modify access to the following directorys, and all their subdirectories. Depending on your version of Windows, this access may already be granted.

  • C:\Bugzilla\data
  • C:\Program Files\Apache Group\Apache2\logs
  • C:\Temp
  • C:\Windows\Temp

Note that C:\Bugzilla\data is created the first time you run checksetup.pl.

Configure Port and DocumentRoot

Edit C:\Program Files\Apache Group\Apache2\conf\httpd.conf with your favourite text editor.

To change the port that Apache runs on (listens on, or binds to), edit the Listen option.

#
# Listen: Allows you to bind Apache to specific IP addresses and/or
# ports, instead of the default. See also the <VirtualHost>
# directive.
#
# Change this to Listen on specific IP addresses as shown below to 
# prevent Apache from glomming onto all bound IP addresses (0.0.0.0)
#
#Listen 12.34.56.78:80
Listen 80

Change the DocumentRoot setting to point to C:\Bugzilla. Note there are two locations in httpd.conf that need to be updated. Note you need to use / instead of \ as a path separator.

#
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#

DocumentRoot "C:/Bugzilla"

#
# Each directory to which Apache has access can be configured with respect
# to which services and features are allowed and/or disabled in that
# directory (and its subdirectories). 
#
# First, we configure the "default" to be a very restrictive set of 
# features.  
#
<Directory />
   Options FollowSymLinks
   AllowOverride None
</Directory>

#
# Note that from this point forward you must specifically allow
# particular features to be enabled - so if something's not working as
# you might expect, make sure that you have specifically enabled it
# below.
#

#
# This should be changed to whatever you set DocumentRoot to.
#
<Directory "C:/Bugzilla">

Configure CGI

To enable CGI support in Apache, you need to enable the CGI handler, by uncommenting the AddHandler cgi-script .cgi line.

#
# AddHandler allows you to map certain file extensions to "handlers":
# actions unrelated to filetype. These can be either built into the server
# or added with the Action directive (see below)
#
# To use CGI scripts outside of ScriptAliased directories:
# (You will also need to add "ExecCGI" to the "Options" directive.)
#
AddHandler cgi-script .cgi

And allow .cgi scripts in the Bugzilla directory by adding the ExecCGI option. We also need to allow Bugzilla's .htaccess file to restrict access to sensitive documents by allowing it to override the defaults. This involves changing AllowOverride None to AllowOverride All.

Apache also needs to know to use Perl to execute .cgi files, via the ScriptInterpreterSource directive.

#
# This should be changed to whatever you set DocumentRoot to.
#
<Directory "C:/Bugzilla">

#
# Possible values for the Options directive are "None", "All",
# or any combination of:
#   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you.
#
# The Options directive is both complicated and important.  Please see
# http://httpd.apache.org/docs-2.0/mod/core.html#options
# for more information.
#
    Options Indexes FollowSymLinks ExecCGI

#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
#   Options FileInfo AuthConfig Limit
#
    AllowOverride All

#
# Controls who can get stuff from this server.
#
   Order allow,deny
   Allow from all

#
# Tell Apache to use Perl to execute .cgi
#
    ScriptInterpreterSource Registry-Strict

</Directory>

You also should add index.cgi to the DirectoryIndex list.

#
# DirectoryIndex: sets the file that Apache will serve if a directory
# is requested.
#
# The index.html.var file (a type-map) is used to deliver content-
# negotiated documents.  The MultiViews Option can be used for the 
# same purpose, but it is much slower.
#
DirectoryIndex index.html index.html.var index.cgi

In order for ScriptInterpreterSource Registry-Strict to work, you also need to add an entry to the Registry so Apache will use Perl to execute .cgi files.

Create a key HKEY_CLASSES_ROOT\.cgi\Shell\ExecCGI\Command with the default value of the full path of perl.exe with a -T parameter. For example C:\Perl\bin\perl.exe -T

Regedit

Disable Logging

Unless you want to keep statistics on how many hits your Bugzilla install is getting, it's a good idea to disable logging by commenting out the CustomLog directive.

#
# The location and format of the access logfile (Common Logfile Format).
# If you do not define any access logfiles within a <VirtualHost>
# container, they will be logged here.  Contrariwise, if you *do*
# define per-<VirtualHost> access logfiles, transactions will be
# logged therein and *not* in this file.
#
#CustomLog logs/access.log common

Restart Apache

Finally, restart Apache to get it pick up the changes.

C:\>net stop apache2
The Apache2 service is stopping..
The Apache2 service was stopped successfully.

C:\>net start apache2
The Apache2 service is starting.
The Apache2 service was started successfully.

C:\>

Extras

While Bugzilla 2.20 has built in support for SMTP servers, it doesn't (yet) support SMTP authentication or debugging of SMTP errors.

If you require SMTP authentiation (including POP before SMTP), you can use Glob's sendmail wrapper. Download and install as per the instructions on that site.

If you enable logging in Sendmail, you need to ensure that your Apache account has write access to C:\usr\lib.

Configure Bugzilla

checksetup.pl

Run checksetup.pl. This will check your Perl modules and create localconfig.

C:\>cd bugzilla

C:\bugzilla>perl checksetup.pl

Checking perl modules ...
Checking for       AppConfig (v1.52)   ok: found v1.55
Checking for             CGI (v2.93)   ok: found v3.10
Checking for    Data::Dumper (any)     ok: found v2.121_04
Checking for    Date::Format (v2.21)   ok: found v2.22
Checking for             DBI (v1.38)   ok: found v1.48
Checking for      File::Spec (v0.84)   ok: found v3.05
Checking for      File::Temp (any)     ok: found v0.16
Checking for        Template (v2.08)   ok: found v2.13
Checking for      Text::Wrap (v2001.0131) ok: found v2001.09293
Checking for    Mail::Mailer (v1.65)   ok: found v1.67
Checking for        Storable (any)     ok: found v2.13

The following Perl modules are optional:
Checking for              GD (v1.20)   ok: found v2.16
Checking for     Chart::Base (v1.0)    ok: found v2.3
Checking for     XML::Parser (any)     ok: found v2.34
Checking for       GD::Graph (any)     ok: found v1.43
Checking for GD::Text::Align (any)     ok: found v1.18
Checking for     PatchReader (v0.9.4)  ok: found v0.9.5

Most ActivePerl modules are available at Apache's ppm repository.
A list of mirrors is available at
   http://www.apache.org/dyn/closer.cgi/perl/win32-bin/ppms/
You can add the repository with the following command:
   ppm rep add apache http://www.apache.org/dist/perl/win32-bin/ppms/

Checking user setup ...

This version of Bugzilla contains some variables that you may want
to change and adapt to your local settings. Please edit the file
'./localconfig' and rerun checksetup.pl

The following variables are new to localconfig since you last ran
checksetup.pl:   index_html cvsbin interdiffbin diffpath create_htaccess
webservergroup db_driver db_host db_pass db_sock db_check

C:\bugzilla>

Edit localconfig

Open C:\Bugzilla\localconfig in your favourite text editor to configure Bugzilla.

You have to tell Bugzilla how to access your database. If you used bugs/bugs, you'll only have to set db_pass.

#
# How to access the SQL database:
#
$db_host = "localhost";         # where is the database?
$db_port = 3306;                # which port to use
$db_name = "bugs";              # name of the MySQL database
$db_user = "bugs";              # user to attach to the MySQL database

#
# Enter your database password here. It's normally advisable to specify
# a password for your bugzilla database user.
# If you use apostrophe (') or a backslash (\) in your password, you'll
# need to escape it by preceding it with a \ character. (\') or (\\)
#
$db_pass = 'sockmonkey';

checksetup.pl

Run checksetup.pl again. This time it will build your database tables and initialise Bugzilla.

C:\bugzilla>perl checksetup.pl

Checking perl modules ...
Checking for       AppConfig (v1.52)   ok: found v1.55
Checking for             CGI (v2.93)   ok: found v3.10
Checking for    Data::Dumper (any)     ok: found v2.121_04
Checking for    Date::Format (v2.21)   ok: found v2.22
Checking for             DBI (v1.38)   ok: found v1.48
Checking for      File::Spec (v0.84)   ok: found v3.05
Checking for      File::Temp (any)     ok: found v0.16
Checking for        Template (v2.08)   ok: found v2.13
Checking for      Text::Wrap (v2001.0131) ok: found v2001.09293
Checking for    Mail::Mailer (v1.65)   ok: found v1.67
Checking for        Storable (any)     ok: found v2.13

The following Perl modules are optional:
Checking for              GD (v1.20)   ok: found v2.16
Checking for     Chart::Base (v1.0)    ok: found v2.3
Checking for     XML::Parser (any)     ok: found v2.34
Checking for       GD::Graph (any)     ok: found v1.43
Checking for GD::Text::Align (any)     ok: found v1.18
Checking for     PatchReader (v0.9.4)  ok: found v0.9.5

Most ActivePerl modules are available at Apache's ppm repository.
A list of mirrors is available at
    http://www.apache.org/dyn/closer.cgi/perl/win32-bin/ppms/
You can add the repository with the following command:
    ppm rep add apache http://www.apache.org/dist/perl/win32-bin/ppms/

Checking user setup ...
Creating data directory (./data) ...
Creating graphs directory...
Creating .htaccess...
Creating Bugzilla/.htaccess...
Creating ./data/.htaccess...
Creating ./template/.htaccess...
Creating ./data/webdot/.htaccess...
Precompiling templates ...
Checking for    MySQL Server (v3.23.41) ok: found v4.0.20a-debug

Creating table user_group_map ...
Creating table series_data ...
Creating table longdescs ...
Creating table dependencies ...
Creating table components ...
Creating table keywords ...
Creating table cc ...
Creating table duplicates ...
Creating table groups ...
Creating table flagtypes ...
Creating table profiles ...
Creating table products ...
Creating table bugs_activity ...
Creating table series_categories ...
Creating table keyworddefs ...
Creating table fielddefs ...
Creating table group_control_map ...
Creating table profiles_activity ...
Creating table group_group_map ...
Creating table user_series_map ...
Creating table bugs ...
Creating table series ...
Creating table versions ...
Creating table flagexclusions ...
Creating table logincookies ...
Creating table watch ...
Creating table bug_group_map ...
Creating table votes ...
Creating table attachments ...
Creating table flags ...
Creating table milestones ...
Creating table tokens ...
Creating table flaginclusions ...
Creating table quips ...
Creating table namedqueries ...
Creating initial dummy product 'TestProduct' ...
Populating duplicates table...
Creating duplicates directory...
Migrating old chart data into database ...
Adding group tweakparams ...
Adding group editusers ...
Adding group creategroups ...
Adding group editcomponents ...
Adding group editkeywords ...
Adding group admin ...
Adding group editbugs ...
Adding group canconfirm ...

Looks like we don't have an administrator set up yet.  Either this is your
first time using Bugzilla, or your administrator's privileges might have
accidently been deleted.
Enter the e-mail address of the administrator: byron@example.com
You entered 'byron@example.com'.  Is this correct? [Y/n] y
Enter the real name of the administrator: Byron Jones

Enter a password for the administrator account: beef

Please retype the password to verify: beef

'byron@example.com' is now set up as an administrator account.

C:\bugzilla>

MySQL

open the MySQL console

GRANT SELECT, INSERT,
UPDATE, DELETE, INDEX, ALTER, CREATE, LOCK TABLES,
CREATE TEMPORARY TABLES, DROP, REFERENCES ON bugs.*
TO bugs@localhost IDENTIFIED BY 'sockmonkey';
FLUSH PRIVILEGES;

use bugs
ALTER TABLE attachments AVG_ROW_LENGTH=1000000, MAX_ROWS=20000;

Parameters

You should now be able to log into to Bugzilla using the account checksetup.pl just created. Point your web browser to >http://localhost/, choose Log in to an existing account, and login.

In the page footer, choose Parameters.

Put in your email address as the maintainer.

maintainer:
byron@example.com

Put in the URL to Bugzilla in the urlbase field. This URL will be used in emails, so don't use localhost.

urlbase:
http://bugzilla.example.com/

Download and install WebDot from http://www.graphviz.org/Download_windows.php. Put the complete path to dot.exe in webdotbase.

webdotbase:
C:/Program Files/ATT/Graphviz/bin/dot.exe

Scheduled Tasks

collectstats.pl

Add a Scheduled Task to run collectstats.pl nightly.

Step-by-step for Windows XP:

  1. Control Panel --> Scheduled Tasks --> Add Scheduled Task
  2. Next
  3. Browse
  4. Find perl.exe (normally C:\Perl\bin\perl.exe)
  5. Give it a name, such as "Bugzilla Collect Stats"
  6. Perfom the task daily at your desired time
  7. If you're running Apache as a user, not as SYSTEM, enter that user here. Otherwise you're best off creating an account that has write access to the Bugzilla directory and using that
  8. Tick "Open Advanced Properties.." and click Finish
  9. Append the script name to the end of the "Run" field. eg C:\Perl\bin\perl.exe C:\Bugzilla\collectstats.pl
  10. Change "start in" to the Bugzilla directory

whineatnews.pl

Add a Scheduled Task to run whineatnews.pl nightly.

The steps for setting up whineatnews.pl are as per collectstats.pl

Backing up Bugzilla

You may want to backup the entire Bugzilla directory. It's small and you'll get all your settings and customisations on your backup media.

The most important component of Bugzilla to backup is the Bugzilla Database. It contains all your Bugs, Users, Attachments, pretty well everything. Like most databases, backups with MySql are performed by generating a dump of the database and backing up the dump.

Schedule the mysqldump utility to create the dump, and add the resulting file to your backup media. You'll find MySql's mysqldump documentation at http://dev.mysql.com/doc/mysql/en/mysqldump.html.

Congratulations, the Bugzilla installation process is complete!