<!-- $LastChangedRevision$ -->
<!--
- Copyright 2002-2005 The Apache Software Foundation or its licensors, as
- applicable.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
<summary>
- <p>This document covers compilation and installation of Apache
+ <p>This document covers compilation and installation of the Apache HTTP Server
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/windows.html">Using Apache HTTP Server with Microsoft
+ Windows</a> and <a
+ href="platform/win_compiling.html">Compiling Apache for Microsoft Windows</a>.
+ For other platforms, see the <a
href="platform/">platform</a> documentation.</p>
<p>Apache httpd uses <code>libtool</code> and <code>autoconf</code>
projects.</p>
<p>If you are upgrading from one minor version to the next (for
- example, 2.2.50 to 2.2.51), please skip down to the <a
+ example, 2.4.8 to 2.4.9), please skip down to the <a
href="#upgrading">upgrading</a> section.</p>
</summary>
<seealso><a href="programs/configure.html">Configure the source tree</a></seealso>
-<seealso><a href="invoking.html">Starting Apache</a></seealso>
+<seealso><a href="invoking.html">Starting Apache httpd</a></seealso>
<seealso><a href="stopping.html">Stopping and Restarting</a></seealso>
<section id="overview"><title>Overview for the
<td><a href="#extract">Extract</a></td>
<td><code>$ gzip -d httpd-<em>NN</em>.tar.gz<br />
- $ tar xvf httpd-<em>NN</em>.tar</code><br />
- $ cd httpd-<em>NN</em></td>
+ $ tar xvf httpd-<em>NN</em>.tar<br />
+ $ cd httpd-<em>NN</em></code></td>
</tr>
<tr>
<section id="requirements"><title>Requirements</title>
- <p>The following requirements exist for building Apache:</p>
+ <p>The following requirements exist for building Apache httpd:</p>
<dl>
+ <dt>APR and APR-Util</dt>
+ <dd>Make sure you have APR and APR-Util already installed on
+ your system. If you don't, or prefer to not use the system-provided
+ versions, download the latest versions of both APR and APR-Util
+ from <a href="http://apr.apache.org/">Apache APR</a>, unpack
+ them into <code>./srclib/apr</code> and <code>./srclib/apr-util</code>
+ (be sure the directory names do not have version numbers; for example,
+ the APR distribution must be under ./srclib/apr/) and use
+ <code>./configure</code>'s <code>--with-included-apr</code>
+ option. On some platforms, you may have to install the
+ corresponding <code>-dev</code> packages to allow httpd to build
+ against your installed copy of APR and APR-Util.</dd>
+
+ <dt>Perl-Compatible Regular Expressions Library (PCRE)</dt>
+ <dd>This library is required but not longer bundled with httpd.
+ Download the source code from <a href="http://www.pcre.org/">http://www.pcre.org</a>,
+ or install a Port or Package. If your build system can't find
+ the pcre-config script installed by the PCRE build, point to it
+ using the <code>--with-pcre</code> parameter. On some platforms,
+ you may have to install the corresponding <code>-dev</code>
+ package to allow httpd to build against your installed copy
+ of PCRE.</dd>
+
<dt>Disk Space</dt>
<dd>Make sure you have at least 50 MB of temporary free disk
- space available. After installation Apache occupies
+ space available. After installation the server 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.</dd>
+ configuration options, any third-party modules, and, of course,
+ the size of the web site or sites that you have on the server.</dd>
<dt>ANSI-C Compiler and Build System</dt>
<dd>Make sure you have an ANSI-C compiler installed. The <a
- href="http://www.gnu.org/software/gcc/gcc.html">GNU C
+ href="http://gcc.gnu.org/">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
+ is recommended. 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>.</dd>
<dd>For some of the support scripts like <program>
apxs</program> or <program>dbmmanage</program> (which are
written in Perl) the Perl 5 interpreter is required (versions
- 5.003 or newer are sufficient). If you have multiple Perl
- interpreters (for example, a systemwide install of Perl 4, and
- your own install of Perl 5), you are advised to use the
- <code>--with-perl</code> option (see below) to make sure the
+ 5.003 or newer are sufficient). If you have multiple Perl
+ interpreters (for example, a systemwide install of Perl 4, and
+ your own install of Perl 5), you are advised to use the
+ <code>--with-perl</code> option (see below) to make sure the
correct one is used by <program>configure</program>.
- If no Perl 5 interpreter is found by the
- <program>configure</program> script, you will not be able to use
- the affected support scripts. Of course, you will still be able to
+ If no Perl 5 interpreter is found by the
+ <program>configure</program> script, you will not be able to use
+ the affected support scripts. Of course, you will still be able to
build and use Apache httpd.</dd>
</dl>
</section>
<section id="extract"><title>Extract</title>
- <p>Extracting the source from the Apache HTTPD tarball is a
+ <p>Extracting the source from the Apache HTTP Server tarball is a
simple matter of uncompressing, and then untarring:</p>
<example>
<p>Also at this point, you can specify which <a
href="programs/configure.html#optionalfeatures">features</a> you
want included in Apache by enabling and disabling <a
- href="mod/">modules</a>. Apache comes with a <a
- href="mod/module-dict.html#Status">Base</a> set of modules included by
- default. Other modules are enabled using the
+ href="mod/">modules</a>. Apache comes with a wide range of modules
+ included by default. They will be compiled as
+ <a href="dso.html">shared objects (DSOs)</a> which can be loaded
+ or unloaded at runtime.
+ You can also choose to compile modules statically by using the option
+ <code>--enable-<var>module</var>=static</code>.</p>
+
+ <p>Additional modules are enabled using the
<code>--enable-<var>module</var></code> option, where
<var>module</var> is the name of the module with the
<code>mod_</code> string removed and with any underscore converted
- to a dash. You can also choose to compile modules as <a
- href="dso.html">shared objects (DSOs)</a> -- which can be loaded
- or unloaded at runtime -- by using the option
- <code>--enable-<var>module</var>=shared</code>. Similarly, you can
- disable Base modules with the
+ to a dash. Similarly, you can disable modules with the
<code>--disable-<var>module</var></code> option. Be careful when
using these options, since <program>configure</program> cannot warn you
if the module you specify does not exist; it will simply ignore the
location of your compiler, libraries, or header files. This is
done by passing either environment variables or command line
options to <program>configure</program>. For more information, see the
- <program>configure</program> manual page.</p>
+ <program>configure</program> manual page. Or invoke
+ <program>configure</program> using the <code>--help</code> option.</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 <module>mod_rewrite</module> and
- <module>mod_speling</module> for
- later loading through the DSO mechanism:</p>
+ plus the two additional modules <module>mod_ldap</module> and
+ <module>mod_lua</module>:</p>
<example>
$ CC="pgcc" CFLAGS="-O2" \<br />
./configure --prefix=/sw/pkg/apache \<br />
- --enable-rewrite=shared \<br />
- --enable-speling=shared
+ --enable-ldap=shared \<br />
+ --enable-lua=shared
</example>
<p>When <program>configure</program> is run it will take several minutes to
<example>$ make</example>
<p>Please be patient here, since a base configuration takes
- serveral minutes to compile and the time will vary widely
+ several minutes to compile and the time will vary widely
depending on your hardware and the number of modules that you
- have enabled.</p>
+ have enabled.</p>
</section>
<section id="install"><title>Install</title>
<example>$ make install</example>
+ <p>This step will typically require root privileges, since
+ <em>PREFIX</em> is usually a directory with restricted write
+ permissions.</p>
+
<p>If you are upgrading, the installation will not overwrite
your configuration files or documents.</p>
</section>
<example>$ vi <em>PREFIX</em>/conf/httpd.conf</example>
- <p>Have a look at the Apache manual under <a
- href="./">docs/manual/</a> or consult <a
+ <p>Have a look at the Apache manual under
+ <code><em>PREFIX</em>/docs/manual/</code> or consult <a
href="http://httpd.apache.org/docs/&httpd.docs;/"
>http://httpd.apache.org/docs/&httpd.docs;/</a> for the most recent
version of this manual and a complete reference of available <a
<example>$ <em>PREFIX</em>/bin/apachectl -k start</example>
- <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
+ <p>You should then be able to request your first document
+ via the URL <code>http://localhost/</code>. 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
<p>The first step in upgrading is to read the release announcement
and the file <code>CHANGES</code> in the source distribution to
find any changes that may affect your site. When changing between
- major releases (for example, from 1.3 to 2.0 or from 2.0 to 2.2),
+ major releases (for example, from 2.0 to 2.2 or from 2.2 to 2.4),
there will likely be major differences in the compile-time and
run-time configuration that will require manual adjustments. All
- modules will also need to be upgraded to accomodate changes in the
+ modules will also need to be upgraded to accommodate changes in the
module API.</p>
<p>Upgrading from one minor version to the next (for example, from
different port (by adjusting the <directive
module="mpm_common">Listen</directive> directive) to test for any
incompatibilities before doing the final upgrade.</note>
+
+ <p>You can pass additional arguments to <code>config.nice</code>,
+ which will be appended to your original <program>configure</program>
+ options:</p>
+
+ <example>
+ $ ./config.nice --prefix=/home/test/apache --with-port=90
+ </example>
+</section>
+<section id="thirdp"><title>Third-party packages</title>
+
+ <p>A large number of third parties provide their own packaged
+ distributions of the Apache HTTP Server for installation on
+ particular platforms. This includes the various Linux distributions,
+ various third-party Windows packages, Mac OS X, Solaris, and many
+ more.</p>
+
+ <p>Our software license not only permits, but encourages, this kind
+ of redistribution. However, it does result in a situation where the
+ configuration layout and defaults on your installation of the server
+ may differ from what is stated in the documentation. While
+ unfortunate, this situation is not likely to change any time
+ soon.</p>
+
+ <p>A <a
+ href="http://wiki.apache.org/httpd/DistrosDefaultLayout">description
+ of these third-party distrubutions</a> is maintained in the HTTP
+ Server wiki, and should reflect the current state of these
+ third-party distributions. However, you will need to familiarize
+ yourself with your particular platform's package management and
+ installation procedures.</p>
+
</section>
</manualpage>