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

<H2>Main Configuration Files</H2>

<P>Apache is configured by placing <A HREF="mod/directives.html"
>directives</A> in plain text configuration files.  The main
configuration file is usually called <CODE>httpd.conf</CODE>.  The
location of this file is set at compile-time, but may be overridden
with the <CODE>-f</CODE> command line flag.  Some sites also have
<CODE>srm.conf</CODE> and <CODE>access.conf</CODE> files for <A
HREF="http://www.apache.org/info/three-config-files.html">historical
reasons</A>.  In addition, other configuration files may be added using
the <CODE><A HREF="mod/core.html#include">Include</A></CODE>
directive.  Any directive may be placed in any of these configuration
files.  Changes to the main configuration files are only recognized by
Apache when it is started or restarted.

<P>
The server also reads a file containing mime document types; the
filename is set by the <A HREF="mod/mod_mime.html#typesconfig"
>TypesConfig</A> directive, and is <CODE>mime.types</CODE> by default.

<H2>Syntax of the Configuration Files</H2>

<P>Directives in the configuration files are case-insensitive, but
arguments to directives are often case sensitive.  Lines which begin
with the hash character "#" are considered comments, and are ignored.
Comments may <STRONG>not</STRONG> be included on a line after a configuration
directive.  White space occurring before a directive
is ignored, so you may indent directives for clarity.

<P>You can check your configuration files for syntax errors without
starting the server by using <CODE>apachectl configtest</CODE>
or the <CODE>-t</CODE> command line option.

<H2>Modules</H2>

<P>Apache is a modular server.  This implies that only the most basic
functionality is included in the core server.  Extended features are
available through <A HREF="mod/index-bytype.html">modules</A> which can
be loaded into Apache.  By default, a <A
HREF="mod/directive-dict.html#Status">base</A> set of modules is
included in the server at compile-time.  If the server is compiled to
use <A HREF="dso.html">dynamically loaded</A> modules, then modules
can be compiled separately and added at any time using the <A
HREF="mod/mod_so.html#loadmodule">LoadModule</A> directive.
Otherwise, apache must be recompiled to add or remove modules.

<P>To see which modules are currently compiled into the server,
you can use the <CODE>-l</CODE> command line option.

<H2>Scope of Directives</H2>

<P>Directives placed in the main configuration files apply to the entire
server.  If you wish to change the configuration for only a part of
the server, you can scope your directives by placing them in 
<CODE><A HREF="mod/core.html#directory">&lt;Directory&gt;</A>,
<A HREF="mod/core.html#directorymatch">&lt;DirectoryMatch&gt;</A>,
<A HREF="mod/core.html#files">&lt;Files&gt;</A>,
<A HREF="mod/core.html#filesmatch">&lt;FilesMatch&gt;</A>,
<A HREF="mod/core.html#location">&lt;Location&gt;</A>,
</CODE> and <CODE>
<A HREF="mod/core.html#locationmatch">&lt;LocationMatch&gt;</A>
</CODE>
sections.  These sections limit the application of the directives
which they enclose to particular filesystem locations or URLs.  They
can also be nested, allowing for very fine grained configuration.

<P>Apache has the capability to serve many different websites
simultaneously.  This is called <A HREF="vhosts/">Virtual Hosting</A>.
Directives can also be scoped by placing them inside
<CODE><A HREF="mod/core.html#virtualhost">&lt;VirtualHost&gt;</A></CODE>
sections, so that they will only apply to requests for a particular
website.

<P>Although most directives can be placed in any of these sections,
some directives do not make sense in some contexts.  For example,
directives controlling process creation can only be placed in the main
server context.  To find which directives can be placed in which
sections, check the <A
HREF="mod/directive-dict.html#Context">Context</A> of the directive.
For further information, we provide details on <A
HREF="sections.html">How Directory, Location and Files sections
work</A>.

<H2>.htaccess Files</H2>

<P>Apache allows for decentralized management of configuration via
special files placed inside the web tree.  The special files are
usually called <CODE>.htaccess</CODE>, but any name can be specified
in the <A HREF="mod/core.html#accessfilename"><CODE
>AccessFileName</CODE></A> directive.  Directives placed in
<CODE>.htaccess</CODE> files apply to the directory where you place
the file, and all sub-directories.  The <CODE>.htaccess</CODE> files
follow the same syntax as the main configuration files.  Since
<CODE>.htaccess</CODE> files are read on every request, rather than
only at server startup, changes made in these files take immediate
effect.

<P>To find which directives can be placed in <CODE>.htaccess</CODE>
files, check the <A HREF="mod/directive-dict.html#Context">Context</A>
of the directive.  The server administrator further controls what
directives may be placed in <CODE>.htaccess</CODE> files by
configuring the <A
HREF="mod/core.html#allowoverride"><CODE>AllowOverride</CODE></A>
directive in the main configuration files.

<H2>Log files</H2>
<H3>security warning</H3>
Anyone who can write to the directory where Apache is writing a
log file can almost certainly gain access to the uid that the server is
started as, which is normally root.  Do <EM>NOT</EM> give people write
access to the directory the logs are stored in without being aware of
the consequences; see the <A HREF="misc/security_tips.html">security tips</A>
document for details.

<H3>pid file</H3>

<P>On startup, Apache saves the process id of the parent httpd process to
the file <CODE>logs/httpd.pid</CODE>. This filename can be changed
with the <A HREF="mod/core.html#pidfile">PidFile</A> directive. The
process-id is for use by the administrator in restarting and
terminating the daemon: on Unix, a HUP or USR1 signal causes the
daemon to re-read its configuration files and a TERM signal causes it
to die gracefully; on Windows, use the -k command line option instead.
For more information see the <A HREF="stopping.html">Stopping and
Restarting</A> page.

<P>
If the process dies (or is killed) abnormally, then it will be necessary to
kill the children httpd processes.

<H3>Error log</H3>

<P>The server will log error messages to a log file, by default
<CODE>logs/error_log</CODE> on Unix or <CODE>logs/error.log</CODE> on
Windows and OS/2. The filename can be set using the <A
HREF="mod/core.html#errorlog">ErrorLog</A> directive; different error
logs can be set for different <A
HREF="mod/core.html#virtualhost">virtual hosts</A>.

<H3>Transfer log</H3>

<P>The server will typically log each request to a transfer file, by
default <CODE>logs/access_log</CODE> on Unix or
<CODE>logs/access.log</CODE> on Windows and OS/2. The filename can be
set using a <A HREF="mod/mod_log_config.html#customlog">CustomLog</A>
directive; different transfer logs can be set for different <A
HREF="mod/core.html#virtualhost">virtual hosts</A>.


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