# Starting Apache

## Invoking Apache

On Unix, the `httpd` program is usually run as a daemon which executes continuously, handling requests. It is possible to invoke Apache by the Internet daemon `inetd` each time a connection to the HTTP service is made (use the ServerType directive) but this is not recommended.

On Windows, Apache is normally run as a service on Windows NT, or as a console application on Windows 95. See also running Apache for Windows.

## Command line options

The following options are recognized on the httpd command line:

`-d` serverroot
  Set the initial value for the ServerRoot variable to serverroot. This can be overridden by the ServerRoot command in the configuration file. The default is `/usr/local/apache` on Unix, `/apache` on Windows and `/os2httpd` on OS/2.
`-D` name
  Define a name for use in in IfDefine 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 <IfDefine> sections.
`-f` config
  Execute the commands in the file config on startup. If config does not begin with a `/`, then it is taken to be a path relative to the ServerRoot. The default is `conf/httpd.conf`.
`-C` "directive"
  Process the given apache "directive" (just as if it had been part of a configuration file) before actually reading the regular configuration files.
`-c` "directive"
  Process the given apache "directive" after reading all the regular configuration files.
`-X`
  Run in single-process mode, for internal debugging purposes only; the daemon does not detach from the terminal or fork any children. Do NOT use this mode to provide ordinary web service.
`-v`
  Print the version of httpd and its build date, and then exit.
`-V`
  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 (e.g., `-DUSE_MMAP_FILES`), then exit.
`-L`
  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).
`-l`
  Give a list of all modules compiled into the server, then exit. (Apache 1.3.4 and later. Earlier versions used -h instead).
  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).
`-h`
  Print a list of the httpd options, then exit. (Apache 1.3.4 and later. Earlier versions used -? instead).
  Give a list of all modules compiled into the server, then exit. (Up to Apache 1.3.3. Later versions use -l instead).
`-S`
  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).
`-t`
  Test the configuration file syntax (i.e., 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 `-T` command instead.
`-T`
  Test the configuration file syntax (i.e., 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.
`-k` option
  Windows only: signal Apache to restart or shutdown. option is one of "shutdown" or "restart". (Apache 1.3.3 and later).
`-?`
  Print a list of the httpd options, and then exit (up to Apache 1.3.3. Later version use -h instead).