|  | <?xml version='1.0' encoding='UTF-8' ?> | 
|  | <!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd"> | 
|  | <?xml-stylesheet type="text/xsl" href="./style/manual.en.xsl"?> | 
|  | <!-- $LastChangedRevision$ --> | 
|  |  | 
|  | <!-- | 
|  | Licensed to the Apache Software Foundation (ASF) under one or more | 
|  | contributor license agreements.  See the NOTICE file distributed with | 
|  | this work for additional information regarding copyright ownership. | 
|  | The ASF licenses this file to You under the Apache License, Version 2.0 | 
|  | (the "License"); you may not use this file except in compliance with | 
|  | the License.  You may obtain a copy of the License at | 
|  |  | 
|  | http://www.apache.org/licenses/LICENSE-2.0 | 
|  |  | 
|  | Unless required by applicable law or agreed to in writing, software | 
|  | distributed under the License is distributed on an "AS IS" BASIS, | 
|  | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
|  | See the License for the specific language governing permissions and | 
|  | limitations under the License. | 
|  | --> | 
|  |  | 
|  | <manualpage metafile="invoking.xml.meta"> | 
|  |  | 
|  | <title>Starting Apache</title> | 
|  |  | 
|  | <summary> | 
|  | <p>On Windows, Apache is normally run as a service. | 
|  | For details, see <a | 
|  | href="platform/windows.html#winsvc">Running Apache as a Service</a>. | 
|  | </p> | 
|  |  | 
|  | <p>On Unix, the <program>httpd</program> program | 
|  | is run as a daemon that executes continuously in the | 
|  | background to handle requests.  This document describes how | 
|  | to invoke <program>httpd</program>.</p> | 
|  | </summary> | 
|  |  | 
|  | <seealso><a href="stopping.html">Stopping and Restarting</a></seealso> | 
|  | <seealso><program>httpd</program></seealso> | 
|  | <seealso><program>apachectl</program></seealso> | 
|  |  | 
|  | <section id="startup"><title>How Apache Starts</title> | 
|  |  | 
|  | <p>If the <directive module="mpm_common">Listen</directive> | 
|  | specified in the configuration file is default of 80 (or any other | 
|  | port below 1024), then it is necessary to have root privileges in | 
|  | order to start apache, so that it can bind to this privileged | 
|  | port. Once the server has started and performed a few preliminary | 
|  | activities such as opening its log files, it will launch several | 
|  | <em>child</em> processes which do the work of listening for and | 
|  | answering requests from clients. The main <code>httpd</code> | 
|  | process continues to run as the root user, but the child processes | 
|  | run as a less privileged user. This is controlled by the selected | 
|  | <a href="mpm.html">Multi-Processing Module</a>.</p> | 
|  |  | 
|  | <p>The recommended method of invoking the <program>httpd</program> | 
|  | executable is to use the <program>apachectl</program> control script. This | 
|  | script sets certain environment variables that are necessary for | 
|  | <program>httpd</program> to function correctly under some operating | 
|  | systems, and then invokes the <program>httpd</program> binary. | 
|  | <program>apachectl</program> will pass through any command line | 
|  | arguments, so any <program>httpd</program> options may also be used with | 
|  | <program>apachectl</program>.  You may also directly edit the | 
|  | <program>apachectl</program> script by changing the <code>HTTPD</code> | 
|  | variable near the top to specify the correct location of the | 
|  | <program>httpd</program> binary and any command-line arguments that you | 
|  | wish to be <em>always</em> present.</p> | 
|  |  | 
|  | <p>The first thing that <program>httpd</program> does when it is | 
|  | invoked is to locate and read the <a | 
|  | href="configuring.html">configuration file</a> | 
|  | <code>httpd.conf</code>. The location of this file is set at | 
|  | compile-time, but it is possible to specify its location at run | 
|  | time using the <code>-f</code> command-line option as in</p> | 
|  |  | 
|  | <example>/usr/local/apache2/bin/apachectl -f | 
|  | /usr/local/apache2/conf/httpd.conf</example> | 
|  |  | 
|  | <p>If all goes well during startup, the server will detach from | 
|  | the terminal and the command prompt will return almost | 
|  | immediately. This indicates that the server is up and running. | 
|  | You can then use your browser to connect to the server and view | 
|  | the test page in the <directive | 
|  | module="core">DocumentRoot</directive> directory.</p> | 
|  | </section> | 
|  |  | 
|  | <section id="errors"><title>Errors During Start-up</title> | 
|  |  | 
|  | <p>If Apache suffers a fatal problem during startup, it will | 
|  | write a message describing the problem either to the console or | 
|  | to the <directive module="core">ErrorLog</directive> before | 
|  | exiting. One of the most common error messages is "<code>Unable | 
|  | to bind to Port ...</code>". This message is usually caused by | 
|  | either:</p> | 
|  |  | 
|  | <ul> | 
|  | <li>Trying to start the server on a privileged port when not | 
|  | logged in as the root user; or</li> | 
|  |  | 
|  | <li>Trying to start the server when there is another instance | 
|  | of Apache or some other web server already bound to the same | 
|  | Port.</li> | 
|  | </ul> | 
|  |  | 
|  | <p>For further trouble-shooting instructions, consult the | 
|  | Apache <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a>.</p> | 
|  | </section> | 
|  |  | 
|  | <section id="boot"><title>Starting at Boot-Time</title> | 
|  |  | 
|  | <p>If you want your server to continue running after a system | 
|  | reboot, you should add a call to <program>apachectl</program> to your | 
|  | system startup files (typically <code>rc.local</code> or a file in | 
|  | an <code>rc.N</code> directory). This will start Apache as | 
|  | root. Before doing this ensure that your server is properly | 
|  | configured for security and access restrictions.</p> | 
|  |  | 
|  | <p>The <program>apachectl</program> script is designed to act like a | 
|  | standard SysV init script; it can take the arguments | 
|  | <code>start</code>, <code>restart</code>, and <code>stop</code> | 
|  | and translate them into the appropriate signals to | 
|  | <program>httpd</program>.  So you can often simply link | 
|  | <program>apachectl</program> into the appropriate init directory. But be | 
|  | sure to check the exact requirements of your system.</p> | 
|  | </section> | 
|  |  | 
|  | <section id="info"><title>Additional Information</title> | 
|  |  | 
|  | <p>Additional information about the command-line options of <program> | 
|  | httpd</program> and <program>apachectl</program> as well as other support | 
|  | programs included with the server is available on the | 
|  | <a href="programs/">Server and Supporting Programs</a> page. | 
|  | There is also documentation on all the <a | 
|  | href="mod/">modules</a> included with the Apache distribution | 
|  | and the <a href="mod/directives.html">directives</a> that they | 
|  | provide.</p> | 
|  | </section> | 
|  |  | 
|  | </manualpage> |