| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> |
| <HTML> |
| <HEAD> |
| <TITLE>Configuring 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">Configuring Apache</H1> |
| |
| <H2>Main Configuration Files</H2> |
| |
| <P>Apache is configured by placing <A HREF="mod/directives.html" |
| >directives</A> in plain text configuration files. The main |
| configuration file is usually called <CODE>httpd.conf</CODE>. The |
| location of this file is set at compile-time, but may be overridden |
| with the <CODE>-f</CODE> command line flag. Some sites also have |
| <CODE>srm.conf</CODE> and <CODE>access.conf</CODE> files for <A |
| HREF="http://www.apache.org/info/three-config-files.html">historical |
| reasons</A>. In addition, other configuration files may be added using |
| the <CODE><A HREF="mod/core.html#include">Include</A></CODE> |
| directive. Any directive may be placed in any of these configuration |
| files. Changes to the main configuration files are only recognized by |
| Apache when it is started or restarted. |
| |
| <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>mime.types</CODE> by default. |
| |
| <H2>Syntax of the Configuration Files</H2> |
| |
| <P>Directives in the configuration files are case-insensitive, but |
| arguments to directives are often case sensitive. Lines which begin |
| with the hash character "#" are considered comments, and are ignored. |
| Comments may <STRONG>not</STRONG> be included on a line after a configuration |
| directive. White space occurring before a directive |
| is ignored, so you may indent directives for clarity. |
| |
| <P>You can check your configuration files for syntax errors without |
| starting the server by using <CODE>apachectl configtest</CODE> |
| or the <CODE>-t</CODE> command line option. |
| |
| <H2>Modules</H2> |
| |
| <P>Apache is a modular server. This implies that only the most basic |
| functionality is included in the core server. Extended features are |
| available through <A HREF="mod/index-bytype.html">modules</A> which can |
| be loaded into Apache. By default, a <A |
| HREF="mod/directive-dict.html#Status">base</A> set of modules is |
| included in the server at compile-time. If the server is compiled to |
| use <A HREF="dso.html">dynamically loaded</A> modules, then modules |
| can be compiled separately and added at any time using the <A |
| HREF="mod/mod_so.html#loadmodule">LoadModule</A> directive. |
| Otherwise, apache must be recompiled to add or remove modules. |
| |
| <P>To see which modules are currently compiled into the server, |
| you can use the <CODE>-l</CODE> command line option. |
| |
| <H2>Scope of Directives</H2> |
| |
| <P>Directives placed in the main configuration files apply to the entire |
| server. If you wish to change the configuration for only a part of |
| the server, you can scope your directives by placing them in |
| <CODE><A HREF="mod/core.html#directory"><Directory></A>, |
| <A HREF="mod/core.html#directorymatch"><DirectoryMatch></A>, |
| <A HREF="mod/core.html#files"><Files></A>, |
| <A HREF="mod/core.html#filesmatch"><FilesMatch></A>, |
| <A HREF="mod/core.html#location"><Location></A>, |
| </CODE> and <CODE> |
| <A HREF="mod/core.html#locationmatch"><LocationMatch></A> |
| </CODE> |
| sections. These sections limit the application of the directives |
| which they enclose to particular filesystem locations or URLs. They |
| can also be nested, allowing for very fine grained configuration. |
| |
| <P>Apache has the capability to serve many different websites |
| simultaneously. This is called <A HREF="vhosts/">Virtual Hosting</A>. |
| Directives can also be scoped by placing them inside |
| <CODE><A HREF="mod/core.html#virtualhost"><VirtualHost></A></CODE> |
| sections, so that they will only apply to requests for a particular |
| website. |
| |
| <P>Although most directives can be placed in any of these sections, |
| some directives do not make sense in some contexts. For example, |
| directives controlling process creation can only be placed in the main |
| server context. To find which directives can be placed in which |
| sections, check the <A |
| HREF="mod/directive-dict.html#Context">Context</A> of the directive. |
| For further information, we provide details on <A |
| HREF="sections.html">How Directory, Location and Files sections |
| work</A>. |
| |
| <H2>.htaccess Files</H2> |
| |
| <P>Apache allows for decentralized management of configuration via |
| special files placed inside the web tree. The special files are |
| usually called <CODE>.htaccess</CODE>, but any name can be specified |
| in the <A HREF="mod/core.html#accessfilename"><CODE |
| >AccessFileName</CODE></A> directive. Directives placed in |
| <CODE>.htaccess</CODE> files apply to the directory where you place |
| the file, and all sub-directories. The <CODE>.htaccess</CODE> files |
| follow the same syntax as the main configuration files. Since |
| <CODE>.htaccess</CODE> files are read on every request, rather than |
| only at server startup, changes made in these files take immediate |
| effect. |
| |
| <P>To find which directives can be placed in <CODE>.htaccess</CODE> |
| files, check the <A HREF="mod/directive-dict.html#Context">Context</A> |
| of the directive. The server administrator further controls what |
| directives may be placed in <CODE>.htaccess</CODE> files by |
| configuring the <A |
| HREF="mod/core.html#allowoverride"><CODE>AllowOverride</CODE></A> |
| directive in the main configuration files. |
| |
| <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> |
| |
| <P>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> |
| |
| <P>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> |
| |
| <P>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#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> |