mirror of
https://github.com/apache/httpd.git
synced 2025-05-17 15:21:13 +03:00
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@87071 13f79535-47bb-0310-9956-ffa450edef68
512 lines
21 KiB
HTML
512 lines
21 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
|
|
<HTML>
|
|
<HEAD>
|
|
<TITLE>Using Apache with Microsoft Windows</TITLE>
|
|
</HEAD>
|
|
|
|
<!-- Background white, links blue (unvisited), navy (visited), red (active) -->
|
|
<BODY
|
|
BGCOLOR="#FFFFFF"
|
|
TEXT="#000000"
|
|
LINK="#0000FF"
|
|
VLINK="#000080"
|
|
ALINK="#FF0000"
|
|
>
|
|
<!--#include virtual="header.html" -->
|
|
|
|
<H1 ALIGN="CENTER">Using Apache With Microsoft Windows</H1>
|
|
|
|
<P>This document explains how to install, configure and run
|
|
Apache 2.0 under Microsoft Windows. If you find any bugs, or wish
|
|
to contribute in other ways, please use our
|
|
<A HREF="http://www.apache.org/bugs/">bug reporting page.</A></P>
|
|
|
|
<P>Most of this document assumes that you are installing Windows from a
|
|
binary distribution. If you want to compile Apache yourself (possibly
|
|
to help with development, or to track down bugs), see
|
|
<A HREF="win_compiling.html">Compiling Apache for Microsoft Windows</A>.
|
|
|
|
<HR>
|
|
|
|
<UL>
|
|
<LI><A HREF="#req">Requirements</A>
|
|
<LI><A HREF="#down">Downloading Apache for Windows</A>
|
|
<LI><A HREF="#inst">Installing Apache for Windows (binary install)</A>
|
|
<LI><A HREF="#run">Running Apache for Windows</A>
|
|
<LI><A HREF="#use">Using Apache for Windows</A>
|
|
<LI><A HREF="#cmdline">Running Apache for Windows from the Command Line</A>
|
|
<LI><A HREF="#service">Running Apache for Windows as a Service</A>
|
|
<LI><A HREF="#signal">Signalling Console Apache when running</A>
|
|
<LI><A HREF="#signalsrv">Signalling Service Apache when running</A>
|
|
<LI><A HREF="win_compiling.html">Compiling Apache for Microsoft Windows</A>
|
|
</UL>
|
|
|
|
<HR>
|
|
|
|
<H2><A NAME="req">Requirements</A></H2>
|
|
|
|
<P>Apache 2.0 is designed to run on Windows NT 4.0 and Windows 2000. The
|
|
binary installer will only work with the x86 family of processors, such
|
|
as Intel's. Apache may also run on Windows 95 and 98, but these have not
|
|
been tested, and are never recommended for production servers. In all
|
|
cases TCP/IP networking must be installed.</P>
|
|
|
|
<P>If running on Windows 95, the "Winsock2" upgrade MUST BE INSTALLED.
|
|
"Winsock2" for Windows 95 is available
|
|
<A HREF="http://www.microsoft.com/windows95/downloads/">here</A>.</P>
|
|
|
|
<P>If running on NT 4.0, installing Service Pack 3 or 6 is recommended, as
|
|
Service Pack 4 created known issues with TCPIP/WinSock integrety that
|
|
were resolved in later Service Packs.</P>
|
|
|
|
<P><STRONG>Warning: as of alpha 2.0a4 Windows 95 (and possibly 98) do not
|
|
run at all. Please don't let that stop you, however, from contributing
|
|
the fixes required to make that platform run successfully.</STRONG></P>
|
|
|
|
<H2><A NAME="down">Downloading Apache for Windows</A></H2>
|
|
|
|
<P>Information on the latest version of Apache can be found on the
|
|
Apache web server at <A HREF="http://www.apache.org/httpd">
|
|
http://www.apache.org/httpd</A>. This will list the current release,
|
|
any more recent alpha or beta-test releases, together with details of
|
|
mirror web and anonymous ftp sites.</P>
|
|
|
|
<P>You should download the version of Apache for Windows with the
|
|
<CODE>.exe</CODE> extension. This is a single file containing Apache,
|
|
ready to install and run. There may also be a <CODE>.zip</CODE> file
|
|
containing the source code, to compile Apache yourself. (If there is
|
|
no <SAMP>.zip</SAMP> file, the source will be available in a
|
|
<SAMP>.tar.gz</SAMP> file but this will contain Unix line endings. You
|
|
will have to convert at least the <SAMP>.mak</SAMP> and
|
|
<SAMP>.dsp</SAMP> files to have DOS line endings before MSVC will
|
|
understand them).</P>
|
|
|
|
<P><STRONG>Notice: alpha versions are not distributed in binary form (as
|
|
an .exe ready-to-run version). You must use the Microsoft Visual C++
|
|
compiler version 5 or 6 (bundled in VisualStudio 97 and 98). Read
|
|
<A HREF="win_compiling.html">Compiling Apache for Microsoft Windows</A>
|
|
for compilation/installation instructions.</STRONG></P>
|
|
|
|
<H2><A NAME="inst">Installing Apache for Windows</A></H2>
|
|
|
|
<P>Run the Apache <SAMP>.exe</SAMP> file you downloaded above. This will
|
|
ask for:</P>
|
|
|
|
<UL>
|
|
|
|
<LI>the directory to install Apache into (the default is
|
|
<CODE>\Program Files\Apache Group\Apache</CODE> although you can
|
|
change this to any other directory)
|
|
|
|
<LI>the start menu name (default is "Apache Web Server")
|
|
|
|
<LI>the installation type. The "Typical" option installs
|
|
everything except the source code. The "Minimum" option does not
|
|
install the manuals or source code. Choose the "Custom" install if
|
|
you want to install the source code.
|
|
|
|
</UL>
|
|
|
|
<P>During the installation, Apache will configure the files in the
|
|
<SAMP>conf</SAMP> directory for your chosen installation
|
|
directory. However if any of the files in this directory already exist
|
|
they will <STRONG>not</STRONG> be overwritten. Instead the new copy of
|
|
the corresponding file will be left with the extension
|
|
<SAMP>.default</SAMP>. So, for example, if
|
|
<SAMP>conf\httpd.conf</SAMP> already exists it will not be altered,
|
|
but the version which would have been installed will be left in
|
|
<SAMP>conf\httpd.conf.default</SAMP>. After the installation has
|
|
finished you should manually check to see what in new in the
|
|
<SAMP>.default</SAMP> file, and if necessary update your existing
|
|
configuration files.</P>
|
|
|
|
<P>Also, if you already have a file called <SAMP>htdocs\index.html</SAMP>
|
|
then it will not be overwritten (no <SAMP>index.html.default</SAMP>
|
|
file will be installed either). This should mean it a safe to install
|
|
Apache over an existing installation (but you will have to stop the
|
|
existing server running before doing the installation, then start the
|
|
new one after the installation is finished).</P>
|
|
|
|
<P>After installing Apache, you should edit the configuration files in
|
|
the <SAMP>conf</SAMP> directory as required. These files will be
|
|
configured during the install ready for Apache to be run from the
|
|
directory where it was installed, with the documents served from the
|
|
subdirectory <SAMP>htdocs</SAMP>. There are lots of other options
|
|
which should be set before you start really using Apache. However to
|
|
get started quickly the files should work as installed.</P>
|
|
|
|
<H2><A NAME="run">Running Apache for Windows</A></H2>
|
|
|
|
There are two ways you can run Apache:
|
|
|
|
<UL>
|
|
<LI>As a <A HREF="#service">"service"</A> (available on Windows NT/2000 only).
|
|
This is the best option if you want Apache to automatically start when you
|
|
machine boots, and to keep Apache running when you log-off.
|
|
<LI>From a <A HREF="#cmdline">console window</A>. This is the only option
|
|
available for Windows 95/98 users, and MUST be used by Windows NT/2000
|
|
users before to attempting to run as a service.
|
|
</UL>
|
|
|
|
<P>To run Apache from a console window, select the "Start Apache as
|
|
console app" option from the Start menu (in Apache 1.3.4 and earlier,
|
|
this option was called "Apache Server"). This will open a console
|
|
window and start Apache running inside it. The window will remain
|
|
active until you stop Apache. To stop Apache running, either select
|
|
the "Shutdown Apache console app" icon option from the Start menu
|
|
(this is not available in Apache 1.3.4 or earlier), or see <A
|
|
HREF="#signal">Signalling Console Apache when Running</A> for how
|
|
to control Apache from the command line.</P>
|
|
|
|
<P>If the Apache console window closes immediately (or unexpectedly),
|
|
run the "Command Prompt" from the Start Menu - Programs list. Change
|
|
to the folder to which you installed Apache, type the command apache,
|
|
and read the error message. Then change to the logs folder, and review
|
|
the error.log file for configuration mistakes. If you accepted the
|
|
defaults when you installed Apache, the commands would be:</P>
|
|
|
|
<PRE>
|
|
c:
|
|
cd "\program files\apache group\apache"
|
|
apache
|
|
<SAMP>Wait for Apache to exit, or press Ctrl+C</SAMP>
|
|
cd logs
|
|
more <error.log
|
|
</PRE>
|
|
|
|
<P><STRONG>Complete the steps above before you proceed to attempt to
|
|
start Apache as a Window NT/2000 service!</STRONG></P>
|
|
|
|
<P>To start Apache as a service, you first need to install it as a
|
|
service. Multiple Apache services can be installed, each with a
|
|
different name and configuration. To install the default Apache
|
|
service named "Apache", run the "Install Apache as Service (NT only)"
|
|
option from the Start menu. Once this is done you can start the "Apache"
|
|
service by opening the Services window (in the Control Panel), selecting Apache,
|
|
then clicking on Start. Apache will now be running in the background. You
|
|
can later stop Apache by clicking on Stop. As an alternative to using
|
|
the Services window, you can start and stop the "Apache" service from the control
|
|
line with:</P>
|
|
|
|
<PRE>
|
|
NET START APACHE
|
|
NET STOP APACHE
|
|
</PRE>
|
|
|
|
<P>See <A HREF="#signalsrv">Signalling Service Apache when Running</A>
|
|
for more information on installing and controlling Apache services.</P>
|
|
|
|
<P><STRONG>Apache, unlike many other Windows NT/2000 services, logs any
|
|
errors to it's own error.log file in the logs folder within the
|
|
Apache server root folder. You will <EM>not</EM> find Apache error
|
|
details in the Windows NT Event Log.</STRONG></P>
|
|
|
|
<P>After starting Apache running (either in a console window or as a
|
|
service) if will be listening to port 80 (unless you changed the
|
|
<SAMP>Port</SAMP>, <SAMP>Listen</SAMP> or <SAMP>BindAddress</SAMP>
|
|
directives in the configuration files). To connect to the server and
|
|
access the default page, launch a browser and enter this URL:</P>
|
|
|
|
<PRE>
|
|
http://localhost/
|
|
</PRE>
|
|
|
|
<P>This should respond with a welcome page, and a link to the Apache
|
|
manual. If nothing happens or you get an error, look in the
|
|
<SAMP>error_log</SAMP> file in the <SAMP>logs</SAMP> directory.
|
|
If your host isn't connected to the net, you may have to use
|
|
this URL:</P>
|
|
|
|
<PRE>
|
|
http://127.0.0.1/
|
|
</PRE>
|
|
|
|
<P>Once your basic installation is working, you should configure it
|
|
properly by editing the files in the <SAMP>conf</SAMP> directory.
|
|
Again, if you change the configuration of the Windows NT/2000
|
|
service for Apache, first attempt to start it from the command
|
|
line to assure that the service starts with no errors.</P>
|
|
|
|
<P>Because Apache <EMP>CANNOT</EMP> share the same port with another
|
|
TCPIP application, you may need to stop or uninstall certain
|
|
services first. These include (but are not limited to) other
|
|
web servers, and firewall products such as BlackIce. If you can
|
|
only start Apache with these services disabled, reconfigure either
|
|
Apache or the other product so that they do not listen on the
|
|
same TCPIP ports.</P>
|
|
|
|
<H2><A NAME="use">Configuring Apache for Windows</A></H2>
|
|
|
|
<P>Apache is configured by files in the <SAMP>conf</SAMP>
|
|
directory. These are the same as files used to configure the Unix
|
|
version, but there are a few different directives for Apache on
|
|
Windows. See the <A HREF="./">Apache documentation</A> for all the
|
|
available directives.</P>
|
|
|
|
<P>The main differences in Apache for Windows are:</P>
|
|
|
|
<UL>
|
|
<LI><P>Because Apache for Windows is multithreaded, it does not use a
|
|
separate process for each request, as Apache does with
|
|
Unix. Instead there are usually only two Apache processes running:
|
|
a parent process, and a child which handles the requests. Within
|
|
the child each request is handled by a separate thread.
|
|
<P>
|
|
|
|
So the "process"-management directives are different:
|
|
<P><A
|
|
HREF="../mod/mpm_common.html#maxrequestsperchild">MaxRequestsPerChild</A>
|
|
- Like the Unix directive, this controls how many requests a
|
|
process will serve before exiting. However, unlike Unix, a
|
|
process serves all the requests at once, not just one, so if
|
|
this is set, it is recommended that a very high number is
|
|
used. The recommended default, <CODE>MaxRequestsPerChild
|
|
0</CODE>, does not cause the process to ever exit.
|
|
<STRONG>
|
|
Warning: The server configuration file is reread when the
|
|
new child process is started. If you have modified httpd.conf,
|
|
the new child may not start or you may receive unexpected results.
|
|
</STRONG>
|
|
<P><A HREF="../mod/mpm_common.html#threadsperchild">ThreadsPerChild</A> -
|
|
This directive is new, and tells the server how many threads it
|
|
should use. This is the maximum number of connections the server
|
|
can handle at once; be sure and set this number high enough for
|
|
your site if you get a lot of hits. The recommended default is
|
|
<CODE>ThreadsPerChild 50</CODE>.</P>
|
|
<LI><P>The directives that accept filenames as arguments now must use
|
|
Windows filenames instead of Unix ones. However, because Apache
|
|
uses Unix-style names internally, you must use forward slashes, not
|
|
backslashes. Drive letters can be used; if omitted, the drive with
|
|
the Apache executable will be assumed.</P>
|
|
<LI><P>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
|
|
<CODE>\Apache\modules</CODE> directory. To activate these, or other
|
|
modules, the new <A HREF="../mod/mod_so.html#loadmodule">LoadModule</A>
|
|
directive must be used. For example, to active the status module,
|
|
use the following (in addition to the status-activating directives
|
|
in <CODE>access.conf</CODE>):</P>
|
|
<PRE>
|
|
LoadModule status_module modules/ApacheModuleStatus.dll
|
|
</PRE>
|
|
<P>Information on <A HREF="../mod/mod_so.html#creating">creating loadable
|
|
modules</A> is also available.</P>
|
|
<LI><P>Apache can also load ISAPI Extensions (<EM>i.e.</EM>, Internet Server
|
|
Applications), such as those used by Microsoft's IIS, and other
|
|
Windows servers. <A HREF="../mod/mod_isapi.html">More information
|
|
is available.</A> Note that Apache <EMP>CANNOT</EMP> load ISAPI
|
|
Filters.
|
|
</UL>
|
|
|
|
<H2><A NAME="service">Running Apache for Windows as a Service</A></H2>
|
|
|
|
<P><STRONG>Note: The -n option to specify a service name is only available
|
|
with Apache 1.3.7 and later. Earlier versions of Apache only support
|
|
the default service name 'Apache'.</STRONG></P>
|
|
|
|
<P>You can install Apache as a Windows NT service as follows:
|
|
|
|
<PRE>
|
|
apache -k install -n "service name"
|
|
</PRE>
|
|
|
|
To install a service to use a particular configuration, specify the
|
|
configuration file when the service is installed:
|
|
|
|
<PRE>
|
|
apache -k install -n "service name" -f "\my server\conf\my.conf"
|
|
</PRE>
|
|
|
|
To remove an Apache service, use
|
|
|
|
<PRE>
|
|
apache -k uninstall -n "service name"
|
|
</PRE>
|
|
|
|
The default "service name", if one is not specified, is "Apache".</P>
|
|
|
|
<P>Once a service is installed, you can use the <SAMP>-n</SAMP> option, in
|
|
conjunction with other options, to refer to a service's configuration
|
|
file. For example:</P>
|
|
|
|
<P>To test a service's configuration file:</P>
|
|
|
|
<PRE>
|
|
apache -n "service name" -t
|
|
</PRE>
|
|
|
|
<P>To start a console Apache using a service's configuration file:</P>
|
|
|
|
<PRE>
|
|
apache -n "service name"
|
|
</PRE>
|
|
|
|
<P><STRONG>Important Note on service dependencies:</STRONG></P>
|
|
|
|
<P>Prior to Apache release 1.3.13, the dependencies required to
|
|
successfully start an installed service were not configured.
|
|
After installing a service using earlier versions of Apache,
|
|
you must follow these steps:
|
|
|
|
<PRE>
|
|
Run regedt32
|
|
Select <U>W</U>indow - "HKEY_LOCAL_MACHINE on Local Machine" from the menu
|
|
Double-click to open the SYSTEM, then the CurrentControlSet keys
|
|
Scroll down and click on the Apache servicename
|
|
Select <U>E</U>dit - Add <U>V</U>alue... from the menu
|
|
Fill in the Add Value dialog with
|
|
<U>V</U>alue Name: DependOnGroup
|
|
<U>D</U>ata Type: REG_MULTI_SZ
|
|
and click OK
|
|
Leave the Multi-String Editor dialog empty and click OK
|
|
Select <U>E</U>dit - Add <U>V</U>alue... from the menu
|
|
Fill in the Add Value dialog with
|
|
<U>V</U>alue Name: DependOnService
|
|
<U>D</U>ata Type: REG_MULTI_SZ
|
|
and click OK
|
|
Type the following list (one per line) in the Multi-String Editor dialog
|
|
Tcpip
|
|
Afd
|
|
and click OK
|
|
</PRE>
|
|
|
|
<P>If you are using COM or DCOM components from a third party module, ISAPI,
|
|
or other add-in scripting technologies such as ActiveState Perl, you may
|
|
also need to add the entry Rpcss to the DependOnService list. To avoid
|
|
exposing the TCP port 135 when it is unnecessary, Apache does not create
|
|
that entry upon installation. Follow the directions above to find or
|
|
create the DependOnService value, double click that value if it already
|
|
exists, and add the Rpcss entry to the list.</P>
|
|
|
|
<H2><A NAME="cmdline">Running Apache for Windows from the Command Line</A></H2>
|
|
|
|
<P>The Start menu icons and the NT Service manager can provide a simple
|
|
interface for administering Apache. But in some cases it is easier to
|
|
work from the command line.</P>
|
|
|
|
<P>When working with Apache it is important to know how it will find the
|
|
configuration files. You can specify a configuration file on the command line
|
|
in two ways:
|
|
|
|
<UL>
|
|
<LI>-f specifies a path to a particular configuration file
|
|
</UL>
|
|
<PRE> apache -f "c:\my server\conf\my.conf"</PRE>
|
|
<PRE> apache -f test\test.conf</PRE>
|
|
<UL>
|
|
<LI>-n specifies the configuration file of an installed Apache service (Apache 1.3.7 and later)
|
|
</UL>
|
|
<PRE> apache -n "service name"</PRE>
|
|
|
|
In these cases, the proper ServerRoot should be set in the configuration file.</P>
|
|
|
|
<P>If you don't specify a configuration file name with -f or -n, Apache will
|
|
use the file name compiled into the server, usually "conf/httpd.conf". Invoking
|
|
Apache with the -V switch will display this value labeled as SERVER_CONFIG_FILE.
|
|
Apache will then determine its ServerRoot by trying the following, in this order:</P>
|
|
|
|
<UL>
|
|
<LI>A ServerRoot directive via a -C switch.
|
|
<LI>The -d switch on the command line.
|
|
<LI>Current working directory
|
|
<LI>A registry entry, created if you did a binary install.
|
|
<LI>The server root compiled into the server.
|
|
</UL>
|
|
|
|
<P>The server root compiled into the server is usually "/apache".
|
|
invoking apache with the -V switch will display this value
|
|
labeled as HTTPD_ROOT.</P>
|
|
|
|
<P>When invoked from the start menu, Apache is usually passed no arguments,
|
|
so using the registry entry is the preferred technique for console Apache.</P>
|
|
|
|
<P>During a binary installation, a version-specific registry key is created
|
|
in the Windows registry:
|
|
|
|
<PRE>
|
|
HKEY_LOCAL_MACHINE\Software\Apache Group\Apache\1.3.7
|
|
|
|
HKEY_LOCAL_MACHINE\Software\Apache Group\Apache\2.0a3
|
|
</PRE>
|
|
|
|
<P>This key is compiled into the server and can enable you to test
|
|
new versions without affecting the current version. Of course
|
|
you must take care not to install the new version on top of the
|
|
old version in the file system.</P>
|
|
|
|
<P>If you did not do a binary install then Apache will in some
|
|
scenarios complain that about the missing registry key. This
|
|
warning can be ignored if it otherwise was able to find its
|
|
configuration files.</P>
|
|
|
|
<P>The value of this key is the "ServerRoot" directory, containing the
|
|
<SAMP>conf</SAMP> directory. When Apache starts it will read the
|
|
<SAMP>httpd.conf</SAMP> file from this directory. If this file
|
|
contains a <SAMP>ServerRoot</SAMP> directive which is different from
|
|
the directory obtained from the registry key above, Apache will forget
|
|
the registry key and use the directory from the configuration file.
|
|
If you copy the Apache directory or configuration files to a new
|
|
location it is vital that you update the <SAMP>ServerRoot</SAMP>
|
|
directory in the <SAMP>httpd.conf</SAMP> file to the new location.
|
|
|
|
<P>To run Apache from the command line as a console application, use the
|
|
following command:
|
|
|
|
<PRE>
|
|
apache
|
|
</PRE>
|
|
|
|
Apache will execute, and will remain running until it is stopped by pressing
|
|
control-C.</P>
|
|
|
|
<H2><A NAME="signalsrv">Signalling Service Apache when running</A></H2>
|
|
|
|
<P>On Windows NT, multiple instances of Apache can be run as services.
|
|
Signal an Apache service to start, restart, or shutdown as follows:</P>
|
|
|
|
<PRE>
|
|
apache -n "service name" -k start
|
|
apache -n "service name" -k restart
|
|
apache -n "service name" -k shutdown
|
|
</PRE>
|
|
|
|
<P>In addition, you can use the native NT NET command to
|
|
start and stop Apache services as follows:</P>
|
|
|
|
<PRE>
|
|
NET START "service name"
|
|
NET STOP "service name"
|
|
</PRE>
|
|
|
|
<H2><A NAME="signal">Signalling Console Apache when running</A></H2>
|
|
|
|
<P>On Windows 95, Apache runs as a console application. You can tell a
|
|
running Apache to stop by opening another console window and typing:</P>
|
|
|
|
<PRE>
|
|
apache -k shutdown
|
|
</PRE>
|
|
|
|
<P>This should be used instead of pressing Control-C in the running
|
|
Apache console window, because it lets Apache end any current
|
|
transactions and cleanup gracefully.</P>
|
|
|
|
<P>You can also tell Apache to restart. This makes it re-read the
|
|
configuration files. Any transactions in progress are allowed to
|
|
complete without interruption. To restart Apache, run</P>
|
|
|
|
<PRE>
|
|
apache -k restart
|
|
</PRE>
|
|
|
|
<P>Note for people familiar with the Unix version of Apache: these
|
|
commands provide a Windows equivalent to <CODE>kill -TERM
|
|
<EM>pid</EM></CODE> and <CODE>kill -USR1 <EM>pid</EM></CODE>. The command
|
|
line option used, <CODE>-k</CODE>, was chosen as a reminder of the
|
|
"kill" command used on Unix.</P>
|
|
|
|
<!--#include virtual="footer.html" -->
|
|
</BODY>
|
|
</HTML>
|
|
|