<!--%hypertext -->
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<HTML>
<HEAD>
<TITLE>Starting Apache</TITLE>
</HEAD>

<BODY>
<!--/%hypertext -->

<h1>Starting Apache</h1>
<h2>Invoking Apache</h2>
The <code>httpd</code> program is either invoked by the Internet 
daemon <code>inetd</code> each time a connection to the HTTP service is made,
or alternatively it may run as a daemon which executes continuously, handling
requests. Whatever method is chosen, the
<A HREF="core.html#servertype">ServerType</A> directive must be set
to tell the server how it is to run.

<h2>Command line options</h2>
The following options are recognised on the httpd command line:
<dl>
<dt><code>-d</code> <em>serverroot</em>
<dd>Set the initial value for the
<A HREF="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="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><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="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="core.html#resourceconfig">ResourceConfig</A> directive.

<dt><code>conf/acces.conf</code>
<dd>Contains directives that control access to documents.
The filename may be overridden with the
<A HREF="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_mime.html#typesconfig">TypesConfig</A> directive,
and is <code>conf/mime.types</code> by default.

<h2>Log files</h2>
<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="core.html#pidfile">PidFile</A> directive. The process-id is for
use by the administrator in restarting and terminating the daemon;
A HUP signal causes the daemon to re-read its configuration files and
a TERM signal causes it to die gracefully.
<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="core.html#errorlog">ErrorLog</A> directive; different error logs can
be set for different <A HREF="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_log_common.html#transferlog">TransferLog</A> directive; different
transfer logs can be set for different <A HREF="core.html#virtualhost">virtual
hosts</A>.

<!--%hypertext -->
<hr>
<A HREF="../"><IMG SRC="../images/apache_home.gif" ALT="Home"></A>
<A HREF="./"><IMG SRC="../images/apache_index.gif" ALT="Index"></A>

</BODY>
</HTML>
<!--/%hypertext -->
