| <!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 1.3 under Microsoft Windows. Please note that at |
| this time, Windows support is entirely experimental, and is |
| recommended only for experienced users. The Apache Group does not |
| guarantee that this software will work as documented, or even at |
| all. If you find any bugs, or wish to contribute in other ways, please |
| use our <A HREF="http://www.apache.org/bug_report.html">bug reporting |
| page.</A></P> |
| |
| <P><STRONG>Warning: Apache on NT has not yet been optimized for performance. |
| Apache still performs best, and is most reliable on Unix platforms. Over |
| time we will improve NT performance. Folks doing comparative reviews |
| of webserver performance are asked to compare against Apache |
| on a Unix platform such as Solaris, FreeBSD, or Linux.</STRONG></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 the section on |
| <A HREF="#comp">Compiling Apache for Windows</A> below. |
| |
| <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="#comp">Compiling Apache for Windows</A> |
| </UL> |
| |
| <HR> |
| |
| <H2><A NAME="req">Requirements</A></H2> |
| |
| Apache 1.3 is designed to run on Windows NT 4.0. The binary installer |
| will only work in Intel processors. Apache may also run on Windows 95 |
| and Windows NT 3.5.1, but these have not been tested. In all cases |
| TCP/IP networking must be installed. |
| |
| <P> |
| |
| If running on Windows 95, using the "Winsock2" upgrade is recommended |
| but may not be necessary. If running on NT 4.0, installing Service Pack 2 |
| is recommended. |
| |
| <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/">http://www.apache.org/</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). |
| |
| <H2><A NAME="inst">Installing Apache for Windows</A></H2> |
| |
| Run the Apache <SAMP>.exe</SAMP> file you downloaded above. This will |
| ask for: |
| |
| <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> |
| |
| 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> |
| |
| <BLOCKQUOTE> |
| <STRONG>Important note for 1.3b6 installs</STRONG>: the above only |
| applies for 1.3b7 and later. In 1.3b6 the installer would overwrite |
| any existing <SAMP>httpd.conf</SAMP>, <SAMP>access.conf</SAMP>, |
| <SAMP>srm.conf</SAMP> or <SAMP>mime.types</SAMP> files in the |
| <SAMP>conf</SAMP>, and will also overwrite your |
| <SAMP>index.html</SAMP> file in the <SAMP>htdocs</SAMP> directory. You |
| should copy these files or directories before installing Apache 1.3b6 |
| or install into a new directory. |
| </BLOCKQUOTE> |
| |
| <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. |
| |
| <H2><A NAME="run">Running Apache for Windows</A></H2> |
| |
| There are two ways you can run Apache: |
| |
| <UL> |
| <LI>As a "service" (available on NT 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 users. |
| </UL> |
| |
| To start Apache as a service, you first need to install it as a |
| service. Run the "Install Apache as Service" option from the Start |
| menu. Once this is done you can start Apache 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 Apache from the control line |
| with |
| |
| <PRE> |
| NET START APACHE |
| NET STOP APACHE |
| </PRE> |
| |
| To run Apache from a console window, select the "Apache Server" option |
| from the Start menu. 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, press Control-C within the console |
| window. |
| |
| <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: |
| |
| <PRE> |
| http://localhost/ |
| </PRE> |
| |
| 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. |
| |
| <P> |
| |
| Once your basic installation is working, you should configure it |
| properly by editing the files in the <SAMP>conf</SAMP> directory. |
| |
| <H2><A NAME="use">Configuring Apache for Windows</A></H2> |
| |
| 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> |
| |
| The main differences in Apache for Windows are: |
| |
| <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/core.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. |
| <P><A HREF="mod/core.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> |
| </UL> |
| |
| <H2><A NAME="cmdline">Running Apache for Windows from the Command Line</A></H2> |
| |
| The Start menu icons and the NT Service manager can provide an simple |
| interafce for administering Apache. But in some cases it is easier to |
| work from the command line. |
| |
| <P> |
| When working with Apache it is important to know how it will find the |
| configuration files. Apache will try one of the following, in this order. |
| |
| <UL> |
| <LI>A ServerRoot directive via a -C switch. |
| <LI>The -f switch on the command line. |
| <LI>The -d switch on the command line. |
| <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> |
| Your current working directory when Apache is started up has no |
| effect on Apache's behavior. |
| |
| <P> |
| Under windows, when invoked from the start menu or the Service Manager Apache is |
| usually passed no arguments. So using the registry entry is the perfered |
| technique. |
| |
| <P> |
| During a binary installation, a registry key will have |
| been installed, for example: |
| <PRE> |
| HKEY_LOCAL_MACHINE\Software\Apache Group\Apache\1.3.1\ServerRoot |
| </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. You can not run two invocations |
| of Apache on Windows simultaneously. |
| |
| <P> |
| If you did not do a binary install then Apache will in some |
| senarios complain that about the missing registry key. This |
| warning can be ignored if it otherwise was able to find it's |
| configuration files. |
| |
| <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 -s |
| </PRE> |
| |
| Apache will execute, and will remain running until it is stopped by pressing |
| control-C. (The -s option is not required by Windows 95, but on Windows NT it |
| prevents Apache waiting to see if Apache is running as a service.) |
| |
| <P> |
| |
| To install Apache as a Windows NT service as follows: |
| |
| <PRE> |
| apache -i |
| </PRE> |
| |
| and to remove the Apache service, use |
| |
| <PRE> |
| apache -u |
| </PRE> |
| |
| |
| <H2><A NAME="comp">Compiling Apache for Windows</A></H2> |
| |
| <P>Compiling Apache requires Microsoft Visual C++ 5.0 to be properly |
| installed. It is easiest to compile with the command-line tools |
| (nmake, <EM>etc.</EM>..). Consult the VC++ manual to determine how to install |
| them.</P> |
| |
| <P>First, unpack the Apache distribution into an appropriate |
| directory. Open a command-line prompt, and change to the |
| <CODE>src</CODE> subdirectory of the Apache distribution.</P> |
| |
| <P>The master Apache makefile instructions are contained in the |
| <CODE>Makefile.nt</CODE> file. To compile Apache, simply use one of |
| the following commands: |
| <UL> |
| <LI><CODE>nmake /f Makefile.nt _apacher</CODE> (release build) |
| <LI><CODE>nmake /f Makefile.nt _apached</CODE> (debug build) |
| </UL> |
| |
| <P>These will both compile Apache. The latter will include debugging |
| information in the resulting files, making it easier to find bugs and |
| track down problems.</P> |
| |
| <P>Apache can also be compiled using VC++'s Visual Studio development |
| environment. Although compiling Apache in this manner is not as |
| simple, it makes it possible to easily modify the Apache source, or |
| to compile Apache if the command-line tools are not installed. |
| Project files (<CODE>.DSP</CODE>) are included for each of the |
| portions of Apache. To build Apache from the these projects files |
| you will need to build the following projects <EM>in this order</EM>: |
| |
| <OL> |
| <LI><CODE>os\win32\ApacheOS.dsp</CODE> |
| <LI><CODE>regex\regex.dsp</CODE> |
| <LI><CODE>ap\ap.dsp</CODE> |
| <LI><CODE>main\gen_uri_delims.dsp</CODE> |
| <LI><CODE>main\gen_test_char.dsp</CODE> |
| <LI><CODE>ApacheCore.dsp</CODE> |
| <LI><CODE>Apache.dsp</CODE> |
| </OL> |
| |
| In addition, the <CODE>src\os\win32</CODE> subdirectory contains |
| project files for the optional modules (see below).</P> |
| |
| <P>Once Apache has been compiled, it needs to be installed in its server |
| root directory. The default is the <CODE>\Apache</CODE> |
| directory, on the current hard drive. </P> |
| |
| <P>To install the files into the <CODE>\Apache</CODE> directory |
| automatically, use one the following nmake commands (see above):</P> |
| <UL> |
| <LI><CODE>nmake /f Makefile.nt installr INSTDIR=<EM>dir</EM></CODE> |
| (for release build) |
| <LI><CODE>nmake /f Makefile.nt installd INSTDIR=<EM>dir</EM></CODE> |
| (for debug build) |
| </UL> |
| |
| The dir argument to INSTDIR gives the installation directory. The can |
| be omitted if Apache is to be installed into <SAMP>\Apache</SAMP>. |
| |
| <P>This will install the following:</P> |
| |
| <UL> |
| <LI><CODE><EM>dir</EM>\Apache.exe</CODE> - Apache executable |
| <LI><CODE><EM>dir</EM>\ApacheCore.dll</CODE> - Main Apache shared library |
| <LI><CODE><EM>dir</EM>\modules\ApacheModule*.dll</CODE> - Optional Apache |
| modules (7 files) |
| <LI><CODE><EM>dir</EM>\conf</CODE> - Empty configuration directory |
| <LI><CODE><EM>dir</EM>\logs</CODE> - Empty logging directory |
| </UL> |
| |
| <P>If you do not have nmake, or wish to install in a different directory, |
| be sure to use a similar naming scheme.</P> |
| |
| <P> |
| Before running the server you must fill out the conf directory. |
| Copy the *.conf-dist-win from the distribution conf directory |
| and rename *.conf. Edit the @@ServerRoot@@ entries to your |
| actual server root (for example "C:\apache"). Copy over |
| the conf/magic and conf/mime.types files as well. |
| |
| <!--#include virtual="footer.html" --> |
| </BODY> |
| </HTML> |