<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head>
<meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<meta content="noindex, nofollow" name="robots" />
<!--
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
              This file is generated from xml source: DO NOT EDIT
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
      -->
<title>Starting Apache - Apache HTTP Server</title>
<link href="./style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="./style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="./style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" />
<link href="./images/favicon.ico" rel="shortcut icon" /><link href="http://httpd.apache.org/docs/current/invoking.html" rel="canonical" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="./mod/">Modules</a> | <a href="./mod/directives.html">Directives</a> | <a href="./faq/">FAQ</a> | <a href="./glossary.html">Glossary</a> | <a href="./sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.0</p>
<img alt="" src="./images/feather.gif" /></div>
<div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="./images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="./">Version 2.0</a></div><div id="page-content"><div class="retired"><h4>Please note</h4>
            <p>This document refers to the <strong>2.0</strong> version of Apache httpd, which <strong>is no longer maintained</strong>. Upgrade, and refer to the current version of httpd instead, documented at:</p>
        <ul><li><a href="http://httpd.apache.org/docs/current/">Current release version of Apache HTTP Server documentation</a></li></ul><p>You may follow <a href="http://httpd.apache.org/docs/current/invoking.html">this link</a> to go to the current version of this document.</p></div><div id="preamble"><h1>Starting Apache</h1>
<div class="toplang">
<p><span>Available Languages: </span><a href="./de/invoking.html" hreflang="de" rel="alternate" title="Deutsch">&nbsp;de&nbsp;</a> |
<a href="./en/invoking.html" title="English">&nbsp;en&nbsp;</a> |
<a href="./es/invoking.html" hreflang="es" rel="alternate" title="Espa&#241;ol">&nbsp;es&nbsp;</a> |
<a href="./ja/invoking.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
<a href="./ko/invoking.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
<a href="./ru/invoking.html" hreflang="ru" rel="alternate" title="Russian">&nbsp;ru&nbsp;</a> |
<a href="./tr/invoking.html" hreflang="tr" rel="alternate" title="T&#252;rk&#231;e">&nbsp;tr&nbsp;</a></p>
</div>

    <p>On Windows, Apache is normally run as a service on Windows
    NT, 2000 and XP, or as a console application on Windows 9x and
    ME. For details, see <a href="platform/windows.html#winsvc">Running Apache as a Service</a>
    and <a href="platform/windows.html#wincons">Running Apache as a
    Console Application</a>.</p>

    <p>On Unix, the <code class="program"><a href="./programs/httpd.html">httpd</a></code> program
    is run as a daemon that executes continuously in the
    background to handle requests.  This document describes how
    to invoke <code class="program"><a href="./programs/httpd.html">httpd</a></code>.</p>
</div>
<div id="quickview"><ul id="toc"><li><img alt="" src="./images/down.gif" /> <a href="#startup">How Apache Starts</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#errors">Errors During Start-up</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#boot">Starting at Boot-Time</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#info">Additional Information</a></li>
</ul><h3>See also</h3><ul class="seealso"><li><a href="stopping.html">Stopping and Restarting</a></li><li><code class="program"><a href="./programs/httpd.html">httpd</a></code></li><li><code class="program"><a href="./programs/apachectl.html">apachectl</a></code></li></ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="startup" id="startup">How Apache Starts</a></h2>

    <p>If the <code class="directive"><a href="./mod/mpm_common.html#listen">Listen</a></code>
    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 <code class="program"><a href="./programs/httpd.html">httpd</a></code>
    executable is to use the <code class="program"><a href="./programs/apachectl.html">apachectl</a></code> control script. This
    script sets certain environment variables that are necessary for
    <code class="program"><a href="./programs/httpd.html">httpd</a></code> to function correctly under some operating
    systems, and then invokes the <code class="program"><a href="./programs/httpd.html">httpd</a></code> binary.
    <code class="program"><a href="./programs/apachectl.html">apachectl</a></code> will pass through any command line
    arguments, so any <code class="program"><a href="./programs/httpd.html">httpd</a></code> options may also be used with
    <code class="program"><a href="./programs/apachectl.html">apachectl</a></code>.  You may also directly edit the
    <code class="program"><a href="./programs/apachectl.html">apachectl</a></code> script by changing the <code>HTTPD</code>
    variable near the top to specify the correct location of the
    <code class="program"><a href="./programs/httpd.html">httpd</a></code> binary and any command-line arguments that you
    wish to be <em>always</em> present.</p>

    <p>The first thing that <code>httpd</code> 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>

<div class="example"><p><code>/usr/local/apache2/bin/apachectl -f
      /usr/local/apache2/conf/httpd.conf</code></p></div>

    <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 <code class="directive"><a href="./mod/core.html#documentroot">DocumentRoot</a></code> directory
    and the local copy of the documentation linked from that
    page.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="errors" id="errors">Errors During Start-up</a></h2>

    <p>If Apache suffers a fatal problem during startup, it will
    write a message describing the problem either to the console or
    to the <code class="directive"><a href="./mod/core.html#errorlog">ErrorLog</a></code> 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="faq/">FAQ</a>.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="boot" id="boot">Starting at Boot-Time</a></h2>

    <p>If you want your server to continue running after a system
    reboot, you should add a call to <code class="program"><a href="./programs/apachectl.html">apachectl</a></code> 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 <code class="program"><a href="./programs/apachectl.html">apachectl</a></code> 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
    <code class="program"><a href="./programs/httpd.html">httpd</a></code>.  So you can often simply link
    <code class="program"><a href="./programs/apachectl.html">apachectl</a></code> into the appropriate init directory. But be
    sure to check the exact requirements of your system.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="info" id="info">Additional Information</a></h2>

    <p>Additional information about the command-line options of <code class="program"><a href="./programs/httpd.html">httpd</a></code> and <code class="program"><a href="./programs/apachectl.html">apachectl</a></code> 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>
</div></div>
<div class="bottomlang">
<p><span>Available Languages: </span><a href="./de/invoking.html" hreflang="de" rel="alternate" title="Deutsch">&nbsp;de&nbsp;</a> |
<a href="./en/invoking.html" title="English">&nbsp;en&nbsp;</a> |
<a href="./es/invoking.html" hreflang="es" rel="alternate" title="Espa&#241;ol">&nbsp;es&nbsp;</a> |
<a href="./ja/invoking.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
<a href="./ko/invoking.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
<a href="./ru/invoking.html" hreflang="ru" rel="alternate" title="Russian">&nbsp;ru&nbsp;</a> |
<a href="./tr/invoking.html" hreflang="tr" rel="alternate" title="T&#252;rk&#231;e">&nbsp;tr&nbsp;</a></p>
</div><div id="footer">
<p class="apache">Copyright 2013 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="./mod/">Modules</a> | <a href="./mod/directives.html">Directives</a> | <a href="./faq/">FAQ</a> | <a href="./glossary.html">Glossary</a> | <a href="./sitemap.html">Sitemap</a></p></div>
</body></html>