Apache on Windows
*****************

Bugzilla supports all versions of Apache 2.2.x and 2.4.x.


Installing
==========

Download the Apache HTTP Server as a ".zip" archive either from the
Apache Lounge website or from the Apache Haus website.

Unzip the archive into "C:\Apache24". If you move it elsewhere, then
you must edit several variables in "httpd.conf", including
"ServerRoot" and "DocumentRoot".

You must now edit the Apache configuration file
"C:\Apache24\conf\httpd.conf" and do the following steps:

1. Uncomment "LoadModule cgi_module modules/mod_cgi.so" at the
   beginning of the file to enable CGI support.

2. Uncomment "AddHandler cgi-script .cgi" to register ".cgi" files
   as CGI scripts. For this handler to work, you must create a key in
   the Windows registry named
   "HKEY_CLASSES_ROOT\.cgi\Shell\ExecCGI\Command" with the default
   value pointing to the full path of "perl.exe" with a "-T"
   parameter. For example "C:\Perl\bin\perl.exe -T" if you use
   ActivePerl, or "C:\Strawberry\perl\bin\perl.exe -T" if you use
   Strawberry Perl.

3. Add an Alias and a Directory for Bugzilla:

   Alias "/bugzilla/" "C:/bugzilla/"
   <Directory "C:/bugzilla">
       ScriptInterpreterSource Registry-Strict
       Options +ExecCGI +FollowSymLinks
       DirectoryIndex index.cgi index.html
       AllowOverride All
       Require all granted
   </Directory>

Warning: The above block takes a simple approach to access control
  and is correct for Apache 2.4. For Apache 2.2, replace "Require all
  granted" with "Allow from all". If you have other access control
  requirements, you may need to make further modifications.

You now save your changes and start Apache as a service. From the
Windows command line ("cmd.exe"):

**C:\Apache24\bin>httpd.exe -k install**

That's it! Bugzilla is now accessible from http://localhost/bugzilla.


Apache Account Permissions
==========================

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 new Windows user that is a member of **no**
groups, and reconfigure the Apache2 service to run as that account.

Whichever account you are running Apache as, SYSTEM or otherwise,
needs write and modify access to the following directories and all
their subdirectories. Depending on your version of Windows, this
access may already be granted.

* "C:\Bugzilla\data"

* "C:\Apache24\logs"

* "C:\Windows\Temp"

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


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 in the Apache config file.

If you don't disable logging, you should at least disable logging of
"query strings". When external systems interact with Bugzilla via
webservices (REST/XMLRPC/JSONRPC) they include the user's credentials
as part of the URL (in the query string). Therefore, to avoid storing
passwords in clear text on the server we recommend configuring Apache
to not include the query string in its log files.

1. Find the following line in the Apache config file, which defines
   the logging format for "vhost_combined":

      LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined

2. Replace "%r" with "%m %U".

(If you have configured Apache differently, a different log line might
apply. Adjust these instructions accordingly.)


Using Apache with SSL
=====================

If you want to enable SSL with Apache, i.e. access Bugzilla from
https://localhost/bugzilla, you need to do some extra steps:

1. Edit "C:\Apache24\conf\httpd.conf" and uncomment these lines:

   * "LoadModule ssl_module modules/mod_ssl.so"

   * "LoadModule socache_shmcb_module modules/mod_socache_shmcb.so"

   * "Include conf/extra/httpd-ssl.conf"

2. Create your ".key" and ".crt" files using "openssl.exe" provided
   with Apache:

   **C:\Apache24\bin>openssl.exe req -x509 -nodes -days 730 -newkey
   rsa:2048 -keyout server.key -out server.crt**

   "openssl.exe" will ask you a few questions about your location and
   your company name to populate fields of the certificate.

3. Once the key and the certificate for your server are generated,
   move them into "C:\Apache24\conf" so that their location matches
   the "SSLCertificateFile" and "SSLCertificateKeyFile" variables
   defined in "C:\Apache24\conf\extra\httpd-ssl.conf" (which you don't
   need to edit).

Note: This process leads to a self-signed certificate which will
  generate browser warnings on first visit. If your Bugzilla has a
  public DNS name, you can get a cert from a CA which will not have
  this problem.


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

Finally, restart Apache to pick up the changes, either from the
Services console or from the command line:

**C:\Apache24\bin>httpd.exe -k restart**

======================================================================

This documentation undoubtedly has bugs; if you find some, please file
them here.
