install.html revision f9e3b321e7f6afea15e207632f702797a020db95
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina<html xmlns="http://www.w3.org/1999/xhtml">
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina <head>
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina <meta name="generator" content="HTML Tidy, see www.w3.org" />
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina <title>Compiling and Installing Apache</title>
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina </head>
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina <!-- Background white, links blue (unvisited), navy (visited), red (active) -->
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina <body bgcolor="#FFFFFF" text="#000000" link="#0000FF"
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina vlink="#000080" alink="#FF0000">
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina <!--#include virtual="header.html" -->
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina <h1 align="CENTER">Compiling and Installing</h1>
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina <p>This document covers compilation and installation of Apache
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina on Unix and Unix-like systems only. For compiling and
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina installation on Windows, see <a
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina href="platform/windows.html">Using Apache with Microsoft
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina Windows</a>. For other platforms, see the <a
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina href="platform/">platform</a> documentation.</p>
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina <p>Apache 2.0's configuration and installation environment has
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina changed completely from Apache 1.3. Apache 1.3 used a custom
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina set of scripts to achieve easy installation. Apache 2.0 now
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina uses libtool and autoconf to create an environment that looks
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina like many other Open Source projects.</p>
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina <ul>
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina <li><a href="#overview">Overview for the impatient</a></li>
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina <li><a href="#requirements">Requirements</a></li>
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina <li><a href="#download">Download</a></li>
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina <li><a href="#extract">Extract</a></li>
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina <li>
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina <a href="#configure">Configuring the source tree</a>
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina <ul>
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina <li><a href="#environment">Environment Variables</a></li>
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina <li><a href="#output">autoconf Output Options</a></li>
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina <li><a href="#pathnames">Pathnames</a></li>
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina <li><a href="#modules">Modules</a></li>
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina <li><a href="#suexec">Suexec</a></li>
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina </ul>
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina </li>
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina <li><a href="#compile">Build</a></li>
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina <li><a href="#install">Install</a></li>
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina <li><a href="#customize">Customize</a></li>
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina <li><a href="#test">Test</a></li>
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina </ul>
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina <hr />
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina <h3><a id="overview" name="overview">Overview for the
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina impatient</a></h3>
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina <table>
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina <tr>
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina <td><a href="#download">Download</a></td>
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina <td><code>$ lynx
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina http://www.apache.org/dist/httpd/httpd-2_0_<em>NN</em>.tar.gz</code>
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina </td>
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina </tr>
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina <tr>
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina <td><a href="#extract">Extract</a></td>
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina <td><code>$ gzip -d httpd-2_0_<em>NN</em>.tar.gz<br />
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina $ tar xvf httpd-2_0_<em>NN</em>.tar</code> </td>
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina </tr>
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina <tr>
439e08cdc5c83b3e5835cb0435983f1da2ffbaf1Pavel Březina <td><a href="#configure">Configure</a></td>
439e08cdc5c83b3e5835cb0435983f1da2ffbaf1Pavel Březina
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina <td><code>$ /configure --prefix=<em>PREFIX</em></code>
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina </td>
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina </tr>
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina <tr>
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina <td><a href="#compile">Compile</a></td>
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina <td><code>$ make</code> </td>
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina </tr>
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina <tr>
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina <td><a href="#install">Install</a></td>
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina <td><code>$ make install</code> </td>
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina </tr>
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina <tr>
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina <td><a href="#customize">Customize</a></td>
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina
439e08cdc5c83b3e5835cb0435983f1da2ffbaf1Pavel Březina <td><code>$ vi <em>PREFIX</em>/conf/httpd.conf</code> </td>
439e08cdc5c83b3e5835cb0435983f1da2ffbaf1Pavel Březina </tr>
439e08cdc5c83b3e5835cb0435983f1da2ffbaf1Pavel Březina
439e08cdc5c83b3e5835cb0435983f1da2ffbaf1Pavel Březina <tr>
439e08cdc5c83b3e5835cb0435983f1da2ffbaf1Pavel Březina <td><a href="#test">Test</a></td>
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina <td><code>$ <em>PREFIX</em>/bin/apachectl start</code>
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina </td>
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina </tr>
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina </table>
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina <p><em>NN</em> must be replaced with the current minor version
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina number, and <em>PREFIX</em> must be replaced with the
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina filesystem path under which the server should be installed. If
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina <em>PREFIX</em> is not specified, it defaults to
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina <code>/usr/local/apache2</code>.</p>
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina <p>Each section of the compilation and installation process is
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina described in more detail below, beginning with the requirements
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina for compiling and installing Apache HTTPD.</p>
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina
439e08cdc5c83b3e5835cb0435983f1da2ffbaf1Pavel Březina <h3><a id="requirements"
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina name="requirements">Requirements</a></h3>
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina <p>The following requirements exist for building Apache:</p>
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina <ul>
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina <li>Disk Space<br />
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina <br />
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina Make sure you have at least 50 MB of temporary free disk
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina space available. After installation Apache occupies
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina approximately 10 MB of disk space. The actual disk space
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina requirements will vary considerably based on your chosen
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina configuration options and any third-party modules.<br />
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina <br />
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina </li>
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina <li>ANSI-C Compiler and Build System<br />
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina <br />
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina Make sure you have an ANSI-C compiler installed. The <a
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina href="http://www.gnu.org/software/gcc/gcc.html">GNU C
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina compiler (GCC)</a> from the <a
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina href="http://www.gnu.org/">Free Software Foundation (FSF)</a>
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina is recommended (version 2.7.2 is fine). If you don't have GCC
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina then at least make sure your vendor's compiler is ANSI
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina compliant. In addition, your <code>PATH</code> must contain
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina basic build tools such as <code>make</code>.<br />
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina <br />
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina </li>
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina <li>Accurate time keeping<br />
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina <br />
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina Elements of the HTTP protocol are expressed as the time of
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina day. So, it's time to investigate setting some time
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina synchronization facility on your system. Usually the ntpdate
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina or xntpd programs are used for this purpose which are based
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina on the Network Time Protocol (NTP). See the Usenet newsgroup
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina <a
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina href="news:comp.protocols.time.ntp">comp.protocols.time.ntp</a>
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina and the <a href="http://www.eecis.udel.edu/~ntp/">NTP
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina homepage</a> for more details about NTP software and public
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina time servers.<br />
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina <br />
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina </li>
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina <li><a href="http://www.perl.org/">Perl 5</a>
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina [OPTIONAL]<br />
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina <br />
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina For some of the support scripts like <a
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina href="programs/apxs.html">apxs</a> or <a
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina href="programs/dbmmanage.html">dbmmanage</a> (which are
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina written in Perl) the Perl 5 interpreter is required (versions
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina 5.003 and 5.004 are fine). If no such interpreter is found by
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina the `configure' script there is no harm. Of course, you still
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina can build and install Apache 2.0. Only those support scripts
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina cannot be used. If you have multiple Perl interpreters
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina installed (perhaps a Perl 4 from the vendor and a Perl 5 from
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina your own), then it is recommended to use the --with-perl
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina option (see below) to make sure the correct one is selected
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina by /configure.<br />
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina <br />
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina </li>
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina </ul>
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina <h3><a id="download" name="download">Download</a></h3>
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina <p>Apache can be downloaded from the <a
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina href="http://www.apache.org/dist/httpd/">Apache Software
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina Foundation download site</a> or from a <a
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina href="http://www.apache.org/dyn/closer.cgi/httpd/">nearby
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina mirror</a>.</p>
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina <p>Version numbers that end in <code>alpha</code> indicate
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina early pre-test versions which may or may not work. Version
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina numbers ending in <code>beta</code> indicate more reliable
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina releases that still require further testing or bug fixing. If
439e08cdc5c83b3e5835cb0435983f1da2ffbaf1Pavel Březina you wish to download the best available production release of
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina the Apache HTTP Server, you should choose the latest version
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina with neither <code>alpha</code> nor <code>beta</code> in its
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina filename.</p>
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina <p>After downloading, especially if a mirror site is used, it
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina is important to verify that you have a complete and unmodified
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina version of the Apache HTTP Server. This can be accomplished by
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina testing the downloaded tarball against the PGP signature. This,
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina in turn, is a two step procedure. First, you must obtain the
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina <code>KEYS</code> file from the <a
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina href="http://www.apache.org/dist/httpd/">Apache distribution
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina site</a>. (To assure that the <code>KEYS</code> file itself has
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina not been modified, it may be a good idea to use a file from a
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina previous distribution of Apache or import the keys from a
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina public key server.) The keys are imported into your personal
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina key ring using one of the following commands (depending on your
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina pgp version):</p>
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina <blockquote>
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina <code>$ pgp &lt; KEYS</code>
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina </blockquote>
439e08cdc5c83b3e5835cb0435983f1da2ffbaf1Pavel Březina or
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina <blockquote>
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina <code>$ gpg --import KEYS</code>
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina </blockquote>
83a79d93035c2d75a1941f3b54426119174044a0Pavel Březina
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina <p>The next step is to test the tarball against the PGP
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina signature, which should always be obtained from the <a
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina href="http://www.apache.org/dist/httpd/">main Apache
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina website</a>. The signature file has a filename identical to the
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina source tarball with the addition of <code>.asc</code>. Then you
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina can check the distribution with one of the following commands
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina (again, depending on your pgp version):</p>
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina <blockquote>
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina <code>$ pgp httpd-2_0_<em>NN</em>.tar.gz.asc</code>
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina </blockquote>
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina or
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina <blockquote>
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina <code>$ gpg --verify httpd-2_0_<em>NN</em>.tar.gz.asc</code>
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina </blockquote>
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina You should receive a message like<br />
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina <br />
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina <blockquote>
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina <code>Good signature from user "Martin Kraemer
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina &lt;martin@apache.org&gt;".</code>
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina </blockquote>
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina <p>Depending on the trust relationships contained in your key
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina ring, you may also receive a message saying that the
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina relationship between the key and the signer of the key cannot
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina be verified. This is not a problem if you trust the
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina authenticity of the <code>KEYS</code> file.</p>
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina <h3><a id="extract" name="extract">Extract</a></h3>
439e08cdc5c83b3e5835cb0435983f1da2ffbaf1Pavel Březina
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina <p>Extracting the source from the Apache HTTPD tarball is a
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina simple matter of uncompressing, and then untarring:</p>
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina <blockquote>
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina <code>$ gzip -d httpd-2_0_<em>NN</em>.tar.gz<br />
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina $ tar xvf httpd-2_0_<em>NN</em>.tar</code>
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina </blockquote>
439e08cdc5c83b3e5835cb0435983f1da2ffbaf1Pavel Březina
8c256b6708e52b20eb7d294cdd8b19c8615859d2Petr Čech <p>This will create a new directory under the current directory
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina containing the source code for the distribution. You should
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina <code>cd</code> into that directory before proceeding with
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina compiling the server.</p>
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina <h3><a id="configure" name="configure">Configuring the source
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina tree</a></h3>
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina <p>The next step is to configure the Apache source tree for
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina your particular platform and personal requirements. This is
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina done using the script <code>configure</code> included in the
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina root directory of the distribution. (Developers downloading the
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina CVS version of the Apache source tree will need to have
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina <code>autoconf</code> and <code>libtool</code> installed and
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina will need to run <code>buildconf</code> before proceeding with
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina the next steps. This is not necessary for official
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina releases.)</p>
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina <p>To configure the source tree using all the default options,
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina simply type <code>/configure</code>. To change the default
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina options, <code>configure</code> accepts a variety of variables
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina and command line options. Environment variables are generally
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina placed before the <code>/configure</code> command, while other
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina options are placed after. The most important option here is the
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina location prefix where Apache is to be installed later, because
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina Apache has to be configured for this location to work
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina correctly. But there are a lot of other options available for
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina your pleasure.</p>
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina <p>For a short impression of what possibilities you have, here
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina is a typical example which compiles Apache for the installation
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina tree /sw/pkg/apache with a particular compiler and flags plus
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina the two additional modules mod_rewrite and mod_speling for
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina later loading through the DSO mechanism:</p>
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina <blockquote>
a40d9cc11d17d9c3c22a0462cd8c419d1e79ffb8Pavel Březina <code>$ CC="pgcc" CFLAGS="-O2" \<br />
/configure --prefix=/sw/pkg/apache \<br />
--enable-rewrite=shared \<br />
--enable-speling=shared</code>
</blockquote>
<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>
<h4><a id="environment" name="environment">Environment
Variables</a></h4>
<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>
<h4><a id="output" name="output">autoconf Output
Options</a></h4>
<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>
<h4><a id="pathnames" name="pathnames">Pathnames</a></h4>
<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>&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>
<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>
<h4><a id="modules" name="modules">Modules</a></h4>
<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 <a href="mod/mod_so.html">mod_so</a>.
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>
<blockquote>
<code>/configure --enable-dav --enable-info</code>
</blockquote>
<p>or, equivalently,</p>
<blockquote>
<code>/configure --enable-modules="dav info"</code>
</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
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>
<blockquote>
<code>/configure --enable-mods-shared=all
--disable-info</code>
</blockquote>
<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>
<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
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>
<p>Now you can build the various parts which form the Apache
package by simply running the command:</p>
<blockquote>
<code>$ make</code>
</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>
<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>
<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>
<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>
<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>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>
<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>
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>