<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
<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 Apache 1.3</H1>

<P>This document covers compilation and installation of Apache on Unix
systems, using the manual build and install method. If you wish to
use the autoconf-style configure interface, you should instead
read the INSTALL file in the root directory of the Apache source
distribution. For compiling and installation on specific platforms, see</P>
<UL>
<LI><A HREF="windows.html">Using Apache with Microsoft Windows</A>
<LI><A HREF="netware.html">Using Apache with Novell Netware 5</A>
<LI><A HREF="mpeix.html">Using Apache with HP MPE/iX</A>
<LI><A HREF="unixware.html">Compiling Apache under UnixWare</A>
<LI><A HREF="readme-tpf.html">Overview of the Apache TPF Port</A>
</UL>

<H2>Downloading Apache</H2>

Information on the latest version of Apache can be found on the Apache
web server at <A
HREF="http://www.apache.org/">http://www.apache.org/</A>.  This will
list the current release, any more recent beta-test release, together
with details of mirror web and anonymous ftp sites.

<P>

If you downloaded a binary distribution, skip to <A
HREF="#install">Installing Apache</A>. Otherwise read the next section
for how to compile the server.

<H2>Compiling Apache</H2>

Compiling Apache consists of three steps: Firstly select which Apache
<STRONG>modules</STRONG> you want to include into the server. Secondly create a
configuration for your operating system. Thirdly compile the
executable.
<P>

All configuration of Apache is performed in the <CODE>src</CODE>
directory of the Apache distribution. Change into this directory.

<OL>
 <LI>
  Select modules to compile into Apache in the
  <CODE>Configuration</CODE> file. Uncomment lines corresponding to
  those optional modules you wish to include (among the AddModule lines
  at the bottom of the file), or add new lines corresponding to
  additional modules you have downloaded or written. (See <A
  HREF="misc/API.html">API.html</A> for preliminary docs on how to
  write Apache modules).  Advanced users can comment out some of the
  default modules if they are sure they will not need them (be careful
  though, since many of the default modules are vital for the correct
  operation and security of the server).
  <P>

  You should also read the instructions in the <CODE>Configuration</CODE>
  file to see if you need to set any of the <CODE>Rule</CODE> lines.


 <LI>
  Configure Apache for your operating system. Normally you can just
  run the <CODE>Configure</CODE> script as given below. However
  if this fails or you have any special requirements (<EM>e.g.</EM>, to include
  an additional library required by an optional module) you might need
  to edit one or more of the following options in the
  <CODE>Configuration</CODE> file:
    <CODE>EXTRA_CFLAGS, LIBS, LDFLAGS, INCLUDES</CODE>.
  <P>

  Run the <CODE>Configure</CODE> script:
  <BLOCKQUOTE>
   <PRE>
    % Configure
    Using 'Configuration' as config file
     + configured for &lt;whatever&gt; platform
     + setting C compiler to &lt;whatever&gt; *
     + setting C compiler optimization-level to &lt;whatever&gt; *
     + Adding selected modules
     + doing sanity check on compiler and options
    Creating Makefile in support
    Creating Makefile in main
    Creating Makefile in os/unix
    Creating Makefile in modules/standard
   </PRE>
  </BLOCKQUOTE>

  (*: Depending on Configuration and your system, Configure
  might not print these lines. That's OK).<P>

  This generates a Makefile for use in stage 3. It also creates a
  Makefile in the support directory, for compilation of the optional
  support programs.
  <P>

  (If you want to maintain multiple configurations, you can give an
  option to <CODE>Configure</CODE> to tell it to read an alternative
  Configuration file, such as <CODE>Configure -file
  Configuration.ai</CODE>).
  <P>

 <LI>
  Type <CODE>make</CODE>.
</OL>

The modules we place in the Apache distribution are the ones we have
tested and are used regularly by various members of the Apache
development group.  Additional modules contributed by members or third
parties with specific needs or functions are available at
&lt;<A HREF="http://www.apache.org/dist/httpd/contrib/modules/"
    >http://www.apache.org/dist/httpd/contrib/modules/</A>&gt;.
There are instructions on that page for linking these modules into the
core Apache code.

<H2><A NAME="install">Installing Apache</A></H2>

You will have a binary file called <CODE>httpd</CODE> in the
<CODE>src</CODE> directory.  A binary distribution of Apache will
supply this file.  <P>

The next step is to install the program and configure it. Apache is
designed to be configured and run from the same set of directories
where it is compiled. If you want to run it from somewhere else, make
a directory and copy the <CODE>conf</CODE>, <CODE>logs</CODE> and
<CODE>icons</CODE> directories into it.  In either case you should
read the <A HREF="misc/security_tips.html#serverroot">security tips</A>
describing how to set the permissions on the server root directory.<P>

The next step is to edit the configuration files for the server. This
consists of setting up various <STRONG>directives</STRONG> in up to three
central configuration files. By default, these files are located in
the <CODE>conf</CODE> directory and are called <CODE>srm.conf</CODE>,
<CODE>access.conf</CODE> and <CODE>httpd.conf</CODE>.  To help you get
started there are same files in the <CODE>conf</CODE> directory of the
distribution, called <CODE>srm.conf-dist</CODE>,
<CODE>access.conf-dist</CODE> and <CODE>httpd.conf-dist</CODE>. Copy
or rename these files to the names without the <CODE>-dist</CODE>.
Then edit each of the files. Read the comments in each file carefully.
Failure to setup these files correctly could lead to your server not
working or being insecure. You should also have an additional file in
the <CODE>conf</CODE> directory called <CODE>mime.types</CODE>. This
file usually does not need editing.

<P>

First edit <CODE>httpd.conf</CODE>.  This sets up general attributes
about the server: the port number, the user it runs as, <EM>etc.</EM>  Next
edit the <CODE>srm.conf</CODE> file; this sets up the root of the
document tree, special functions like server-parsed HTML or internal
imagemap parsing, <EM>etc.</EM>  Finally, edit the <CODE>access.conf</CODE>
file to at least set the base cases of access.

<P>

In addition to these three files, the server behavior can be configured
on a directory-by-directory basis by using <CODE>.htaccess</CODE>
files in directories accessed by the server.

<H3>Set your system time properly!</H3>

Proper operation of a public web server requires accurate time
keeping, since elements of the HTTP protocol are expressed as the time
of day.  So, it's time to investigate setting up NTP or some other
time synchronization system on your Unix box, or whatever the
equivalent on NT would be.

<H2>Compiling Support Programs</H2>

In addition to the main <CODE>httpd</CODE> server which is compiled
and configured as above, Apache includes a number of support programs.
These are not compiled by default. The support programs are in the
<CODE>support</CODE> directory of the distribution. To compile
the support programs, change into this directory and type
<PRE>
    make
</PRE>

<!--#include virtual="footer.html" -->
</BODY>
</HTML>
