Apache HTTP Server Version 2.4

This document explains how to install, configure and run Apache 2.4 under Microsoft Windows. If you have questions after reviewing the documentation (and any event and error logs), you should consult the peer-supported users' mailing list.
This document assumes that you are installing a binary distribution of Apache. If you want to compile Apache yourself (possibly to help with development or tracking down bugs), see Compiling Apache for Microsoft Windows.

Operating System Requirements
Downloading Apache for Windows
Customizing Apache for Windows
Running Apache as a Service
Running Apache as a Console Application
Testing the Installation
Configuring Access to Network Resources
Windows TuningThe primary Windows platform for running Apache 2.4 is Windows 2000 or later. Always obtain and install the current service pack to avoid operating system bugs.
The Apache HTTP Server Project itself does not provide binary releases of software, only source code. Individual committers may provide binary packages as a convenience, but it is not a release deliverable.
If you cannot compile the Apache HTTP Server yourself, you can obtain a binary package from numerous binary distributions available on the Internet.
Popular options for deploying Apache httpd, and, optionally, PHP and MySQL, on Microsoft Windows, include:
Apache is configured by the files in the conf
subdirectory. These are the same files used to configure the Unix
version, but there are a few different directives for Apache on
Windows. See the directive index
for all the available directives.
The default configuration of the source distribution expects the server
to be installed into \Apache24. This can be customized at compilation time,
but it's important that ultimately the ServerRoot in
apache2.conf match the actual installation root. Binary distributions may
customize either the default installation root or the overall layout of
the initial configuration.
The main differences in Apache for Windows are:
Because Apache for Windows is multithreaded, it does not use a separate process for each request, as Apache can on Unix. Instead there are usually only two Apache processes running: a parent process, and a child which handles the requests. Within the child process each request is handled by a separate thread.
The process management directives are also different:
MaxConnectionsPerChild:
Like the Unix directive, this controls how many connections a single
child process will serve before exiting.
However, unlike on Unix, a replacement process is not instantly
available. Use the default MaxConnectionsPerChild 0,
unless instructed to change the behavior to overcome a memory leak
in third party modules or in-process applications.
apache2.conf, the new child may not start or
you may receive unexpected results.ThreadsPerChild:
This directive is new. It tells the server how many threads it
should use. This is the maximum number of connections the server
can handle at once, so be sure to set this number high enough for
your site if you get a lot of hits. The recommended default is
ThreadsPerChild 150, but this must be adjusted to
reflect the greatest anticipated number of simultaneous
connections to accept.
The directives that accept filenames as arguments must use Windows filenames instead of Unix ones. However, because Apache may interpret backslashes as an "escape character" sequence, you should consistently use forward slashes in path names, not backslashes.
While filenames are generally case-insensitive on
Windows, URLs are still treated internally as case-sensitive
before they are mapped to the filesystem. For example, the
<Location>,
Alias, and ProxyPass directives all use
case-sensitive arguments. For this reason, it is particularly
important to use the <Directory> directive when attempting
to limit access to content in the filesystem, since this
directive applies to any content in a directory, regardless of
how it is accessed. If you wish to assure that only lowercase
is used in URLs, you can use something like:
RewriteEngine On
RewriteMap lowercase int:tolower
RewriteCond "%{REQUEST_URI}" "[A-Z]"
RewriteRule "(.*)" "${lowercase:$1}" [R,L]
When running, Apache needs write access only to the logs directory and any configured cache directory tree. Due to the issue of case insensitive and short 8.3 format names, Apache must validate all path names given. This means that each directory which Apache evaluates, from the drive root up to the directory leaf, must have read, list and traverse directory permissions. If Apache2.4 is installed at C:\Program Files, then the root directory, Program Files and Apache2.4 must all be visible to Apache.
Apache for Windows contains the ability to load modules at
runtime, without recompiling the server. If Apache is compiled
normally, it will install a number of optional modules in the
\Apache2.4\modules directory. To activate these or
other modules, the LoadModule
directive must be u