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

<h2>Invoking Apache</h2>
The <code>httpd</code> program is usually run as a daemon which executes
continuously, handling requests.  It is possible to invoke Apache by
the Internet daemon <code>inetd</code> each time a connection to the HTTP 
service is made (use the 
<A HREF="mod/core.html#servertype">ServerType</A> directive)
but this is not recommended.  

<h2>Command line options</h2>
The following options are recognized on the httpd command line:
<dl>
<dt><code>-d</code> <em>serverroot</em>
<dd>Set the initial value for the
<A HREF="mod/core.html#serverroot">ServerRoot</A> variable to
<em>serverroot</em>. This can be overridden by the ServerRoot command in the
configuration file. The default is <code>/usr/local/etc/httpd</code>.

<dt><code>-f</code> <em>config</em>
<dd>Execute the commands in the file <em>config</em> on startup. If
<em>config</em> does not begin with a <code>/</code>, then it is taken to be a
path relative to the <A HREF="mod/core.html#serverroot">ServerRoot</A>. The
default is <code>conf/httpd.conf</code>.

<dt><code>-X</code>
<dd>Run in single-process mode, for internal debugging purposes only; the
daemon does not detach from the terminal or fork any children. Do <em>NOT</em>
use this mode to provide ordinary web service.

<dt><code>-v</code>
<dd>Print the version of httpd, and then exit.

<dt><a name="help"><code>-h</code></a>
<dd>Give a list of directives together with expected arguments and
places where the directive is valid. (New in Apache 1.2)

<dt><code>-l</code>
<dd>Give a list of all modules compiled into the server.

<dt><code>-?</code>
<dd>Print a list of the httpd options, and then exit.
</dl>

<h2>Configuration files</h2>
The server will read three files for configuration directives. Any directive
may appear in any of these files. The the names of these files are taken
to be relative to the server root; this is set by the
<A HREF="mod/core.html#serverroot">ServerRoot</A> directive, or the
<code>-d</code> command line flag.

Conventionally, the files are:
<dl>
<dt><code>conf/httpd.conf</code>
<dd>Contains directives that control the operation of the server daemon.
The filename may be overridden with the <code>-f</code> command line flag.

<dt><code>conf/srm.conf</code>
<dd>Contains directives that control the specification of documents that
the server can provide to clients. The filename may be overridden with
the <A HREF="mod/core.html#resourceconfig">ResourceConfig</A> directive.

<dt><code>conf/access.conf</code>
<dd>Contains directives that control access to documents.
The filename may be overridden with the
<A HREF="mod/core.html#accessconfig">AccessConfig</A> directive.
</dl>
However, these conventions need not be adhered to.
<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>conf/mime.types</code> by default.

<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>
On daemon startup, it 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;
A HUP or USR1 signal causes the daemon to re-read its configuration files and
a TERM signal causes it to die gracefully.  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>
The server will log error messages to a log file, <code>logs/error_log</code>
by default. 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>
The server will typically log each request to a transfer file,
<code>logs/access_log</code> by default. The filename can be set using a
<A HREF="mod/mod_log_common.html#transferlog">TransferLog</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>
