-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-<html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta name="generator" content="HTML Tidy, see www.w3.org" />
-
- <title>Compiling and Installing Apache</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">Compiling and Installing</h1>
+<html><head><META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><!--
+ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+ This file is generated from xml source: DO NOT EDIT
+ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+ --><title>Compiling and Installing - Apache HTTP Server</title><link href="./style/manual.css" type="text/css" rel="stylesheet"></head><body><blockquote><div align="center"><img src="./images/sub.gif" alt="[APACHE DOCUMENTATION]"><h3>Apache HTTP Server Version 2.0</h3></div><h1 align="center">Compiling and Installing</h1>
<p>This document covers compilation and installation of Apache
on Unix and Unix-like systems only. For compiling and
- installation on Windows, see <a
- href="platform/windows.html">Using Apache with Microsoft
- Windows</a>. For other platforms, see the <a
- href="platform/">platform</a> documentation.</p>
+ installation on Windows, see <a href="platform/windows.html">Using Apache with Microsoft
+ Windows</a>. For other platforms, see the <a href="platform/">platform</a> documentation.</p>
<p>Apache 2.0's configuration and installation environment has
changed completely from Apache 1.3. Apache 1.3 used a custom
uses libtool and autoconf to create an environment that looks
like many other Open Source projects.</p>
- <ul>
- <li><a href="#overview">Overview for the impatient</a></li>
-
- <li><a href="#requirements">Requirements</a></li>
-
- <li><a href="#download">Download</a></li>
-
- <li><a href="#extract">Extract</a></li>
-
- <li>
- <a href="#configure">Configuring the source tree</a>
-
- <ul>
- <li><a href="#environment">Environment Variables</a></li>
-
- <li><a href="#output">autoconf Output Options</a></li>
-
- <li><a href="#pathnames">Pathnames</a></li>
-
- <li><a href="#modules">Modules</a></li>
-
- <li><a href="#suexec">Suexec</a></li>
- </ul>
- </li>
-
- <li><a href="#compile">Build</a></li>
-
- <li><a href="#install">Install</a></li>
-
- <li><a href="#customize">Customize</a></li>
-
- <li><a href="#test">Test</a></li>
- </ul>
- <hr />
-
- <h3><a id="overview" name="overview">Overview for the
- impatient</a></h3>
+<ul><li><a href="#overview">Overview for the
+ impatient</a></li><li><a href="#requirements">Requirements</a></li><li><a href="#download">Download</a></li><li><a href="#extract">Extract</a></li><li><a href="#configure">Configuring the source tree</a><ul><li><a href="#environment">Environment Variables</a></li><li><a href="#output">autoconf Output Options</a></li><li><a href="#pathnames">Pathnames</a></li><li><a href="#modules">Modules</a></li><li><a href="#suexec">Suexec</a></li></ul></li><li><a href="#compile">Build</a></li><li><a href="#install">Install</a></li><li><a href="#customize">Customize</a></li><li><a href="#test">Test</a></li></ul><hr><h2><a name="overview">Overview for the
+ impatient</a></h2>
<table>
<tr>
<tr>
<td><a href="#extract">Extract</a></td>
- <td><code>$ gzip -d httpd-2_0_<em>NN</em>.tar.gz<br />
+ <td><code>$ gzip -d httpd-2_0_<em>NN</em>.tar.gz<br>
$ tar xvf httpd-2_0_<em>NN</em>.tar</code> </td>
</tr>
<p>Each section of the compilation and installation process is
described in more detail below, beginning with the requirements
for compiling and installing Apache HTTPD.</p>
-
- <h3><a id="requirements"
- name="requirements">Requirements</a></h3>
+<h2><a name="requirements">Requirements</a></h2>
<p>The following requirements exist for building Apache:</p>
<ul>
- <li>Disk Space<br />
- <br />
+ <li>Disk Space<br>
+ <br>
Make sure you have at least 50 MB of temporary free disk
space available. After installation Apache occupies
approximately 10 MB of disk space. The actual disk space
requirements will vary considerably based on your chosen
- configuration options and any third-party modules.<br />
- <br />
+ configuration options and any third-party modules.<br>
+ <br>
</li>
- <li>ANSI-C Compiler and Build System<br />
- <br />
- Make sure you have an ANSI-C compiler installed. The <a
- href="http://www.gnu.org/software/gcc/gcc.html">GNU C
- compiler (GCC)</a> from the <a
- href="http://www.gnu.org/">Free Software Foundation (FSF)</a>
+ <li>ANSI-C Compiler and Build System<br>
+ <br>
+ Make sure you have an ANSI-C compiler installed. The <a href="http://www.gnu.org/software/gcc/gcc.html">GNU C
+ compiler (GCC)</a> from the <a href="http://www.gnu.org/">Free Software Foundation (FSF)</a>
is recommended (version 2.7.2 is fine). If you don't have GCC
then at least make sure your vendor's compiler is ANSI
compliant. In addition, your <code>PATH</code> must contain
- basic build tools such as <code>make</code>.<br />
- <br />
+ basic build tools such as <code>make</code>.<br>
+ <br>
</li>
- <li>Accurate time keeping<br />
- <br />
+ <li>Accurate time keeping<br>
+ <br>
Elements of the HTTP protocol are expressed as the time of
day. So, it's time to investigate setting some time
synchronization facility on your system. Usually the ntpdate
or xntpd programs are used for this purpose which are based
on the Network Time Protocol (NTP). See the Usenet newsgroup
- <a
- href="news:comp.protocols.time.ntp">comp.protocols.time.ntp</a>
+ <a href="news:comp.protocols.time.ntp">comp.protocols.time.ntp</a>
and the <a href="http://www.eecis.udel.edu/~ntp/">NTP
homepage</a> for more details about NTP software and public
- time servers.<br />
- <br />
+ time servers.<br>
+ <br>
</li>
<li><a href="http://www.perl.org/">Perl 5</a>
- [OPTIONAL]<br />
- <br />
- For some of the support scripts like <a
- href="programs/apxs.html">apxs</a> or <a
- href="programs/dbmmanage.html">dbmmanage</a> (which are
+ [OPTIONAL]<br>
+ <br>
+ For some of the support scripts like <a href="programs/apxs.html">apxs</a> or <a href="programs/dbmmanage.html">dbmmanage</a> (which are
written in Perl) the Perl 5 interpreter is required (versions
5.003 and 5.004 are fine). If no such interpreter is found by
the `configure' script there is no harm. Of course, you still
installed (perhaps a Perl 4 from the vendor and a Perl 5 from
your own), then it is recommended to use the --with-perl
option (see below) to make sure the correct one is selected
- by ./configure.<br />
- <br />
+ by ./configure.<br>
+ <br>
</li>
</ul>
+<h2><a name="download">Download</a></h2>
- <h3><a id="download" name="download">Download</a></h3>
-
- <p>Apache can be downloaded from the <a
- href="http://www.apache.org/dist/httpd/">Apache Software
- Foundation download site</a> or from a <a
- href="http://www.apache.org/dyn/closer.cgi/httpd/">nearby
+ <p>Apache can be downloaded from the <a href="http://www.apache.org/dist/httpd/">Apache Software
+ Foundation download site</a> or from a <a href="http://www.apache.org/dyn/closer.cgi/httpd/">nearby
mirror</a>.</p>
<p>Version numbers that end in <code>alpha</code> indicate
version of the Apache HTTP Server. This can be accomplished by
testing the downloaded tarball against the PGP signature. This,
in turn, is a two step procedure. First, you must obtain the
- <code>KEYS</code> file from the <a
- href="http://www.apache.org/dist/httpd/">Apache distribution
+ <code>KEYS</code> file from the <a href="http://www.apache.org/dist/httpd/">Apache distribution
site</a>. (To assure that the <code>KEYS</code> file itself has
not been modified, it may be a good idea to use a file from a
previous distribution of Apache or import the keys from a
key ring using one of the following commands (depending on your
pgp version):</p>
- <blockquote>
- <code>$ pgp < KEYS</code>
- </blockquote>
- or
+<blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>$ pgp < KEYS</code></td></tr></table></blockquote>
- <blockquote>
- <code>$ gpg --import KEYS</code>
- </blockquote>
+ <p>or </p>
+
+<blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>$ gpg --import KEYS</code></td></tr></table></blockquote>
<p>The next step is to test the tarball against the PGP
- signature, which should always be obtained from the <a
- href="http://www.apache.org/dist/httpd/">main Apache
+ signature, which should always be obtained from the <a href="http://www.apache.org/dist/httpd/">main Apache
website</a>. The signature file has a filename identical to the
source tarball with the addition of <code>.asc</code>. Then you
can check the distribution with one of the following commands
(again, depending on your pgp version):</p>
- <blockquote>
- <code>$ pgp httpd-2_0_<em>NN</em>.tar.gz.asc</code>
- </blockquote>
- or
+<blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>$ pgp httpd-2_0_<em>NN</em>.tar.gz.asc</code></td></tr></table></blockquote>
+
+ <p>or</p>
- <blockquote>
- <code>$ gpg --verify httpd-2_0_<em>NN</em>.tar.gz.asc</code>
- </blockquote>
- You should receive a message like<br />
- <br />
-
+<blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>$ gpg --verify httpd-2_0_<em>NN</em>.tar.gz.asc</code></td></tr></table></blockquote>
+
+ <p>You should receive a message like</p>
- <blockquote>
- <code>Good signature from user "Martin Kraemer
- <martin@apache.org>".</code>
- </blockquote>
+<blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>Good signature from user "Martin Kraemer
+ <martin@apache.org>".</code></td></tr></table></blockquote>
<p>Depending on the trust relationships contained in your key
ring, you may also receive a message saying that the
be verified. This is not a problem if you trust the
authenticity of the <code>KEYS</code> file.</p>
- <h3><a id="extract" name="extract">Extract</a></h3>
+<h2><a name="extract">Extract</a></h2>
<p>Extracting the source from the Apache HTTPD tarball is a
simple matter of uncompressing, and then untarring:</p>
- <blockquote>
- <code>$ gzip -d httpd-2_0_<em>NN</em>.tar.gz<br />
- $ tar xvf httpd-2_0_<em>NN</em>.tar</code>
- </blockquote>
+<blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
+ $ gzip -d httpd-2_0_<em>NN</em>.tar.gz<br>
+ $ tar xvf httpd-2_0_<em>NN</em>.tar
+</code></td></tr></table></blockquote>
<p>This will create a new directory under the current directory
containing the source code for the distribution. You should
<code>cd</code> into that directory before proceeding with
compiling the server.</p>
-
- <h3><a id="configure" name="configure">Configuring the source
- tree</a></h3>
+<h2><a name="configure">Configuring the source tree</a></h2>
<p>The next step is to configure the Apache source tree for
your particular platform and personal requirements. This is
the two additional modules mod_rewrite and mod_speling for
later loading through the DSO mechanism:</p>
- <blockquote>
- <code>$ CC="pgcc" CFLAGS="-O2" \<br />
- ./configure --prefix=/sw/pkg/apache \<br />
- --enable-rewrite=shared \<br />
- --enable-speling=shared</code>
- </blockquote>
+<blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
+ $ CC="pgcc" CFLAGS="-O2" \<br>
+ ./configure --prefix=/sw/pkg/apache \<br>
+ --enable-rewrite=shared \<br>
+ --enable-speling=shared
+</code></td></tr></table></blockquote>
<p>When configure is run it will take several minutes to test
for the availability of features on your system and build
description of most of the arguments and environment
variables.</p>
- <h4><a id="environment" name="environment">Environment
- Variables</a></h4>
+<h3><a name="environment">Environment Variables</a></h3>
<p>The autoconf build process uses several environment
variables to configure the build environment. In general, these
compiler and linker.</dd>
</dl>
- <h4><a id="output" name="output">autoconf Output
- Options</a></h4>
+
+<h3><a name="output">autoconf Output Options</a></h3>
<dl>
<dt><code>--help</code></dt>
process, including the names of all the files examined.</dd>
</dl>
- <h4><a id="pathnames" name="pathnames">Pathnames</a></h4>
+
+<h3><a name="pathnames">Pathnames</a></h3>
<p>There are currently two ways to configure the pathnames
under which Apache will install its files. First, you can
should edit the <code>config.layout</code> file and use the
<code>--enable-layout</code> option.</p>
- <h4><a id="modules" name="modules">Modules</a></h4>
+
+<h3><a name="modules">Modules</a></h3>
<p>Apache is a modular server. Only the most basic
functionality is included in the core server. Extended features
are available in various modules. During the configuration
process, you must select which modules to compile for use with
- your server. You can view a <a
- href="mod/index.html">list of modules</a> included in
- the documentation. Those modules with a <a
- href="mod/module-dict.html#Status">status</a> of "Base" are
+ your server. You can view a <a href="mod/index.html">list of modules</a> included in
+ the documentation. Those modules with a <a href="mod/module-dict.html#Status">status</a> of "Base" are
included by default and must be specifically disabled if you do
not want them. Modules with any other status must be
specifically enabled if you wish to use them.</p>
modules may be <em>dynamically compiled</em>. DSO modules are
stored separately from the Apache binary, and may be included
or excluded from the server using the run-time configuration
- directives provided by <a href="mod/mod_so.html">mod_so</a>.
+ directives provided by <code><a href="./mod/mod_so.html">mod_so</a></code>.
The mod_so is automatically included in the server if any
dynamic modules are included in the compilation. If you would
like to make your server capable of loading DSOs without
<dt><code>--enable-<em>MODULE</em>[=shared]</code></dt>
<dd>Compile and include the module <em>MODULE</em>. The
- identifier <em>MODULE</em> is the <a
- href="mod/module-dict.html#ModuleIdentifier">Module
+ identifier <em>MODULE</em> is the <a href="mod/module-dict.html#ModuleIdentifier">Module
Identifier</a> from the module documentation without the
"_module" string. To compile the module as a DSO, add the
option <code>=shared</code>.</dd>
space-separated list of module identifiers. For example, to
enable mod_dav and mod_info, you can either use</p>
- <blockquote>
- <code>./configure --enable-dav --enable-info</code>
- </blockquote>
+<blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>./configure --enable-dav --enable-info</code></td></tr></table></blockquote>
<p>or, equivalently,</p>
- <blockquote>
- <code>./configure --enable-modules="dav info"</code>
- </blockquote>
+<blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>./configure --enable-modules="dav info"</code></td></tr></table></blockquote>
<p>In addition, the special keywords <code>all</code> or
<code>most</code> can be used to add all or most of the modules
For example, to include all modules as DSOs with the exception
of mod_info, you can use</p>
- <blockquote>
- <code>./configure --enable-mods-shared=all
- --disable-info</code>
- </blockquote>
+<blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>
+ ./configure --enable-mods-shared=all
+ --disable-info
+</code></td></tr></table></blockquote>
<p>In addition to the standard set of modules, Apache 2.0 also
includes a choice of <a href="mpm.html">Multi-Processing
<dd>Choose the mpm <em>NAME</em>.</dd>
</dl>
- <h4><a id="suexec" name="suexec">Suexec</a></h4>
- <p>Apache includes a support program called <a
- href="suexec.html">suexec</a> which can be used to isolate user
+<h3><a name="suexec">Suexec</a></h3>
+
+ <p>Apache includes a support program called <a href="suexec.html">suexec</a> which can be used to isolate user
CGI programs. However, if suexec is improperly configured, it
can cause serious security problems. Therefore, you should
carefully read and consider the <a href="suexec.html">suexec
documentation</a> before implementing this feature.</p>
- <h3><a id="compile" name="compile">Build</a></h3>
+<h2><a name="compile">Build</a></h2>
<p>Now you can build the various parts which form the Apache
package by simply running the command:</p>
- <blockquote>
- <code>$ make</code>
- </blockquote>
+<blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>$ make</code></td></tr></table></blockquote>
<p>Please be patient here, since a base configuration takes
approximately 3 minutes to compile under a Pentium III/Linux
2.2 system, but this will vary widely depending on your
hardware and the number of modules which you have enabled.</p>
-
- <h3><a id="install" name="install">Install</a></h3>
+<h2><a name="install">Install</a></h2>
<p>Now its time to install the package under the configured
installation <em>PREFIX</em> (see <code>--prefix</code> option
above) by running:</p>
- <blockquote>
- <code>$ make install</code>
- </blockquote>
+<blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>$ make install</code></td></tr></table></blockquote>
<p>If you are upgrading, the installation will not overwrite
your configuration files or documents.</p>
-
- <h3><a id="customize" name="customize">Customize</a></h3>
+<h2><a name="customize">Customize</a></h2>
<p>Next, you can customize your Apache HTTP server by editing
the <a href="configuring.html">configuration files</a> under
<em>PREFIX</em>/conf/.</p>
- <blockquote>
- <code>$ vi <em>PREFIX</em>/conf/httpd.conf</code>
- </blockquote>
+<blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>$ vi <em>PREFIX</em>/conf/httpd.conf</code></td></tr></table></blockquote>
- <p>Have a look at the Apache manual under <a
- href="./">docs/manual/</a> or <a
- href="http://httpd.apache.org/docs/">http://httpd.apache.org/docs/</a>
- for a complete reference of available <a
- href="mod/directives.html">configuration directives</a>.</p>
-
- <h3><a id="test" name="test">Test</a></h3>
+ <p>Have a look at the Apache manual under <a href="./">docs/manual/</a> or <a href="http://httpd.apache.org/docs/">http://httpd.apache.org/docs-2.0/</a>
+ for a complete reference of available <a href="mod/directives.html">configuration directives</a>.</p>
+<h2><a name="test">Test</a></h2>
<p>Now you can <a href="invoking.html">start</a> your Apache
HTTP server by immediately running:</p>
- <blockquote>
- <code>$ <em>PREFIX</em>/bin/apachectl start</code>
- </blockquote>
+<blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>$ <em>PREFIX</em>/bin/apachectl start</code></td></tr></table></blockquote>
<p>and then you should be able to request your first document
via URL http://localhost/. The web page you see is located
- under the <a href="mod/core.html#documentroot">DocumentRoot</a>
+ under the <a href="./mod/core.html#documentroot" class="directive"><code class="directive">DocumentRoot</code></a>
which will usually be <code><em>PREFIX</em>/htdocs/</code>.
Then <a href="stopping.html">stop</a> the server again by
running:</p>
- <blockquote>
- <code>$ <em>PREFIX</em>/bin/apachectl stop</code>
- </blockquote>
- <!--#include virtual="footer.html" -->
- </body>
-</html>
-
+<blockquote><table cellpadding="10"><tr><td bgcolor="#eeeeee"><code>$ <em>PREFIX</em>/bin/apachectl stop</code></td></tr></table></blockquote>
+<hr></blockquote><h3 align="center">Apache HTTP Server Version 2.0</h3><a href="./"><img src="./images/index.gif" alt="Index"></a><a href="./"><img src="./images/home.gif" alt="Home"></a></body></html>
\ No newline at end of file
--- /dev/null
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd">
+<?xml-stylesheet type="text/xsl" href="./style/manual.en.xsl"?>
+<manualpage>
+<relativepath href="."/>
+
+ <title>Compiling and Installing</title>
+
+<summary>
+
+ <p>This document covers compilation and installation of Apache
+ on Unix and Unix-like systems only. For compiling and
+ installation on Windows, see <a
+ href="platform/windows.html">Using Apache with Microsoft
+ Windows</a>. For other platforms, see the <a
+ href="platform/">platform</a> documentation.</p>
+
+ <p>Apache 2.0's configuration and installation environment has
+ changed completely from Apache 1.3. Apache 1.3 used a custom
+ set of scripts to achieve easy installation. Apache 2.0 now
+ uses libtool and autoconf to create an environment that looks
+ like many other Open Source projects.</p>
+
+</summary>
+
+<section id="overview"><title>Overview for the
+ impatient</title>
+
+ <table>
+ <tr>
+ <td><a href="#download">Download</a></td>
+
+ <td><code>$ lynx
+ http://www.apache.org/dist/httpd/httpd-2_0_<em>NN</em>.tar.gz</code>
+ </td>
+ </tr>
+
+ <tr>
+ <td><a href="#extract">Extract</a></td>
+
+ <td><code>$ gzip -d httpd-2_0_<em>NN</em>.tar.gz<br />
+ $ tar xvf httpd-2_0_<em>NN</em>.tar</code> </td>
+ </tr>
+
+ <tr>
+ <td><a href="#configure">Configure</a></td>
+
+ <td><code>$ ./configure --prefix=<em>PREFIX</em></code>
+ </td>
+ </tr>
+
+ <tr>
+ <td><a href="#compile">Compile</a></td>
+
+ <td><code>$ make</code> </td>
+ </tr>
+
+ <tr>
+ <td><a href="#install">Install</a></td>
+
+ <td><code>$ make install</code> </td>
+ </tr>
+
+ <tr>
+ <td><a href="#customize">Customize</a></td>
+
+ <td><code>$ vi <em>PREFIX</em>/conf/httpd.conf</code> </td>
+ </tr>
+
+ <tr>
+ <td><a href="#test">Test</a></td>
+
+ <td><code>$ <em>PREFIX</em>/bin/apachectl start</code>
+ </td>
+ </tr>
+ </table>
+
+ <p><em>NN</em> must be replaced with the current minor version
+ number, and <em>PREFIX</em> must be replaced with the
+ filesystem path under which the server should be installed. If
+ <em>PREFIX</em> is not specified, it defaults to
+ <code>/usr/local/apache2</code>.</p>
+
+ <p>Each section of the compilation and installation process is
+ described in more detail below, beginning with the requirements
+ for compiling and installing Apache HTTPD.</p>
+</section>
+
+<section id="requirements"><title>Requirements</title>
+
+ <p>The following requirements exist for building Apache:</p>
+
+ <ul>
+ <li>Disk Space<br />
+ <br />
+ Make sure you have at least 50 MB of temporary free disk
+ space available. After installation Apache occupies
+ approximately 10 MB of disk space. The actual disk space
+ requirements will vary considerably based on your chosen
+ configuration options and any third-party modules.<br />
+ <br />
+ </li>
+
+ <li>ANSI-C Compiler and Build System<br />
+ <br />
+ Make sure you have an ANSI-C compiler installed. The <a
+ href="http://www.gnu.org/software/gcc/gcc.html">GNU C
+ compiler (GCC)</a> from the <a
+ href="http://www.gnu.org/">Free Software Foundation (FSF)</a>
+ is recommended (version 2.7.2 is fine). If you don't have GCC
+ then at least make sure your vendor's compiler is ANSI
+ compliant. In addition, your <code>PATH</code> must contain
+ basic build tools such as <code>make</code>.<br />
+ <br />
+ </li>
+
+ <li>Accurate time keeping<br />
+ <br />
+ Elements of the HTTP protocol are expressed as the time of
+ day. So, it's time to investigate setting some time
+ synchronization facility on your system. Usually the ntpdate
+ or xntpd programs are used for this purpose which are based
+ on the Network Time Protocol (NTP). See the Usenet newsgroup
+ <a
+ href="news:comp.protocols.time.ntp">comp.protocols.time.ntp</a>
+ and the <a href="http://www.eecis.udel.edu/~ntp/">NTP
+ homepage</a> for more details about NTP software and public
+ time servers.<br />
+ <br />
+ </li>
+
+ <li><a href="http://www.perl.org/">Perl 5</a>
+ [OPTIONAL]<br />
+ <br />
+ For some of the support scripts like <a
+ href="programs/apxs.html">apxs</a> or <a
+ href="programs/dbmmanage.html">dbmmanage</a> (which are
+ written in Perl) the Perl 5 interpreter is required (versions
+ 5.003 and 5.004 are fine). If no such interpreter is found by
+ the `configure' script there is no harm. Of course, you still
+ can build and install Apache 2.0. Only those support scripts
+ cannot be used. If you have multiple Perl interpreters
+ installed (perhaps a Perl 4 from the vendor and a Perl 5 from
+ your own), then it is recommended to use the --with-perl
+ option (see below) to make sure the correct one is selected
+ by ./configure.<br />
+ <br />
+ </li>
+ </ul>
+</section>
+
+<section id="download"><title>Download</title>
+
+ <p>Apache can be downloaded from the <a
+ href="http://www.apache.org/dist/httpd/">Apache Software
+ Foundation download site</a> or from a <a
+ href="http://www.apache.org/dyn/closer.cgi/httpd/">nearby
+ mirror</a>.</p>
+
+ <p>Version numbers that end in <code>alpha</code> indicate
+ early pre-test versions which may or may not work. Version
+ numbers ending in <code>beta</code> indicate more reliable
+ releases that still require further testing or bug fixing. If
+ you wish to download the best available production release of
+ the Apache HTTP Server, you should choose the latest version
+ with neither <code>alpha</code> nor <code>beta</code> in its
+ filename.</p>
+
+ <p>After downloading, especially if a mirror site is used, it
+ is important to verify that you have a complete and unmodified
+ version of the Apache HTTP Server. This can be accomplished by
+ testing the downloaded tarball against the PGP signature. This,
+ in turn, is a two step procedure. First, you must obtain the
+ <code>KEYS</code> file from the <a
+ href="http://www.apache.org/dist/httpd/">Apache distribution
+ site</a>. (To assure that the <code>KEYS</code> file itself has
+ not been modified, it may be a good idea to use a file from a
+ previous distribution of Apache or import the keys from a
+ public key server.) The keys are imported into your personal
+ key ring using one of the following commands (depending on your
+ pgp version):</p>
+
+<example>$ pgp < KEYS</example>
+
+ <p>or </p>
+
+<example>$ gpg --import KEYS</example>
+
+ <p>The next step is to test the tarball against the PGP
+ signature, which should always be obtained from the <a
+ href="http://www.apache.org/dist/httpd/">main Apache
+ website</a>. The signature file has a filename identical to the
+ source tarball with the addition of <code>.asc</code>. Then you
+ can check the distribution with one of the following commands
+ (again, depending on your pgp version):</p>
+
+<example>$ pgp httpd-2_0_<em>NN</em>.tar.gz.asc</example>
+
+ <p>or</p>
+
+<example>$ gpg --verify httpd-2_0_<em>NN</em>.tar.gz.asc</example>
+
+ <p>You should receive a message like</p>
+
+<example>Good signature from user "Martin Kraemer
+ <martin@apache.org>".</example>
+
+ <p>Depending on the trust relationships contained in your key
+ ring, you may also receive a message saying that the
+ relationship between the key and the signer of the key cannot
+ be verified. This is not a problem if you trust the
+ authenticity of the <code>KEYS</code> file.</p>
+
+</section>
+
+<section id="extract"><title>Extract</title>
+
+ <p>Extracting the source from the Apache HTTPD tarball is a
+ simple matter of uncompressing, and then untarring:</p>
+
+<example>
+ $ gzip -d httpd-2_0_<em>NN</em>.tar.gz<br />
+ $ tar xvf httpd-2_0_<em>NN</em>.tar
+</example>
+
+ <p>This will create a new directory under the current directory
+ containing the source code for the distribution. You should
+ <code>cd</code> into that directory before proceeding with
+ compiling the server.</p>
+</section>
+
+<section id="configure"><title>Configuring the source tree</title>
+
+ <p>The next step is to configure the Apache source tree for
+ your particular platform and personal requirements. This is
+ done using the script <code>configure</code> included in the
+ root directory of the distribution. (Developers downloading the
+ CVS version of the Apache source tree will need to have
+ <code>autoconf</code> and <code>libtool</code> installed and
+ will need to run <code>buildconf</code> before proceeding with
+ the next steps. This is not necessary for official
+ releases.)</p>
+
+ <p>To configure the source tree using all the default options,
+ simply type <code>./configure</code>. To change the default
+ options, <code>configure</code> accepts a variety of variables
+ and command line options. Environment variables are generally
+ placed before the <code>./configure</code> command, while other
+ options are placed after. The most important option here is the
+ location prefix where Apache is to be installed later, because
+ Apache has to be configured for this location to work
+ correctly. But there are a lot of other options available for
+ your pleasure.</p>
+
+ <p>For a short impression of what possibilities you have, here
+ is a typical example which compiles Apache for the installation
+ tree /sw/pkg/apache with a particular compiler and flags plus
+ the two additional modules mod_rewrite and mod_speling for
+ later loading through the DSO mechanism:</p>
+
+<example>
+ $ CC="pgcc" CFLAGS="-O2" \<br />
+ ./configure --prefix=/sw/pkg/apache \<br />
+ --enable-rewrite=shared \<br />
+ --enable-speling=shared
+</example>
+
+ <p>When configure is run it will take several minutes to test
+ for the availability of features on your system and build
+ Makefiles which will later be used to compile the server.</p>
+
+ <p>The easiest way to find all of the configuration flags for
+ Apache is to run ./configure --help. What follows is a brief
+ description of most of the arguments and environment
+ variables.</p>
+
+<section id="environment"><title>Environment Variables</title>
+
+ <p>The autoconf build process uses several environment
+ variables to configure the build environment. In general, these
+ variables change the method used to build Apache, but not the
+ eventual features of the server. These variables can be placed
+ in the environment before invoking <code>configure</code>, but
+ it is usually easier to specify them on the
+ <code>configure</code> command line as demonstrated in the
+ example above.</p>
+
+ <dl>
+ <dt><code>CC=...</code></dt>
+
+ <dd>The name of the C compiler command.</dd>
+
+ <dt><code>CPPFLAGS=...</code></dt>
+
+ <dd>Miscellaneous C preprocessor and compiler options.</dd>
+
+ <dt><code>CFLAGS=...</code></dt>
+
+ <dd>Debugging and optimization options for the C
+ compiler.</dd>
+
+ <dt><code>LDFLAGS=...</code></dt>
+
+ <dd>Miscellaneous options to be passed to the linker.</dd>
+
+ <dt><code>LIBS=...</code></dt>
+
+ <dd>Library location information ("-L" and "-l" options) to
+ pass to the linker.</dd>
+
+ <dt><code>INCLUDES=...</code></dt>
+
+ <dd>Header file search directories ("-I<em>dir</em>").</dd>
+
+ <dt><code>TARGET=...</code> [Default: apache]</dt>
+
+ <dd>Name of the executable which will be built.</dd>
+
+ <dt><code>NOTEST_CPPFLAGS=...</code></dt>
+
+ <dt><code>NOTEST_CFLAGS=...</code></dt>
+
+ <dt><code>NOTEST_LDFLAGS=...</code></dt>
+
+ <dt><code>NOTEST_LIBS=...</code></dt>
+
+ <dd>These variables share the same function as their
+ non-NOTEST namesakes. However, the variables are applied to
+ the build process only after autoconf has performed its
+ feature testing. This allows the inclusion of flags which
+ will cause problems during feature testing, but must be used
+ for the final compilation.</dd>
+
+ <dt><code>SHLIB_PATH=...</code></dt>
+
+ <dd>Options which specify shared library paths for the
+ compiler and linker.</dd>
+ </dl>
+</section>
+
+<section id="output"><title>autoconf Output Options</title>
+
+ <dl>
+ <dt><code>--help</code></dt>
+
+ <dd>Prints the usage message including all available options,
+ but does not actually configure anything.</dd>
+
+ <dt><code>--quiet</code></dt>
+
+ <dd>Prevents the printing of the usual "checking..."
+ messages.</dd>
+
+ <dt><code>--verbose</code></dt>
+
+ <dd>Prints much more information during the configuration
+ process, including the names of all the files examined.</dd>
+ </dl>
+</section>
+
+<section id="pathnames"><title>Pathnames</title>
+
+ <p>There are currently two ways to configure the pathnames
+ under which Apache will install its files. First, you can
+ specify a directory and have Apache install itself under that
+ directory in its default locations.</p>
+
+ <dl>
+ <dt><code>--prefix=<em>PREFIX</em></code> [Default:
+ /usr/local/apache2]</dt>
+
+ <dd>Specifies the directory under which the Apache files will
+ be installed.</dd>
+ </dl>
+
+ <p>It is possible to specify that architecture-dependent files
+ should be placed under a different directory.</p>
+
+ <dl>
+ <dt><code>--exec-prefix=<em>EPREFIX</em></code> [Default:
+ <em>PREFIX</em>]</dt>
+
+ <dd>Specifies the directory under which
+ architecture-dependent files will be placed.</dd>
+ </dl>
+
+ <p>The second, and more flexible way to configure the install
+ path locations for Apache is using the
+ <code>config.layout</code> file. Using this method, it is
+ possible to separately specify the location for each type of
+ file within the Apache installation. The
+ <code>config.layout</code> file contains several example
+ configurations, and you can also create your own custom
+ configuration following the examples. The different layouts in
+ this file are grouped into <code><Layout
+ FOO>...</Layout></code> sections and referred to by
+ name as in <code>FOO</code>.</p>
+
+ <dl>
+ <dt><code>--enable-layout=<em>LAYOUT</em></code></dt>
+
+ <dd>Use the named layout in the <code>config.layout</code>
+ file to specify the installation paths.</dd>
+ </dl>
+
+ <p>Presently it is not possible to mix the
+ <code>--enable-layout</code> and <code>--prefix</code> options.
+ Nor is it possible to individually specify detailed pathnames
+ on the <code>configure</code> command line. If you want just a
+ basic install, you can simply use the <code>--prefix</code>
+ option on its own. If you want to customize your install, you
+ should edit the <code>config.layout</code> file and use the
+ <code>--enable-layout</code> option.</p>
+</section>
+
+<section id="modules"><title>Modules</title>
+
+ <p>Apache is a modular server. Only the most basic
+ functionality is included in the core server. Extended features
+ are available in various modules. During the configuration
+ process, you must select which modules to compile for use with
+ your server. You can view a <a
+ href="mod/index.html">list of modules</a> included in
+ the documentation. Those modules with a <a
+ href="mod/module-dict.html#Status">status</a> of "Base" are
+ included by default and must be specifically disabled if you do
+ not want them. Modules with any other status must be
+ specifically enabled if you wish to use them.</p>
+
+ <p>There are two ways for a module to be compiled and used with
+ Apache. Modules may be <em>statically compiled</em>, which
+ means that they are permanently included in the Apache binary.
+ Alternatively, if your operating system supports Dynamic Shared
+ Objects (DSOs) and autoconf can detect that support, then
+ modules may be <em>dynamically compiled</em>. DSO modules are
+ stored separately from the Apache binary, and may be included
+ or excluded from the server using the run-time configuration
+ directives provided by <module>mod_so</module>.
+ The mod_so is automatically included in the server if any
+ dynamic modules are included in the compilation. If you would
+ like to make your server capable of loading DSOs without
+ actually compiling any dynamic modules, you can explicitly
+ <code>--enable-so</code>.</p>
+
+ <dl>
+ <dt><code>--enable-<em>MODULE</em>[=shared]</code></dt>
+
+ <dd>Compile and include the module <em>MODULE</em>. The
+ identifier <em>MODULE</em> is the <a
+ href="mod/module-dict.html#ModuleIdentifier">Module
+ Identifier</a> from the module documentation without the
+ "_module" string. To compile the module as a DSO, add the
+ option <code>=shared</code>.</dd>
+
+ <dt><code>--disable-<em>MODULE</em></code></dt>
+
+ <dd>Remove the module <em>MODULE</em> which would otherwise
+ be compiled and included.</dd>
+
+ <dt><code>--enable-modules=<em>MODULE-LIST</em></code></dt>
+
+ <dd>Compile and include the modules listed in the
+ space-separated <em>MODULE-LIST</em>.</dd>
+
+ <dt>
+ <code>--enable-mods-shared=<em>MODULE-LIST</em></code></dt>
+
+ <dd>Compile and include the modules in the space-separated
+ <em>MODULE-LIST</em> as dynamically loadable (DSO)
+ modules.</dd>
+ </dl>
+
+ <p>The <em>MODULE-LIST</em> in the
+ <code>--enable-modules</code> and
+ <code>--enable-mods-shared</code> options is usually a
+ space-separated list of module identifiers. For example, to
+ enable mod_dav and mod_info, you can either use</p>
+
+<example>./configure --enable-dav --enable-info</example>
+
+ <p>or, equivalently,</p>
+
+<example>./configure --enable-modules="dav info"</example>
+
+ <p>In addition, the special keywords <code>all</code> or
+ <code>most</code> can be used to add all or most of the modules
+ in one step. You can then remove any modules that you do not
+ want with the <code>--disable-<em>MODULE</em></code> option.
+ For example, to include all modules as DSOs with the exception
+ of mod_info, you can use</p>
+
+<example>
+ ./configure --enable-mods-shared=all
+ --disable-info
+</example>
+
+ <p>In addition to the standard set of modules, Apache 2.0 also
+ includes a choice of <a href="mpm.html">Multi-Processing
+ Modules</a> (MPMs). One, and only one MPM must be included in
+ the compilation process. The default MPMs for each platform are
+ listed on the <a href="mpm.html">MPM documentation page</a>,
+ but can be overridden on the <code>configure</code> command
+ line.</p>
+
+ <dl>
+ <dt><code>--with-mpm=<em>NAME</em></code></dt>
+
+ <dd>Choose the mpm <em>NAME</em>.</dd>
+ </dl>
+</section>
+
+<section id="suexec"><title>Suexec</title>
+
+ <p>Apache includes a support program called <a
+ href="suexec.html">suexec</a> which can be used to isolate user
+ CGI programs. However, if suexec is improperly configured, it
+ can cause serious security problems. Therefore, you should
+ carefully read and consider the <a href="suexec.html">suexec
+ documentation</a> before implementing this feature.</p>
+</section>
+</section>
+
+<section id="compile"><title>Build</title>
+
+ <p>Now you can build the various parts which form the Apache
+ package by simply running the command:</p>
+
+<example>$ make</example>
+
+ <p>Please be patient here, since a base configuration takes
+ approximately 3 minutes to compile under a Pentium III/Linux
+ 2.2 system, but this will vary widely depending on your
+ hardware and the number of modules which you have enabled.</p>
+</section>
+
+<section id="install"><title>Install</title>
+
+ <p>Now its time to install the package under the configured
+ installation <em>PREFIX</em> (see <code>--prefix</code> option
+ above) by running:</p>
+
+<example>$ make install</example>
+
+ <p>If you are upgrading, the installation will not overwrite
+ your configuration files or documents.</p>
+</section>
+
+<section id="customize"><title>Customize</title>
+
+ <p>Next, you can customize your Apache HTTP server by editing
+ the <a href="configuring.html">configuration files</a> under
+ <em>PREFIX</em>/conf/.</p>
+
+<example>$ vi <em>PREFIX</em>/conf/httpd.conf</example>
+
+ <p>Have a look at the Apache manual under <a
+ href="./">docs/manual/</a> or <a
+ href="http://httpd.apache.org/docs/">http://httpd.apache.org/docs-2.0/</a>
+ for a complete reference of available <a
+ href="mod/directives.html">configuration directives</a>.</p>
+</section>
+
+<section id="test"><title>Test</title>
+
+ <p>Now you can <a href="invoking.html">start</a> your Apache
+ HTTP server by immediately running:</p>
+
+<example>$ <em>PREFIX</em>/bin/apachectl start</example>
+
+ <p>and then you should be able to request your first document
+ via URL http://localhost/. The web page you see is located
+ under the <directive module="core">DocumentRoot</directive>
+ which will usually be <code><em>PREFIX</em>/htdocs/</code>.
+ Then <a href="stopping.html">stop</a> the server again by
+ running:</p>
+
+<example>$ <em>PREFIX</em>/bin/apachectl stop</example>
+</section>
+
+</manualpage>
\ No newline at end of file