install.html revision a09d84bf1193be20d9910a8ba5d01e5dff2e2bff
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync<HTML>
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync<HEAD>
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync<TITLE>Compiling and Installing Apache</TITLE>
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync</HEAD>
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync<!-- Background white, links blue (unvisited), navy (visited), red (active) -->
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync<BODY
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync BGCOLOR="#FFFFFF"
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync TEXT="#000000"
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync LINK="#0000FF"
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync VLINK="#000080"
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync ALINK="#FF0000"
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync>
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync<!--#include virtual="header.html" -->
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync<H1 ALIGN="CENTER">Compiling and Installing Apache 1.2</H1>
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync<P>If you wish to download and install an earlier version of Apache please
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncread <A HREF="install_1_1.html">Compiling and Installing Apache 1.1</A>.</P>
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncUnixWare users will want to consult <A HREF="unixware.html">build notes</A>
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncfor various UnixWare versions before compiling.
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync<H2>Downloading Apache</H2>
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncInformation on the latest version of Apache can be found on the Apache
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncweb server at <A
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncHREF="http://www.apache.org/">http://www.apache.org/</A>. This will
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsynclist the current release, any more recent beta-test release, together
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncwith details of mirror web and anonymous ftp sites.
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync<P>
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncIf you downloaded a binary distribution, skip to <A
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncHREF="#install">Installing Apache</A>. Otherwise read the next section
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncfor how to compile the server.
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync<h2>Compiling Apache</h2>
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncCompiling Apache consists of three steps: Firstly select which Apache
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync<b>modules</b> you want to include into the server. Secondly create a
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncconfiguration for your operating system. Thirdly compile the
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncexecutable.
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync<P>
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncAll configuration of Apache is performed in the <CODE>src</CODE>
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsyncdirectory of the Apache distribution. Change into this directory.
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync<OL>
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync <LI>
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync Select modules to compile into Apache in the
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync <CODE>Configuration</CODE> file. Uncomment lines corresponding to
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync those optional modules you wish to include (among the AddModule lines
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync at the bottom of the file), or add new lines corresponding to
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync additional modules you have downloaded or written. (See <A
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync HREF="misc/API.html">API.html</A> for preliminary docs on how to
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync write Apache modules). Advanced users can comment out some of the
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync default modules if they are sure they will not need them (be careful
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync though, since many of the default modules are vital for the correct
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync operation and security of the server).
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync <P>
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync You should also read the instructions in the <CODE>Configuration</CODE>
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync file to see if you need to set any of the <CODE>Rule</CODE> lines.
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync <LI>
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync Configure Apache for your operating system. Normally you can just
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync type run the <CODE>Configure</CODE> script as given below. However
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync if this fails or you have any special requirements (e.g. to include
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync an additional library required by an optional module) you might need
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync to edit one or more of the following options in the
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync <CODE>Configuration</CODE> file:
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync <CODE>EXTRA_CFLAGS, LIBS, LDFLAGS, INCLUDES</CODE>.
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync <P>
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync Run the <CODE>Configure</CODE> script:
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync <BLOCKQUOTE>
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync <PRE>
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync % Configure
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync Using 'Configuration' as config file
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync + configured for &lt;whatever&gt; platform
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync + setting C compiler to &lt;whatever&gt; *
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync + setting C compiler optimization-level to &lt;whatever&gt; *
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync %
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync </PRE>
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync </BLOCKQUOTE>
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync (*: Depending on Configuration and your system, Configure
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync make not print these lines. That's OK).<P>
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync This generates a Makefile for use in stage 3. It also creates a
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync Makefile in the support directory, for compilation of the optional
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync support programs.
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync <P>
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync (If you want to maintain multiple configurations, you can give a
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync option to <CODE>Configure</CODE> to tell it to read an alternative
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync Configuration file, such as <CODE>Configure -file
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync Configuration.ai</CODE>).
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync <P>
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync <LI>
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync 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 <A
HREF="http://www.apache.org/dist/contrib/modules/">&lt;URL:http://www.apache.org/dist/contrib/modules/&gt;</a>.
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. <P>
The next step is to edit the configuration files for the server. This
consists of setting up various <B>directives</B> 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, etc. 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, etc. 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>Starting and Stopping the Server</H3>
To start the server, simply run <CODE>httpd</CODE>. This will look for
<CODE>httpd.conf</CODE> in the location compiled into the code (by
default <CODE>/usr/local/etc/httpd/conf/httpd.conf</CODE>). If
this file is somewhere else, you can give the real
location with the -f argument. For example:
<PRE>
/usr/local/etc/apache/src/httpd -f /usr/local/etc/apache/conf/httpd.conf
</PRE>
If all goes well this will return to the command prompt almost
immediately. This indicates that the server is now up and running. If
anything goes wrong during the initialization of the server you will
see an error message on the screen.
If the server started ok, you can now use your browser to
connect to the server and read the documentation. If you are running
the browser on the same machine as the server and using the default
port of 80, a suitable URL to enter into your browser is
<PRE>
http://localhost/
</PRE>
<P>
Note that when the server starts it will create a number of
<i>child</i> processes to handle the requests. If you started Apache
as the root user, the parent process will continue to run as root
while the children will change to the user as given in the httpd.conf
file.
<P>
If when you run <CODE>httpd</CODE> it complained about being unable to
"bind" to an address, then either some other process is already using
the port you have configured Apache to use, or you are running httpd
as a normal user but trying to use port below 1024 (such as the
default port 80).
<P>
If the server is not running, read the error message displayed
when you run httpd. You should also check the server
error_log for additional information (with the default configuration,
this will be located in the file <CODE>error_log</CODE> in the
<CODE>logs</CODE> directory).
<P>
If you want your server to continue running after a system reboot, you
should add a call to <CODE>httpd</CODE> to your system startup files
(typically <CODE>rc.local</CODE> or a file in an
<CODE>rc.<I>N</I></CODE> directory). This will start Apache as root.
Before doing this ensure that your server is properly configured
for security and access restrictions.
<P>
To stop Apache send the parent process a TERM signal. The PID of this
process is written to the file <CODE>httpd.pid</CODE> in the
<CODE>logs</CODE> directory (unless configured otherwise). Do not
attempt to kill the child processes because they will be renewed by
the parent. A typical command to stop the server is:
<PRE>
kill -TERM `cat /usr/local/etc/apache/logs/httpd.pid`
</PRE>
<P>
For more information about Apache command line options, configuration
and log files, see <A HREF="invoking.html">Starting Apache</A>. For a
reference guide to all Apache directives supported by the distributed
modules, see the <A HREF="mod/directives.html">Apache directives</A>.
<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>