<!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>

On Unix, 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.

<P>

On Windows, Apache is normally run as a service on Windows NT, or as a
console application on Windows 95. See also <A
HREF="windows.html#run">running Apache for Windows</A>.

<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/apache</CODE> on Unix, <CODE>/apache</CODE> on
Windows and <CODE>/os2httpd</CODE> on OS/2.

<DT><CODE>-D</CODE> <EM>name</EM>
<DD>Define a name for use in in 
<A HREF="mod/core.html#ifdefine">IfDefine</A> directives.
This option can be used to optionally enable certain functionality in the
configuration file, or to use a common configuration for
several independent hosts, where host specific information is enclosed in
&lt;IfDefine&gt; sections.

<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>-C</CODE> <EM>"directive"</EM>
<DD>Process the given apache "directive" (just as if it had been part of a
configuration file) <STRONG>before</STRONG> actually reading the regular configuration files.

<DT><CODE>-c</CODE> <EM>"directive"</EM>
<DD>Process the given apache "directive" <STRONG>after</STRONG> reading
all the regular configuration files.

<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 its build date, and then exit.

<DT><A NAME="version"><CODE>-V</CODE></A>
<DD>Print the base version of httpd, its
build date, and a list of compile time settings which influence the
behavior and performance of the apache server (<EM>e.g.</EM>,
<SAMP>-DUSE_MMAP_FILES</SAMP>),
then exit.

<DT><A NAME="help"><CODE>-L</CODE></A>
<DD>

Give a list of directives together with expected arguments and places
where the directive is valid, then exit.  (Apache 1.3.4 and
later. Earlier versions used -l instead).


<DT><CODE>-l</CODE></A>
<DD>

Give a list of all modules compiled into the server, then exit.
(Apache 1.3.4 and later. Earlier versions used -h instead).<br>

Give a list of directives together with expected arguments and places
where the directive is valid, then exit. (Apache 1.2 to 1.3.3. Later
versions use -L instead).



<DT><CODE>-h</CODE>
<DD>

Print a list of the httpd options, then exit. (Apache 1.3.4 and
later. Earlier versions used -? instead).<br>

Give a list of all modules compiled into the server, then exit. (Up to
Apache 1.3.3. Later versions use -l instead).<br>


<DT><CODE>-S</CODE>
<DD>Show the settings as parsed from the config file (currently only
shows a breakdown of the vhost settings) but do not start the
server. (Up to Apache 1.3.3, this option also started the server).

<DT><CODE>-t</CODE>
<DD>Test the configuration file syntax (<EM>i.e.</EM>, read all configuration files
and interpret them) but do not start the server. If the configuration contains
errors, display an error message and exit with a non-zero exit status,
otherwise display "Syntax OK" and terminate with a zero exit status. This
command checks to see if all DocumentRoot entries exist and are directories.
For sites with many vhosts, this is expensive; consider the <CODE>-T</CODE>
command instead.

<DT><CODE>-T</CODE>
<DD>Test the configuration file syntax (<EM>i.e.</EM>, read all configuration files
and interpret them) but do not start the server. If the configuration contains
errors, display an error message and exit with a non-zero exit status,
otherwise display "Syntax OK" and terminate with a zero exit status. This
command does not perform any checking of the DocumentRoot entries.

<DT><CODE>-k</CODE> <EM>option</EM>
<DD>Windows only: signal Apache to restart or shutdown. <EM>option</EM> 
is one of "shutdown" or "restart". (Apache 1.3.3 and later).

<DT><CODE>-?</CODE>
<DD>Print a list of the httpd options, and then exit (up to Apache
1.3.3. Later version use -h instead).

</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, the
<CODE>-d</CODE> command line flag, or (on Windows only) the registry
(see <A HREF="windows.html#run">Running Apache for Windows</A>).

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 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>

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>

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#transferlog">TransferLog</A> directive
or additional log files created with the <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>
