install.html.en revision 53611890f8362e5037cd756eee0f91fb7a89e95e
97a9a944b5887e91042b019776c41d5dd74557aferikabele<?xml version="1.0" encoding="ISO-8859-1"?>
97a9a944b5887e91042b019776c41d5dd74557aferikabele<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
97a9a944b5887e91042b019776c41d5dd74557aferikabele<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><!--
a945f35eff8b6a88009ce73de6d4c862ce58de3cslive XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
a945f35eff8b6a88009ce73de6d4c862ce58de3cslive This file is generated from xml source: DO NOT EDIT
a945f35eff8b6a88009ce73de6d4c862ce58de3cslive XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
5a58787efeb02a1c3f06569d019ad81fd2efa06end -->
5a58787efeb02a1c3f06569d019ad81fd2efa06end<title>Compiling and Installing - Apache HTTP Server</title>
5a58787efeb02a1c3f06569d019ad81fd2efa06end<link href="/style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
5a58787efeb02a1c3f06569d019ad81fd2efa06end<link href="/style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
5a58787efeb02a1c3f06569d019ad81fd2efa06end<link href="/style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" />
5a58787efeb02a1c3f06569d019ad81fd2efa06end<link href="/images/favicon.ico" rel="shortcut icon" /></head>
5a58787efeb02a1c3f06569d019ad81fd2efa06end<body id="manual-page"><div id="page-header">
5a58787efeb02a1c3f06569d019ad81fd2efa06end<p class="menu"><a href="/mod/">Modules</a> | <a href="/mod/directives.html">Directives</a> | <a href="/faq/">FAQ</a> | <a href="/glossary.html">Glossary</a> | <a href="/sitemap.html">Sitemap</a></p>
5a58787efeb02a1c3f06569d019ad81fd2efa06end<p class="apache">Apache HTTP Server Version 2.1</p>
52fff662005b1866a3ff09bb6c902800c5cc6dedjerenkrantz<img alt="" src="/images/feather.gif" /></div>
5a58787efeb02a1c3f06569d019ad81fd2efa06end<div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="/images/left.gif" /></a></div>
5a58787efeb02a1c3f06569d019ad81fd2efa06end<div id="path">
5a58787efeb02a1c3f06569d019ad81fd2efa06end<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs-project/">Documentation</a> &gt; <a href="./">Version 2.1</a></div><div id="page-content"><div id="preamble"><h1>Compiling and Installing</h1>
4b5981e276e93df97c34e4da05ca5cf8bbd937dand
5a58787efeb02a1c3f06569d019ad81fd2efa06end <p>This document covers compilation and installation of Apache
a63f0ab647ad2ab72efc9bea7a66e24e9ebc5cc2nd on Unix and Unix-like systems only. For compiling and
3b3b7fc78d1f5bfc2769903375050048ff41ff26nd installation on Windows, see <a href="platform/windows.html">Using Apache with Microsoft
ad74a0524a06bfe11b7de9e3b4ce7233ab3bd3f7nd Windows</a>. For other platforms, see the <a href="platform/">platform</a> documentation.</p>
ad74a0524a06bfe11b7de9e3b4ce7233ab3bd3f7nd
e1e8390280254f7f0580d701e583f670643d4f3fnilgun <p>Apache 2.0's configuration and installation environment has
e1e8390280254f7f0580d701e583f670643d4f3fnilgun changed completely from Apache 1.3. Apache 1.3 used a custom
3b3b7fc78d1f5bfc2769903375050048ff41ff26nd set of scripts to achieve easy installation. Apache 2.0 now
5a58787efeb02a1c3f06569d019ad81fd2efa06end uses <code>libtool</code> and <code>autoconf</code>
5a58787efeb02a1c3f06569d019ad81fd2efa06end to create an environment that looks like many other Open Source
5a58787efeb02a1c3f06569d019ad81fd2efa06end projects.</p>
5a58787efeb02a1c3f06569d019ad81fd2efa06end
5a58787efeb02a1c3f06569d019ad81fd2efa06end</div>
5a58787efeb02a1c3f06569d019ad81fd2efa06end<div id="quickview"><ul id="toc"><li><img alt="" src="/images/down.gif" /> <a href="#overview">Overview for the
9b6a3a558cc90ffdaa0b50bd02546ffec424ded7slive impatient</a></li>
9b6a3a558cc90ffdaa0b50bd02546ffec424ded7slive<li><img alt="" src="/images/down.gif" /> <a href="#requirements">Requirements</a></li>
9b6a3a558cc90ffdaa0b50bd02546ffec424ded7slive<li><img alt="" src="/images/down.gif" /> <a href="#download">Download</a></li>
9b6a3a558cc90ffdaa0b50bd02546ffec424ded7slive<li><img alt="" src="/images/down.gif" /> <a href="#extract">Extract</a></li>
9b6a3a558cc90ffdaa0b50bd02546ffec424ded7slive<li><img alt="" src="/images/down.gif" /> <a href="#configure">Configuring the source tree</a></li>
9b6a3a558cc90ffdaa0b50bd02546ffec424ded7slive<li><img alt="" src="/images/down.gif" /> <a href="#compile">Build</a></li>
06ba4a61654b3763ad65f52283832ebf058fdf1cslive<li><img alt="" src="/images/down.gif" /> <a href="#install">Install</a></li>
9b6a3a558cc90ffdaa0b50bd02546ffec424ded7slive<li><img alt="" src="/images/down.gif" /> <a href="#customize">Customize</a></li>
9b6a3a558cc90ffdaa0b50bd02546ffec424ded7slive<li><img alt="" src="/images/down.gif" /> <a href="#test">Test</a></li>
97a9a944b5887e91042b019776c41d5dd74557aferikabele</ul><h3>See also</h3><ul class="seealso"><li><a href="invoking.html">Starting Apache</a></li><li><a href="stopping.html">Stopping and Restarting</a></li></ul></div>
9b6a3a558cc90ffdaa0b50bd02546ffec424ded7slive<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
9b6a3a558cc90ffdaa0b50bd02546ffec424ded7slive<div class="section">
9b6a3a558cc90ffdaa0b50bd02546ffec424ded7slive<h2><a name="overview" id="overview">Overview for the
5a58787efeb02a1c3f06569d019ad81fd2efa06end impatient</a></h2>
5a58787efeb02a1c3f06569d019ad81fd2efa06end
5a58787efeb02a1c3f06569d019ad81fd2efa06end <table>
a63f0ab647ad2ab72efc9bea7a66e24e9ebc5cc2nd <tr>
117c1f888a14e73cdd821dc6c23eb0411144a41cnd <td><a href="#download">Download</a></td>
deeee6bb6fd94c0ba5f3730b58abd9d299c89ccdnd
117c1f888a14e73cdd821dc6c23eb0411144a41cnd <td><code>$ lynx
117c1f888a14e73cdd821dc6c23eb0411144a41cnd http://www.apache.org/dist/httpd/httpd-2_1_<em>NN</em>.tar.gz</code>
117c1f888a14e73cdd821dc6c23eb0411144a41cnd </td>
117c1f888a14e73cdd821dc6c23eb0411144a41cnd </tr>
117c1f888a14e73cdd821dc6c23eb0411144a41cnd
117c1f888a14e73cdd821dc6c23eb0411144a41cnd <tr>
117c1f888a14e73cdd821dc6c23eb0411144a41cnd <td><a href="#extract">Extract</a></td>
117c1f888a14e73cdd821dc6c23eb0411144a41cnd
117c1f888a14e73cdd821dc6c23eb0411144a41cnd <td><code>$ gzip -d httpd-2_1_<em>NN</em>.tar.gz<br />
117c1f888a14e73cdd821dc6c23eb0411144a41cnd $ tar xvf httpd-2_1_<em>NN</em>.tar</code> </td>
2bc7f1cf720973a67f8ff7a8d523e40569ae5b6cnd </tr>
117c1f888a14e73cdd821dc6c23eb0411144a41cnd
117c1f888a14e73cdd821dc6c23eb0411144a41cnd <tr>
117c1f888a14e73cdd821dc6c23eb0411144a41cnd <td><a href="#configure">Configure</a></td>
117c1f888a14e73cdd821dc6c23eb0411144a41cnd
117c1f888a14e73cdd821dc6c23eb0411144a41cnd <td><code>$ /configure --prefix=<em>PREFIX</em></code>
5a58787efeb02a1c3f06569d019ad81fd2efa06end </td>
5a58787efeb02a1c3f06569d019ad81fd2efa06end </tr>
5a58787efeb02a1c3f06569d019ad81fd2efa06end
5a58787efeb02a1c3f06569d019ad81fd2efa06end <tr>
5a58787efeb02a1c3f06569d019ad81fd2efa06end <td><a href="#compile">Compile</a></td>
5a58787efeb02a1c3f06569d019ad81fd2efa06end
a63f0ab647ad2ab72efc9bea7a66e24e9ebc5cc2nd <td><code>$ make</code> </td>
a63f0ab647ad2ab72efc9bea7a66e24e9ebc5cc2nd </tr>
5a58787efeb02a1c3f06569d019ad81fd2efa06end
5a58787efeb02a1c3f06569d019ad81fd2efa06end <tr>
5a58787efeb02a1c3f06569d019ad81fd2efa06end <td><a href="#install">Install</a></td>
5a58787efeb02a1c3f06569d019ad81fd2efa06end
06ba4a61654b3763ad65f52283832ebf058fdf1cslive <td><code>$ make install</code> </td>
06ba4a61654b3763ad65f52283832ebf058fdf1cslive </tr>
ea8a727ff298d2f5368b55b7ae8d87091ae106e7nd
06ba4a61654b3763ad65f52283832ebf058fdf1cslive <tr>
06ba4a61654b3763ad65f52283832ebf058fdf1cslive <td><a href="#customize">Customize</a></td>
06ba4a61654b3763ad65f52283832ebf058fdf1cslive
06ba4a61654b3763ad65f52283832ebf058fdf1cslive <td><code>$ vi <em>PREFIX</em>/conf/httpd.conf</code> </td>
06ba4a61654b3763ad65f52283832ebf058fdf1cslive </tr>
97a9a944b5887e91042b019776c41d5dd74557aferikabele
97a9a944b5887e91042b019776c41d5dd74557aferikabele <tr>
97a9a944b5887e91042b019776c41d5dd74557aferikabele <td><a href="#test">Test</a></td>
97a9a944b5887e91042b019776c41d5dd74557aferikabele
06ba4a61654b3763ad65f52283832ebf058fdf1cslive <td><code>$ <em>PREFIX</em>/bin/apachectl start</code>
06ba4a61654b3763ad65f52283832ebf058fdf1cslive </td>
06ba4a61654b3763ad65f52283832ebf058fdf1cslive </tr>
06ba4a61654b3763ad65f52283832ebf058fdf1cslive </table>
97a9a944b5887e91042b019776c41d5dd74557aferikabele
97a9a944b5887e91042b019776c41d5dd74557aferikabele <p><em>NN</em> must be replaced with the current minor version
06ba4a61654b3763ad65f52283832ebf058fdf1cslive number, and <em>PREFIX</em> must be replaced with the
06ba4a61654b3763ad65f52283832ebf058fdf1cslive filesystem path under which the server should be installed. If
06ba4a61654b3763ad65f52283832ebf058fdf1cslive <em>PREFIX</em> is not specified, it defaults to
06ba4a61654b3763ad65f52283832ebf058fdf1cslive <code>/usr/local/apache2</code>.</p>
a63f0ab647ad2ab72efc9bea7a66e24e9ebc5cc2nd
a63f0ab647ad2ab72efc9bea7a66e24e9ebc5cc2nd <p>Each section of the compilation and installation process is
a63f0ab647ad2ab72efc9bea7a66e24e9ebc5cc2nd described in more detail below, beginning with the requirements
06ba4a61654b3763ad65f52283832ebf058fdf1cslive for compiling and installing Apache HTTPD.</p>
06ba4a61654b3763ad65f52283832ebf058fdf1cslive</div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
9b6a3a558cc90ffdaa0b50bd02546ffec424ded7slive<div class="section">
06ba4a61654b3763ad65f52283832ebf058fdf1cslive<h2><a name="requirements" id="requirements">Requirements</a></h2>
97a9a944b5887e91042b019776c41d5dd74557aferikabele
06ba4a61654b3763ad65f52283832ebf058fdf1cslive <p>The following requirements exist for building Apache:</p>
06ba4a61654b3763ad65f52283832ebf058fdf1cslive
5a58787efeb02a1c3f06569d019ad81fd2efa06end <dl>
5a58787efeb02a1c3f06569d019ad81fd2efa06end <dt>Disk Space</dt>
5a58787efeb02a1c3f06569d019ad81fd2efa06end <dd>Make sure you have at least 50 MB of temporary free disk
5a58787efeb02a1c3f06569d019ad81fd2efa06end space available. After installation Apache occupies
5a58787efeb02a1c3f06569d019ad81fd2efa06end approximately 10 MB of disk space. The actual disk space
9fc1345bb54ea7f68c2e59ff3a618c1237a30918yoshiki requirements will vary considerably based on your chosen
5a58787efeb02a1c3f06569d019ad81fd2efa06end configuration options and any third-party modules.</dd>
5a58787efeb02a1c3f06569d019ad81fd2efa06end
5a58787efeb02a1c3f06569d019ad81fd2efa06end <dt>ANSI-C Compiler and Build System</dt>
5a58787efeb02a1c3f06569d019ad81fd2efa06end <dd>Make sure you have an ANSI-C compiler installed. The <a href="http://www.gnu.org/software/gcc/gcc.html">GNU C
5a58787efeb02a1c3f06569d019ad81fd2efa06end compiler (GCC)</a> from the <a href="http://www.gnu.org/">Free Software Foundation (FSF)</a>
06ba4a61654b3763ad65f52283832ebf058fdf1cslive is recommended (version 2.7.2 is fine). If you don't have GCC
06ba4a61654b3763ad65f52283832ebf058fdf1cslive then at least make sure your vendor's compiler is ANSI
06ba4a61654b3763ad65f52283832ebf058fdf1cslive compliant. In addition, your <code>PATH</code> must contain
a63f0ab647ad2ab72efc9bea7a66e24e9ebc5cc2nd basic build tools such as <code>make</code>.</dd>
a63f0ab647ad2ab72efc9bea7a66e24e9ebc5cc2nd
06ba4a61654b3763ad65f52283832ebf058fdf1cslive <dt>Accurate time keeping</dt>
06ba4a61654b3763ad65f52283832ebf058fdf1cslive <dd>Elements of the HTTP protocol are expressed as the time of
06ba4a61654b3763ad65f52283832ebf058fdf1cslive day. So, it's time to investigate setting some time
f989aee1278b24f2b6e3a8e3b0935b590349de81jorton synchronization facility on your system. Usually the
a63f0ab647ad2ab72efc9bea7a66e24e9ebc5cc2nd <code>ntpdate</code> or <code>xntpd</code> programs are used for
a63f0ab647ad2ab72efc9bea7a66e24e9ebc5cc2nd this purpose which are based on the Network Time Protocol (NTP).
5a58787efeb02a1c3f06569d019ad81fd2efa06end See the Usenet newsgroup <a href="news:comp.protocols.time.ntp">comp.protocols.time.ntp</a>
5a58787efeb02a1c3f06569d019ad81fd2efa06end and the <a href="http://www.eecis.udel.edu/~ntp/">NTP
5a58787efeb02a1c3f06569d019ad81fd2efa06end homepage</a> for more details about NTP software and public
5a58787efeb02a1c3f06569d019ad81fd2efa06end time servers.</dd>
5a58787efeb02a1c3f06569d019ad81fd2efa06end
5a58787efeb02a1c3f06569d019ad81fd2efa06end <dt><a href="http://www.perl.org/">Perl 5</a>
5a58787efeb02a1c3f06569d019ad81fd2efa06end [OPTIONAL]</dt>
5a58787efeb02a1c3f06569d019ad81fd2efa06end <dd>For some of the support scripts like <a href="programs/apxs.html">apxs</a> or <a href="programs/dbmmanage.html">dbmmanage</a> (which are
5a58787efeb02a1c3f06569d019ad81fd2efa06end written in Perl) the Perl 5 interpreter is required (versions
5a58787efeb02a1c3f06569d019ad81fd2efa06end 5.003 or newer are sufficient). If no such interpreter is found by
5a58787efeb02a1c3f06569d019ad81fd2efa06end the `<code>configure</code>' script there is no harm. Of course, you
5a58787efeb02a1c3f06569d019ad81fd2efa06end still can build and install Apache 2.0. Only those support scripts
a63f0ab647ad2ab72efc9bea7a66e24e9ebc5cc2nd cannot be used. If you have multiple Perl interpreters
5a58787efeb02a1c3f06569d019ad81fd2efa06end installed (perhaps a Perl 4 from the vendor and a Perl 5 from
5a58787efeb02a1c3f06569d019ad81fd2efa06end your own), then it is recommended to use the <code>--with-perl</code>
5a58787efeb02a1c3f06569d019ad81fd2efa06end option (see below) to make sure the correct one is selected
5a58787efeb02a1c3f06569d019ad81fd2efa06end by <code>/configure</code>.</dd>
06ba4a61654b3763ad65f52283832ebf058fdf1cslive </dl>
06ba4a61654b3763ad65f52283832ebf058fdf1cslive</div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
06ba4a61654b3763ad65f52283832ebf058fdf1cslive<div class="section">
a63f0ab647ad2ab72efc9bea7a66e24e9ebc5cc2nd<h2><a name="download" id="download">Download</a></h2>
a63f0ab647ad2ab72efc9bea7a66e24e9ebc5cc2nd
06ba4a61654b3763ad65f52283832ebf058fdf1cslive <p>Apache can be downloaded from the <a href="http://httpd.apache.org/download.cgi">Apache HTTP Server
06ba4a61654b3763ad65f52283832ebf058fdf1cslive download site</a> which lists several mirrors. You'll find here
06ba4a61654b3763ad65f52283832ebf058fdf1cslive the latest stable release.</p>
06ba4a61654b3763ad65f52283832ebf058fdf1cslive
5a58787efeb02a1c3f06569d019ad81fd2efa06end <p>After downloading, especially if a mirror site is used, it
5a58787efeb02a1c3f06569d019ad81fd2efa06end is important to verify that you have a complete and unmodified
5a58787efeb02a1c3f06569d019ad81fd2efa06end version of the Apache HTTP Server. This can be accomplished by
5a58787efeb02a1c3f06569d019ad81fd2efa06end testing the downloaded tarball against the PGP signature. This,
5a58787efeb02a1c3f06569d019ad81fd2efa06end in turn, is a two step procedure. First, you must obtain the
5a58787efeb02a1c3f06569d019ad81fd2efa06end <a href="http://www.apache.org/dist/httpd/KEYS"><code>KEYS</code></a>
5a58787efeb02a1c3f06569d019ad81fd2efa06end file from the Apache distribution site, too. (To assure that the
5a58787efeb02a1c3f06569d019ad81fd2efa06end <code>KEYS</code> file itself has not been modified, it may be a good
3b3b7fc78d1f5bfc2769903375050048ff41ff26nd idea to use a file from a previous distribution of Apache or import
ad74a0524a06bfe11b7de9e3b4ce7233ab3bd3f7nd the keys from a public key server.) The keys are imported into
ad74a0524a06bfe11b7de9e3b4ce7233ab3bd3f7nd your personal key ring using one of the following commands (depending
e1e8390280254f7f0580d701e583f670643d4f3fnilgun on your pgp version):</p>
e1e8390280254f7f0580d701e583f670643d4f3fnilgun
3b3b7fc78d1f5bfc2769903375050048ff41ff26nd<div class="example"><p><code>$ pgp &lt; KEYS</code></p></div>
eac602f079a7b6a1039df751710a2c734c5f67cenoirin
5a58787efeb02a1c3f06569d019ad81fd2efa06end <p>or </p>
5a58787efeb02a1c3f06569d019ad81fd2efa06end
<div class="example"><p><code>$ gpg --import KEYS</code></p></div>
<p>The next step is to test the tarball against the PGP
signature, which should always be obtained from the <a href="http://httpd.apache.org/download.cgi">main Apache
website</a>. A link to the signature file is placed behind the
corresponding download link or may be found in the particular
directory at the <a href="http://www.apache.org/dist/httpd/">Apache
distribution site</a>. Its filename is 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>
<div class="example"><p><code>$ pgp httpd-2_1_<em>NN</em>.tar.gz.asc</code></p></div>
<p>or</p>
<div class="example"><p><code>$ gpg --verify httpd-2_1_<em>NN</em>.tar.gz.asc</code></p></div>
<p>You should receive a message like</p>
<div class="example"><p><code>Good signature from user "Martin Kraemer
&lt;martin@apache.org&gt;".</code></p></div>
<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>
</div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
<div class="section">
<h2><a name="extract" id="extract">Extract</a></h2>
<p>Extracting the source from the Apache HTTPD tarball is a
simple matter of uncompressing, and then untarring:</p>
<div class="example"><p><code>
$ gzip -d httpd-2_1_<em>NN</em>.tar.gz<br />
$ tar xvf httpd-2_1_<em>NN</em>.tar
</code></p></div>
<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>
</div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
<div class="section">
<h2><a name="configure" id="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
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 <code>/sw/pkg/apache</code> with a particular compiler and flags
plus the two additional modules <code class="module"><a href="/mod/mod_rewrite.html">mod_rewrite</a></code> and
<code class="module"><a href="/mod/mod_speling.html">mod_speling</a></code> for
later loading through the DSO mechanism:</p>
<div class="example"><p><code>
$ CC="pgcc" CFLAGS="-O2" \<br />
/configure --prefix=/sw/pkg/apache \<br />
--enable-rewrite=shared \<br />
--enable-speling=shared
</code></p></div>
<p>When <code>configure</code> 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 <code>/configure --help</code>. What follows is a
brief description of most of the arguments and environment
variables.</p>
<h3><a name="environment" id="environment">Environment Variables</a></h3>
<p>The <code>autoconf</code> 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 ("<code>-L</code>" and
"<code>-l</code>" options) to pass to the linker.</dd>
<dt><code>INCLUDES=...</code></dt>
<dd>Header file search directories ("<code>-I<em>dir</em></code>").</dd>
<dt><code>TARGET=...</code> [Default: <code>apache</code>]</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-<code>NOTEST</code> 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>
<h3><a name="output" id="output">autoconf Output Options</a></h3>
<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 "<code>checking...</code>"
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>
<h3><a name="pathnames" id="pathnames">Pathnames</a></h3>
<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:
<code>/usr/local/apache2</code>]</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:
<code><em>PREFIX</em></code>]</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>&lt;Layout
FOO&gt;...&lt;/Layout&gt;</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>
<h3><a name="modules" id="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/">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 (e.g. <code class="module"><a href="/mod/mod_userdir.html">mod_userdir</a></code>). Modules with any
other status must be specifically enabled if you wish to use them
(e.g. <code class="module"><a href="/mod/mod_expires.html">mod_expires</a></code>).</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 <code>autoconf</code> 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 <code class="module"><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
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 <code class="module"><a href="/mod/mod_dav.html">mod_dav</a></code> and <code class="module"><a href="/mod/mod_info.html">mod_info</a></code>,
you can either use</p>
<div class="example"><p><code>/configure --enable-dav --enable-info</code></p></div>
<p>or, equivalently,</p>
<div class="example"><p><code>/configure --enable-modules="dav info"</code></p></div>
<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 <code class="module"><a href="/mod/mod_info.html">mod_info</a></code>, you can use</p>
<div class="example"><p><code>
/configure --enable-mods-shared=all
--disable-info
</code></p></div>
<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>
<h3><a name="dbm" id="dbm">DBM</a></h3>
<p>Several Apache features, including
<code class="module"><a href="/mod/mod_authn_dbm.html">mod_authn_dbm</a></code> and <code class="module"><a href="/mod/mod_rewrite.html">mod_rewrite</a></code>'s
DBM <code class="directive"><a href="/mod/mod_rewrite.html#rewritemap">RewriteMap</a></code> use
simple key/value databases for quick lookups of information. Apache
includes SDBM with its source-code, so this database is always
available. If you would like to use other database types, the
following <code>configure</code> options are available:</p>
<dl>
<dt><code>--with-gdbm[=<em>path</em>]</code></dt>
<dt><code>--with-ndbm[=<em>path</em>]</code></dt>
<dt><code>--with-berkeley-db[=<em>path</em>]</code></dt>
<dd>If no <em>path</em> is specified, Apache will search for the
include files and libraries in the usual search paths. An explict
<em>path</em> will cause Apache to look in
<em>path</em><code>/lib</code> and
<em>path</em><code>/include</code> for the relevant files. Finally,
the <em>path</em> may specify specific include and library paths
seperated by a colon.</dd>
</dl>
<h3><a name="suexec" id="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>
</div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
<div class="section">
<h2><a name="compile" id="compile">Build</a></h2>
<p>Now you can build the various parts which form the Apache
package by simply running the command:</p>
<div class="example"><p><code>$ make</code></p></div>
<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>
</div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
<div class="section">
<h2><a name="install" id="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>
<div class="example"><p><code>$ make install</code></p></div>
<p>If you are upgrading, the installation will not overwrite
your configuration files or documents.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
<div class="section">
<h2><a name="customize" id="customize">Customize</a></h2>
<p>Next, you can customize your Apache HTTP server by editing
the <a href="configuring.html">configuration files</a> under
<code><em>PREFIX</em>/conf/</code>.</p>
<div class="example"><p><code>$ vi <em>PREFIX</em>/conf/httpd.conf</code></p></div>
<p>Have a look at the Apache manual under <a href="./">docs/manual/</a> or consult <a href="http://httpd.apache.org/docs-2.1/">http://httpd.apache.org/docs-2.1/</a> for the most recent version of
this manual and a complete reference of available <a href="mod/directives.html">configuration directives</a>.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
<div class="section">
<h2><a name="test" id="test">Test</a></h2>
<p>Now you can <a href="invoking.html">start</a> your Apache
HTTP server by immediately running:</p>
<div class="example"><p><code>$ <em>PREFIX</em>/bin/apachectl start</code></p></div>
<p>and then you should be able to request your first document
via URL <code>http://localhost/</code>. The web page you see is located
under the <code class="directive"><a href="/mod/core.html#documentroot">DocumentRoot</a></code>
which will usually be <code><em>PREFIX</em>/htdocs/</code>.
Then <a href="stopping.html">stop</a> the server again by
running:</p>
<div class="example"><p><code>$ <em>PREFIX</em>/bin/apachectl stop</code></p></div>
</div></div>
<div id="footer">
<p class="apache">Maintained by the <a href="http://httpd.apache.org/docs-project/">Apache HTTP Server Documentation Project</a></p>
<p class="menu"><a href="/mod/">Modules</a> | <a href="/mod/directives.html">Directives</a> | <a href="/faq/">FAQ</a> | <a href="/glossary.html">Glossary</a> | <a href="/sitemap.html">Sitemap</a></p></div>
</body></html>