Starting Apache
Invoking Apache
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.
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/etc/httpd
.
-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
.
-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 then exit.
-h
- Give a list of directives together with expected arguments and
places where the directive is valid. (New in Apache 1.2)
-l
- Give a list of all modules compiled into the server.
-?
- Print a list of the httpd options, and then exit.
Configuration files
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
ServerRoot directive, or the
-d
command line flag.
Conventionally, the files are:
conf/httpd.conf
- Contains directives that control the operation of the server daemon.
The filename may be overridden with the
-f
command line flag.
conf/srm.conf
- Contains directives that control the specification of documents that
the server can provide to clients. The filename may be overridden with
the ResourceConfig directive.
conf/access.conf
- Contains directives that control access to documents.
The filename may be overridden with the
AccessConfig directive.
However, these conventions need not be adhered to.
The server also reads a file containing mime document types; the filename
is set by the TypesConfig directive,
and is conf/mime.types
by default.
Log files
security warning
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 NOT give people write
access to the directory the logs are stored in without being aware of
the consequences; see the security tips
document for details.
pid file
On daemon startup, it saves the process id of the parent httpd process to
the file logs/httpd.pid
. This filename can be changed with the
PidFile 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 Stopping and Restarting page.
If the process dies (or is killed) abnormally, then it will be necessary to
kill the children httpd processes.
Error log
The server will log error messages to a log file, logs/error_log
by default. The filename can be set using the
ErrorLog directive; different error logs can
be set for different virtual hosts.
Transfer log
The server will typically log each request to a transfer file,
logs/access_log
by default. The filename can be set using a
TransferLog directive; different
transfer logs can be set for different virtual
hosts.