github.com/krum110487/go-htaccess@v0.0.0-20240316004156-60641c8e7598/tests/data/apache_2_2_34/manual/platform/windows.html.en (about)

     1  <?xml version="1.0" encoding="ISO-8859-1"?>
     2  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
     3  <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head>
     4  <meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
     5  <!--
     6          XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
     7                This file is generated from xml source: DO NOT EDIT
     8          XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
     9        -->
    10  <title>Using Apache HTTP Server on Microsoft Windows - Apache HTTP Server Version 2.2</title>
    11  <link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
    12  <link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
    13  <link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /><link rel="stylesheet" type="text/css" href="../style/css/prettify.css" />
    14  <script src="../style/scripts/prettify.min.js" type="text/javascript">
    15  </script>
    16  
    17  <link href="../images/favicon.ico" rel="shortcut icon" /><link href="http://httpd.apache.org/docs/current/platform/windows.html" rel="canonical" /></head>
    18  <body id="manual-page"><div id="page-header">
    19  <p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
    20  <p class="apache">Apache HTTP Server Version 2.2</p>
    21  <img alt="" src="../images/feather.gif" /></div>
    22  <div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
    23  <div id="path">
    24  <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.2</a> &gt; <a href="./">Platform Specific Notes</a></div><div id="page-content"><div class="retired"><h4>Please note</h4>
    25              <p> This document refers to a legacy release (<strong>2.2</strong>) of Apache httpd. The active release (<strong>2.4</strong>) is documented <a href="http://httpd.apache.org/docs/current">here</a>. If you have not already upgraded, please follow <a href="http://httpd.apache.org/docs/current/upgrading.html">this link</a> for more information.</p>
    26          <p>You may follow <a href="http://httpd.apache.org/docs/current/platform/windows.html">this link</a> to go to the current version of this document.</p></div><div id="preamble"><h1>Using Apache HTTP Server on Microsoft Windows</h1>
    27  <div class="toplang">
    28  <p><span>Available Languages: </span><a href="../en/platform/windows.html" title="English">&nbsp;en&nbsp;</a> |
    29  <a href="../ko/platform/windows.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a></p>
    30  </div>
    31  
    32      <p>This document explains how to install, configure and run
    33      Apache 2.2 under Microsoft Windows.  If you have questions after
    34      reviewing the documentation (and any event and error logs), you
    35      should consult the peer-supported 
    36      <a href="http://httpd.apache.org/userslist.html">users' mailing
    37      list</a>.</p>
    38  
    39      <p>This document assumes that you are installing a binary
    40      distribution of Apache. If you want to compile Apache yourself
    41      (possibly to help with development or tracking down bugs),
    42      see <a href="win_compiling.html">Compiling Apache for Microsoft
    43      Windows</a>.</p>
    44    </div>
    45  <div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#req">Operating System Requirements</a></li>
    46  <li><img alt="" src="../images/down.gif" /> <a href="#down">Downloading Apache for Windows</a></li>
    47  <li><img alt="" src="../images/down.gif" /> <a href="#inst">Installing Apache for Windows</a></li>
    48  <li><img alt="" src="../images/down.gif" /> <a href="#advinst">Advanced Installation Topics</a></li>
    49  <li><img alt="" src="../images/down.gif" /> <a href="#cust">Customizing Apache for Windows</a></li>
    50  <li><img alt="" src="../images/down.gif" /> <a href="#winsvc">Running Apache as a Service</a></li>
    51  <li><img alt="" src="../images/down.gif" /> <a href="#wincons">Running Apache as a Console Application</a></li>
    52  <li><img alt="" src="../images/down.gif" /> <a href="#test">Testing the Installation</a></li>
    53  <li><img alt="" src="../images/down.gif" /> <a href="#windrivemap">Configuring Access to Network Resources</a></li>
    54  <li><img alt="" src="../images/down.gif" /> <a href="#tuning">Windows Tuning</a></li>
    55  </ul><ul class="seealso"><li><a href="#comments_section">Comments</a></li></ul></div>
    56  <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
    57  <div class="section">
    58  <h2><a name="req" id="req">Operating System Requirements</a></h2>
    59      
    60  
    61      <p>The primary Windows platform for running Apache 2.2 is Windows
    62      2000 or later.  The binary installer only works with the x86 family
    63      of processors, such as Intel and AMD processors.  Always obtain and
    64      install the current service pack to avoid operating system bugs.</p>
    65  
    66      <div class="note">Running Apache on Windows 9x is ignored by the developers, and
    67      is strongly discouraged.  On Windows NT 4.0, installing Service
    68      Pack 6 is required.  Apache HTTP Server versions later than 2.2 will
    69      not run on any operating system earlier than Windows 2000.</div>
    70    </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
    71  <div class="section">
    72  <h2><a name="down" id="down">Downloading Apache for Windows</a></h2>
    73      
    74  
    75      <p>The Apache HTTP Server Project itself does not provide binary releases of
    76      software, only source code. Individual committers <em>may</em> provide 
    77      binary packages as a convenience, but it is not a release deliverable.</p>
    78      <p>If you cannot compile the Apache HTTP Server
    79      yourself, you can obtain a binary package from numerous binary distributions
    80      available on the Internet.</p>
    81  
    82      <p>Popular options for deploying Apache httpd, and, optionally, PHP
    83      and MySQL, on Microsoft Windows, include:</p>
    84      <ul>
    85      <li><a href="http://www.apachehaus.com/cgi-bin/download.plx">ApacheHaus</a></li>
    86      <li><a href="http://www.apachelounge.com/download/">Apache Lounge</a></li>
    87      <li><a href="http://bitnami.com/stack/wamp">BitNami WAMP Stack</a></li>
    88      <li><a href="http://www.wampserver.com/">WampServer</a></li>
    89      <li><a href="http://www.apachefriends.org/en/xampp.html">XAMPP</a></li>
    90      </ul>
    91  
    92    </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
    93  <div class="section">
    94  <h2><a name="inst" id="inst">Installing Apache for Windows</a></h2>
    95      
    96  
    97      <p>You need Microsoft Installer 2.0 or above for the installation
    98      to work.  For Windows NT 4.0 and 2000 refer to Microsoft's article
    99      <a href="http://support.microsoft.com/kb/292539/">KB 292539</a>.
   100      Windows XP and later do not require this update.  The Windows 98/ME
   101      installer engine appears to no longer be available from Microsoft,
   102      and these instructions no longer detail such prerequisites.</p>
   103  
   104      <p>Note that you cannot install two versions of Apache 2.2 on the
   105      same computer with the binary installer. You can, however, install
   106      a version of the 1.3 series <strong>and</strong> a version of the
   107      2.2 series on the same computer without problems. If you need to
   108      have two different 2.2 versions on the same computer, you have to
   109      <a href="win_compiling.html">compile and install Apache from the
   110      source</a>.</p>
   111  
   112      <p>Run the Apache <code>.msi</code> file you downloaded above. The
   113      installation will ask you for these things:</p>
   114  
   115      <ol>
   116        <li><p><strong>Network Domain.</strong> Enter the DNS domain in which
   117        your server is or will be registered in. For example, if your
   118        server's full DNS name is <code>server.mydomain.net</code>, you would
   119        type <code>mydomain.net</code> here.</p></li>
   120  
   121        <li><p><strong>Server Name.</strong> Your server's full DNS name.
   122        From the example above, you would type <code>server.mydomain.net</code>
   123        here.</p></li>
   124  
   125        <li><p><strong>Administrator's Email Address.</strong> Enter the
   126        server administrator's or webmaster's email address here. This
   127        address will be displayed along with error messages to the client
   128        by default.</p></li>
   129  
   130        <li><p><strong>For whom to install Apache</strong> Select <code>for
   131        All Users, on Port 80, as a Service - Recommended</code> if you'd
   132        like your new Apache to listen at port 80 for incoming traffic.
   133        It will run as a service (that is, Apache will run even if no one
   134        is logged in on the server at the moment) Select <code>only for
   135        the Current User, on Port 8080, when started Manually</code> if
   136        you'd like to install Apache for your personal experimenting or
   137        if you already have another WWW server running on port 80.</p></li>
   138  
   139        <li><p><strong>The installation type.</strong> Select <code>Typical</code>
   140        for everything except the source code and libraries for module
   141        development. With <code>Custom</code> you can specify what to
   142        install. A full install will require about 13 megabytes of free
   143        disk space. This does <em>not</em> include the size of your web
   144        site(s).</p></li>
   145  
   146        <li><p><strong>Where to install.</strong> The default path is
   147        <code>C:\Program Files\Apache Software Foundation</code>
   148        under which a directory called 
   149        <code>Apache2.2</code> will be created by default.</p></li>
   150      </ol>
   151  
   152      <p>During the installation, Apache will configure the files in the
   153      <code>conf</code> subdirectory to reflect the chosen installation
   154      directory. However, if any of the configuration files in this
   155      directory already exist, they will not be overwritten. Instead, the
   156      new copy of the corresponding file will be left with the extension
   157      <code>.default</code>. So, for example, if <code>conf\httpd.conf</code>
   158      already exists, it will be renamed as <code>conf\httpd.conf.default</code>.
   159      After the installation you should manually check to see what new
   160      settings are in the <code>.default</code> file, and if necessary,
   161      update your existing configuration file.</p>
   162  
   163      <p>Also, if you already have a file called <code>htdocs\index.html</code>,
   164      it will not be overwritten (and no <code>index.html.default</code>
   165      will be installed either). This means it should be safe to install
   166      Apache over an existing installation, although you would have to
   167      stop the existing running server before doing the installation, and
   168      then start the new one after the installation is finished.</p>
   169  
   170      <p>After installing Apache, you must edit the configuration files
   171      in the <code>conf</code> subdirectory as required. These files
   172      will be configured during the installation so that Apache is ready
   173      to be run from the directory it was installed into, with the
   174      documents server from the subdirectory <code>htdocs</code>. There
   175      are lots of other options which you should set before you really
   176      start using Apache. However, to get started quickly, the files
   177      should work as installed.</p>
   178    </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
   179  <div class="section">
   180  <h2><a name="advinst" id="advinst">Advanced Installation Topics</a></h2>
   181      
   182  
   183      <p>One feature of the installer, "Build Headers and Libraries", can be
   184      ignored by most users, but should be installed if compiling third party
   185      modules.  The "APR Iconv Code Pages" can similarly be omitted by most
   186      users, unless using <code class="module"><a href="../mod/mod_charset_lite.html">mod_charset_lite</a></code> or a third party
   187      module which relies on APR internationalization features.</p>
   188  
   189      <p>There are requests to ship a .zip file from time to time.  There is
   190      no point in the ASF consuming additional storage, mirroring and bandwidth
   191      for this purpose, because the .msi installer allows the installation
   192      artifacts to all be unpacked using the <code>msiexec /a</code> network
   193      installation option.  Using this command against any .msi will result
   194      in an exploded tree of all of the individual files and components.</p>
   195  
   196      <p>The installation options above can be customized by users familiar
   197      with msiexec.exe options and silent installation.  The actual installer
   198      sources are available in the httpd/httpd/win32-msi/ tree of the httpd
   199      project subversion respository.  For reference, some of the more common
   200      variables which may be modified are;</p>
   201  
   202      <ul>
   203        <li><code>AgreeToLicense</code> (toggle to "Yes")</li>
   204        <li><code>ALLUSERS</code> (choose between Null and "1")</li>
   205        <li><code>ApplicationUsers</code> (toggle to "OnlyCurrentUser")</li>
   206        <li><code>EXISTING_APACHE_SERVICE_PATH</code></li>
   207        <li><code>INSTALLDIR</code> (default "ProgramFilesFolder\Apache Software Foundation\Apache2.2\")</li>
   208        <li><code>INSTALLLEVEL</code> (default "100", refer to list below)</li>
   209        <li><code>RESOLVED_WINSOCK2</code> (toggle to "1")</li>
   210        <li><code>SERVERADMIN</code></li>
   211        <li><code>SERVERDOMAIN</code></li>
   212        <li><code>SERVERNAME</code></li>
   213        <li><code>SERVERPORT</code> (default "80")</li>
   214        <li><code>SERVERSSLPORT</code> (default "443")</li>
   215        <li><code>SERVICEINTERNALNAME</code> (default "Apache2.2", no spaces!)</li>
   216        <li><code>SERVICENAME</code> (default "Apache2.2", include spaces)</li>
   217        <li><code>SetupType</code> (default "Typical")</li>
   218      </ul>
   219  
   220      <p>The installation level of various features, which may be individually
   221      toggled, include;</p>
   222  
   223      <ul>
   224        <li>Apache (1, base Apache HTTP Server 2.2 feature)</li>
   225        <li>ApacheDocs (11, Apache Documentation)</li>
   226        <li>ApacheMonitoring (41, Apache Service Taskbar Icon)</li>
   227        <li>ApacheRuntime (1, Apache Runtime)</li>
   228        <li>BuildFiles (101, Build Headers and Libraries)</li>
   229        <li>Iconv (21, APR Iconv Code Pages)</li>
   230        <li>OpensslBin (31, OpenSSL Runtime)</li>
   231        <li>SslBin (41, Ssl Binaries)</li>
   232      </ul>
   233  
   234  
   235    </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
   236  <div class="section">
   237  <h2><a name="cust" id="cust">Customizing Apache for Windows</a></h2>
   238      
   239  
   240      <p>Apache is configured by the files in the <code>conf</code>
   241      subdirectory. These are the same files used to configure the Unix
   242      version, but there are a few different directives for Apache on
   243      Windows. See the <a href="../mod/directives.html">directive index</a>
   244      for all the available directives.</p>
   245  
   246      <p>The main differences in Apache for Windows are:</p>
   247      <ul>
   248        <li><p>Because Apache for Windows is multithreaded, it does not
   249        use a separate process for each request, as Apache can on Unix.
   250        Instead there are usually only two Apache processes running: a
   251        parent process, and a child which handles the requests. Within
   252        the child process each request is handled by a separate thread.
   253        </p>
   254  
   255        <p>The process management directives are also different:</p>
   256  
   257        <p><code class="directive"><a href="../mod/mpm_common.html#maxrequestsperchild">MaxRequestsPerChild</a></code>:
   258        Like the Unix directive, this controls how many requests (actually,
   259        connections) which a single child process will serve before exiting.
   260        However, unlike on Unix, a replacement process is not instantly
   261        available.  Use the default <code>MaxRequestsPerChild 0</code>,
   262        unless instructed to change the behavior to overcome a memory leak
   263        in third party modules or in-process applications.</p>
   264  
   265        <div class="warning"><strong>Warning: The server configuration
   266        file is reread when a new child process is started. If you have
   267        modified <code>httpd.conf</code>, the new child may not start or
   268        you may receive unexpected results.</strong></div>
   269  
   270        <p><code class="directive"><a href="../mod/mpm_common.html#threadsperchild">ThreadsPerChild</a></code>:
   271        This directive is new. It tells the server how many threads it
   272        should use. This is the maximum number of connections the server
   273        can handle at once, so be sure to set this number high enough for
   274        your site if you get a lot of hits. The recommended default is
   275        <code>ThreadsPerChild 150</code>, but this must be adjusted to
   276        reflect the greatest anticipated number of simultaneous
   277        connections to accept.</p></li>
   278  
   279        <li><p>The directives that accept filenames as arguments must use
   280        Windows filenames instead of Unix ones. However, because Apache
   281        may interpret backslashes as an "escape character" sequence, you
   282        should consistently use forward slashes in path names, not 
   283        backslashes.</p></li>
   284  
   285        <li><p>While filenames are generally case-insensitive on
   286        Windows, URLs are still treated internally as case-sensitive
   287        before they are mapped to the filesystem.  For example, the
   288        <code class="directive"><a href="../mod/core.html#location">&lt;Location&gt;</a></code>,
   289        <code class="directive"><a href="../mod/mod_alias.html#alias">Alias</a></code>, and <code class="directive"><a href="../mod/mod_proxy.html#proxypass">ProxyPass</a></code> directives all use
   290        case-sensitive arguments.  For this reason, it is particularly
   291        important to use the <code class="directive"><a href="../mod/core.html#directory">&lt;Directory&gt;</a></code> directive when attempting
   292        to limit access to content in the filesystem, since this
   293        directive applies to any content in a directory, regardless of
   294        how it is accessed.  If you wish to assure that only lowercase
   295        is used in URLs, you can use something like:</p>
   296  
   297        <div class="example"><p><code>
   298        RewriteEngine On<br />
   299        RewriteMap lowercase int:tolower<br />
   300        RewriteCond %{REQUEST_URI} [A-Z]<br />
   301        RewriteRule (.*) ${lowercase:$1} [R,L]
   302        </code></p></div></li>
   303  
   304        <li><p>When running, Apache needs write access only to the logs
   305        directory and any configured cache directory tree.  Due to the
   306        issue of case insensitive and short 8.3 format names, Apache must
   307        validate all path names given.  This means that each directory
   308        which Apache evaluates, from the drive root up to the directory
   309        leaf, must have read, list and traverse directory permissions.
   310        If Apache2.2 is installed at C:\Program Files, then the root
   311        directory, Program Files and Apache2.2 must all be visible
   312        to Apache.</p></li>
   313  
   314        <li><p>Apache for Windows contains the ability to load modules at
   315        runtime, without recompiling the server. If Apache is compiled
   316        normally, it will install a number of optional modules in the
   317        <code>\Apache2.2\modules</code> directory. To activate these or
   318        other modules, the new <code class="directive"><a href="../mod/mod_so.html#loadmodule">LoadModule</a></code>
   319        directive must be used. For example, to activate the status
   320        module, use the following (in addition to the status-activating
   321        directives in <code>access.conf</code>):</p>
   322  
   323        <div class="example"><p><code>
   324          LoadModule status_module modules/mod_status.so
   325        </code></p></div>
   326  
   327        <p>Information on <a href="../mod/mod_so.html#creating">creating
   328        loadable modules</a> is also available.</p></li>
   329  
   330        <li><p>Apache can also load ISAPI (Internet Server Application
   331        Programming Interface) extensions such as those used by Microsoft
   332        IIS and other Windows servers. <a href="../mod/mod_isapi.html">More
   333        information is available</a>. Note that Apache <strong>cannot</strong>
   334        load ISAPI Filters, and ISAPI Handlers with some Microsoft feature
   335        extensions will not work.</p></li>
   336  
   337        <li><p>When running CGI scripts, the method Apache uses to find
   338        the interpreter for the script is configurable using the
   339        <code class="directive"><a href="../mod/core.html#scriptinterpretersource">ScriptInterpreterSource</a></code>
   340        directive.</p></li>
   341  
   342        <li><p>Since it is often difficult to manage files with names
   343        like <code>.htaccess</code> in Windows, you may find it useful to
   344        change the name of this per-directory configuration file using
   345        the <code class="directive"><a href="../mod/core.html#accessfilename">AccessFilename</a></code>
   346        directive.</p></li>
   347  
   348        <li><p>Any errors during Apache startup are logged into the
   349        Windows event log when running on Windows NT. This mechanism
   350        acts as a backup for those situations where Apache is not yet
   351        prepared to use the <code>error.log</code> file. You can
   352        review the Windows Application Event Log by using the Event Viewer,
   353        e.g. Start - Settings - Control Panel - Administrative Tools
   354        - Event Viewer.</p></li>
   355      </ul>
   356  
   357    </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
   358  <div class="section">
   359  <h2><a name="winsvc" id="winsvc">Running Apache as a Service</a></h2>
   360      
   361  
   362      <p>You can install Apache as a service automatically during the
   363      installation. If you chose to install for all users, the
   364      installation will create an Apache service for you. If you specify
   365      to install for yourself only, you can manually register Apache as a
   366      service after the installation. You have to be a member of the
   367      Administrators group for the service installation to succeed.</p>
   368  
   369      <p>Apache comes with a utility called the Apache Service Monitor.
   370      With it you can see and manage the state of all installed Apache
   371      services on any machine on your network. To be able to manage an
   372      Apache service with the monitor, you have to first install the
   373      service (either automatically via the installation or manually).
   374      </p>
   375  
   376      <p>You can install Apache as a Windows NT service as follows from
   377      the command prompt at the Apache <code>bin</code> subdirectory:</p>
   378  
   379      <div class="example"><p><code>
   380        httpd.exe -k install
   381      </code></p></div>
   382  
   383      <p>If you need to specify the name of the service you want to
   384      install, use the following command. You have to do this if you
   385      have several different service installations of Apache on your
   386      computer. If you specify a name during the install, you have to
   387      also specify it during any other -k operation.</p>
   388  
   389      <div class="example"><p><code>
   390        httpd.exe -k install -n "MyServiceName"
   391      </code></p></div>
   392  
   393      <p>If you need to have specifically named configuration files for
   394      different services, you must use this:</p>
   395  
   396      <div class="example"><p><code>
   397        httpd.exe -k install -n "MyServiceName" -f "c:\files\my.conf"
   398      </code></p></div>
   399  
   400      <p>If you use the first command without any special parameters except
   401      <code>-k install</code>, the service will be called <code>Apache2.2</code>
   402      and the configuration will be assumed to be <code>conf\httpd.conf</code>.
   403      </p>
   404  
   405      <p>Removing an Apache service is easy. Just use:</p>
   406  
   407      <div class="example"><p><code>
   408        httpd.exe -k uninstall
   409      </code></p></div>
   410  
   411      <p>The specific Apache service to be uninstalled can be specified by using:</p>
   412  
   413      <div class="example"><p><code>
   414        httpd.exe -k uninstall -n "MyServiceName"
   415      </code></p></div>
   416  
   417      <p>Normal starting, restarting and shutting down of an Apache
   418      service is usually done via the Apache Service Monitor, by using
   419      commands like <code>NET START Apache2.2</code> and <code>NET STOP
   420      Apache2.2</code> or via normal Windows service management. Before
   421      starting Apache as a service by any means, you should test the
   422      service's configuration file by using:</p>
   423  
   424      <div class="example"><p><code>
   425        httpd.exe -n "MyServiceName" -t
   426      </code></p></div>
   427  
   428      <p>You can control an Apache service by its command line switches,
   429      too. To start an installed Apache service you'll use this:</p>
   430  
   431      <div class="example"><p><code>
   432        httpd.exe -k start -n "MyServiceName"
   433      </code></p></div>
   434  
   435      <p>To stop an Apache service via the command line switches, use
   436      this:</p>
   437  
   438      <div class="example"><p><code>
   439        httpd.exe -k stop -n "MyServiceName"
   440      </code></p></div>
   441  
   442      <p>or</p>
   443  
   444      <div class="example"><p><code>
   445        httpd.exe -k shutdown -n "MyServiceName"
   446      </code></p></div>
   447  
   448      <p>You can also restart a running service and force it to reread
   449      its configuration file by using:</p>
   450  
   451      <div class="example"><p><code>
   452        httpd.exe -k restart -n "MyServiceName"
   453      </code></p></div>
   454  
   455      <p>By default, all Apache services are registered to run as the
   456      system user (the <code>LocalSystem</code> account). The
   457      <code>LocalSystem</code> account has no privileges to your network
   458      via any Windows-secured mechanism, including the file system, named
   459      pipes, DCOM, or secure RPC. It has, however, wide privileges locally.
   460      </p>
   461  
   462      <div class="warning"><strong>Never grant any network privileges to
   463      the <code>LocalSystem</code> account! If you need Apache to be able
   464      to access network resources, create a separate account for Apache as
   465      noted below.</strong></div>
   466  
   467      <p>It is recommended that users create a separate account for running
   468      Apache service(s). If you have to access network resources via Apache,
   469      this is required.</p>
   470  
   471      <ol>
   472        <li>Create a normal domain user account, and be sure to
   473        memorize its password.</li>
   474  
   475        <li>Grant the newly-created user a privilege of <code>Log on
   476        as a service</code> and <code>Act as part of the operating
   477        system</code>. On Windows NT 4.0 these privileges are granted via
   478        User Manager for Domains, but on Windows 2000 and XP you probably
   479        want to use Group Policy for propagating these settings. You can
   480        also manually set these via the Local Security Policy MMC snap-in.
   481        </li>
   482  
   483        <li>Confirm that the created account is a member of the Users
   484        group.</li>
   485  
   486        <li>Grant the account read and execute (RX) rights to all document
   487        and script folders (<code>htdocs</code> and <code>cgi-bin</code>
   488        for example).</li>
   489  
   490        <li>Grant the account change (RWXD) rights to the
   491        Apache <code>logs</code> directory.</li>
   492  
   493        <li>Grant the account read and execute (RX) rights to the
   494        <code>httpd.exe</code> binary executable.</li>
   495      </ol>
   496  
   497      <div class="note">It is usually a good practice to grant the user the Apache
   498      service runs as read and execute (RX) access to the whole Apache2.2
   499      directory, except the <code>logs</code> subdirectory, where the
   500      user has to have at least change (RWXD) rights.</div>
   501  
   502      <p>If you allow the account to log in as a user and as a service,
   503      then you can log on with that account and test that the account has
   504      the privileges to execute the scripts, read the web pages, and that
   505      you can start Apache in a console window. If this works, and you
   506      have followed the steps above, Apache should execute as a service
   507      with no problems.</p>
   508  
   509      <div class="note"><strong>Error code 2186</strong> is a good indication that
   510      you need to review the "Log On As" configuration for the service,
   511      since Apache cannot access a required network resource. Also, pay
   512      close attention to the privileges of the user Apache is
   513      configured to run as.</div>
   514  
   515      <p>When starting Apache as a service you may encounter an error
   516      message from the Windows Service Control Manager. For example,
   517      if you try to start Apache by using the Services applet in the
   518      Windows Control Panel, you may get the following message:</p>
   519  
   520      <div class="example"><p><code>
   521        Could not start the Apache2.2 service on \\COMPUTER <br />
   522        Error 1067; The process terminated unexpectedly.
   523      </code></p></div>
   524  
   525      <p>You will get this generic error if there is any problem with
   526      starting the Apache service. In order to see what is really causing
   527      the problem you should follow the instructions for Running Apache
   528      for Windows from the Command Prompt.</p>
   529  
   530      <p>If you are having problems with the service, it is suggested
   531      you follow the instructions below to try starting httpd.exe from
   532      a console window, and work out the errors before struggling to
   533      start it as a service again.</p>
   534    </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
   535  <div class="section">
   536  <h2><a name="wincons" id="wincons">Running Apache as a Console Application</a></h2>
   537      
   538  
   539      <p>Running Apache as a service is usually the recommended way to
   540      use it, but it is sometimes easier to work from the command line
   541      (on Windows 9x running Apache from the command line is the
   542      recommended way due to the lack of reliable service support.)</p>
   543  
   544      <p>To run Apache from the command line as a console application,
   545      use the following command:</p>
   546  
   547      <div class="example"><p><code>
   548        httpd.exe
   549      </code></p></div>
   550  
   551      <p>Apache will execute, and will remain running until it is stopped
   552      by pressing Control-C.</p>
   553  
   554      <p>You can also run Apache via the shortcut Start Apache in Console
   555      placed to <code>Start Menu --&gt; Programs --&gt; Apache HTTP Server
   556      2.2.xx --&gt; Control Apache Server</code> during the installation.
   557      This will open a console window and start Apache inside it. If you
   558      don't have Apache installed as a service, the window will remain
   559      visible until you stop Apache by pressing Control-C in the console
   560      window where Apache is running in. The server will exit in a few
   561      seconds. However, if you do have Apache installed as a service, the
   562      shortcut starts the service. If the Apache service is running
   563      already, the shortcut doesn't do anything.</p>
   564  
   565      <p>If Apache is running as a service, you can tell it to stop by opening another console
   566      window and entering:</p>
   567  
   568      <div class="example"><p><code>
   569        httpd.exe -k shutdown
   570      </code></p></div>
   571  
   572      <p>Running as a service should be preferred over running in a
   573      console window because this lets Apache end any current operations
   574      and clean up gracefully.</p>
   575  
   576      <p>But if the server is running in a console window, you can
   577      only stop it by pressing Control-C in the same window.</p>
   578  
   579      <p>You can also tell Apache to restart. This forces it to reread
   580      the configuration file. Any operations in progress are allowed to
   581      complete without interruption. To restart Apache, either press
   582      Control-Break in the console window you used for starting Apache,
   583      or enter</p>
   584  
   585      <div class="example"><p><code>
   586        httpd.exe -k restart
   587      </code></p></div>
   588  
   589      <p>if the server is running as a service.</p>
   590  
   591      <div class="note">Note for people familiar with the Unix version of Apache:
   592      these commands provide a Windows equivalent to <code>kill -TERM
   593      <em>pid</em></code> and <code>kill -USR1 <em>pid</em></code>. The
   594      command line option used, <code>-k</code>, was chosen as a reminder
   595      of the <code>kill</code> command used on Unix.</div>
   596  
   597      <p>If the Apache console window closes immediately or unexpectedly
   598      after startup, open the Command Prompt from the Start Menu --&gt;
   599      Programs. Change to the folder to which you installed Apache, type
   600      the command <code>httpd.exe</code>, and read the error message. Then
   601      change to the logs folder, and review the <code>error.log</code>
   602      file for configuration mistakes. If you accepted the defaults when
   603      you installed Apache, the commands would be:</p>
   604  
   605      <div class="example"><p><code>
   606        c: <br />
   607        cd "\Program Files\Apache Software Foundation\Apache2.2\bin" <br />
   608        httpd.exe
   609      </code></p></div>
   610  
   611      <p>Then wait for Apache to stop, or press Control-C. Then enter the
   612      following:</p>
   613  
   614      <div class="example"><p><code>
   615        cd ..\logs <br />
   616        more &lt; error.log
   617      </code></p></div>
   618  
   619      <p>When working with Apache it is important to know how it will
   620      find the configuration file. You can specify a configuration file
   621      on the command line in two ways:</p>
   622  
   623      <ul>
   624        <li><p><code>-f</code> specifies an absolute or relative path to
   625        a particular configuration file:</p>
   626  
   627        <div class="example"><p><code>
   628          httpd.exe -f "c:\my server files\anotherconfig.conf"
   629        </code></p></div>
   630  
   631        <p>or</p>
   632  
   633        <div class="example"><p><code>
   634          httpd.exe -f files\anotherconfig.conf
   635        </code></p></div></li>
   636  
   637        <li><p><code>-n</code> specifies the installed Apache service
   638        whose configuration file is to be used:</p>
   639  
   640        <div class="example"><p><code>
   641          httpd.exe -n "MyServiceName"
   642        </code></p></div>
   643        </li>
   644      </ul>
   645  
   646      <p>In both of these cases, the proper
   647      <code class="directive"><a href="../mod/core.html#serverroot">ServerRoot</a></code> should be set in
   648      the configuration file.</p>
   649  
   650      <p>If you don't specify a configuration file with <code>-f</code>
   651      or <code>-n</code>, Apache will use the file name compiled into the
   652      server, such as <code>conf\httpd.conf</code>. This built-in path
   653      is relative to the installation directory. You can verify the compiled
   654      file name from a value labelled as <code>SERVER_CONFIG_FILE</code> when
   655      invoking Apache with the <code>-V</code> switch, like this:</p>
   656  
   657      <div class="example"><p><code>
   658        httpd.exe -V
   659      </code></p></div>
   660  
   661      <p>Apache will then try to determine its <code class="directive"><a href="../mod/core.html#serverroot">ServerRoot</a></code> by trying the following, in this order:</p>
   662  
   663      <ol>
   664        <li>A <code class="directive"><a href="../mod/core.html#serverroot">ServerRoot</a></code> directive
   665        via the <code>-C</code> command line switch.</li>
   666  
   667        <li>The <code>-d</code> switch on the command line.</li>
   668  
   669        <li>Current working directory.</li>
   670  
   671        <li>A registry entry which was created if you did a binary
   672        installation.</li>
   673  
   674        <li>The server root compiled into the server. This is <code>
   675        /apache</code> by default, you can verify it by using <code>
   676        httpd.exe -V</code> and looking for a value labelled as
   677        <code>HTTPD_ROOT</code>.</li>
   678      </ol>
   679  
   680      <p>During the installation, a version-specific registry key is
   681      created in the Windows registry. The location of this key depends
   682      on the type of the installation. If you chose to install Apache
   683      for all users, the key is located under the
   684      <code>HKEY_LOCAL_MACHINE</code> hive, like this (the version
   685      numbers will of course vary between different versions of Apache:
   686      </p>
   687  
   688      <div class="example"><p><code>
   689        HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Apache\2.2.2
   690      </code></p></div>
   691  
   692      <p>Correspondingly, if you chose to install Apache for the current
   693      user only, the key is located under the <code>HKEY_CURRENT_USER</code>
   694      hive, the contents of which are dependent of the user currently
   695      logged on:</p>
   696  
   697      <div class="example"><p><code>
   698        HKEY_CURRENT_USER\SOFTWARE\Apache Software Foundation\Apache\2.2.2
   699      </code></p></div>
   700  
   701      <p>This key is compiled into the server and can enable you to test
   702      new versions without affecting the current version. Of course, you
   703      must take care not to install the new version in the same
   704      directory as another version.</p>
   705  
   706      <p>If you did not do a binary install, Apache will in some
   707      scenarios complain about the missing registry key. This warning can
   708      be ignored if the server was otherwise able to find its
   709      configuration file.</p>
   710  
   711      <p>The value of this key is the
   712      <code class="directive"><a href="../mod/core.html#serverroot">ServerRoot</a></code> directory which
   713      contains the <code>conf</code> subdirectory. When Apache starts it
   714      reads the <code>httpd.conf</code> file from that directory. If
   715      this file contains a <code class="directive"><a href="../mod/core.html#serverroot">ServerRoot</a></code>
   716      directive which contains a different directory from the one
   717      obtained from the registry key above, Apache will forget the
   718      registry key and use the directory from the configuration file. If
   719      you copy the Apache directory or configuration files to a new
   720      location it is vital that you update the
   721      <code class="directive"><a href="../mod/core.html#serverroot">ServerRoot</a></code> directive in the
   722      <code>httpd.conf</code> file to reflect the new location.</p>
   723    </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
   724  <div class="section">
   725  <h2><a name="test" id="test">Testing the Installation</a></h2>
   726      
   727  
   728      <p>After starting Apache (either in a console window or as a
   729      service) it will be listening on port 80 (unless you changed the
   730      <code class="directive"><a href="../mod/mpm_common.html#listen">Listen</a></code> directive in the
   731      configuration files or installed Apache only for the current user).
   732      To connect to the server and access the default page, launch a
   733      browser and enter this URL:</p>
   734  
   735      <div class="example"><p><code>
   736        http://localhost/
   737      </code></p></div>
   738  
   739      <p>Apache should respond with a welcome page and you should see
   740      "It Works!". If nothing happens or you get an error, look in the
   741      <code>error.log</code> file in the <code>logs</code> subdirectory.
   742      If your host is not connected to the net, or if you have serious
   743      problems with your DNS (Domain Name Service) configuration, you
   744      may have to use this URL:</p>
   745  
   746      <div class="example"><p><code>
   747        http://127.0.0.1/
   748      </code></p></div>
   749  
   750      <p>If you happen to be running Apache on an alternate port, you
   751      need to explicitly put that in the URL:</p>
   752  
   753      <div class="example"><p><code>
   754        http://127.0.0.1:8080/
   755      </code></p></div>
   756  
   757      <p>Once your basic installation is working, you should configure it
   758      properly by editing the files in the <code>conf</code> subdirectory.
   759      Again, if you change the configuration of the Windows NT service
   760      for Apache, first attempt to start it from the command line to
   761      make sure that the service starts with no errors.</p>
   762  
   763      <p>Because Apache <strong>cannot</strong> share the same port with
   764      another TCP/IP application, you may need to stop, uninstall or reconfigure
   765      certain other services before running Apache. These conflicting
   766      services include other WWW servers, some firewall implementations,
   767      and even some client applications (such as Skype) which will use port
   768      80 to attempt to bypass firewall issues.</p>
   769    </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
   770  <div class="section">
   771  <h2><a name="windrivemap" id="windrivemap">Configuring Access to Network Resources</a></h2>
   772      
   773  
   774    <p>Access to files over the network can be specified using two
   775    mechanisms provided by Windows:</p>
   776  
   777    <dl>
   778      <dt>Mapped drive letters</dt>
   779      <dd>e.g., <code>Alias /images/ Z:/</code></dd>
   780  
   781      <dt>UNC paths</dt>
   782      <dd>e.g., <code>Alias /images/ //imagehost/www/images/</code></dd>
   783    </dl>
   784  
   785    <p>Mapped drive letters allow the administrator to maintain the
   786    mapping to a specific machine and path outside of the Apache httpd
   787    configuration.  However, these mappings are associated only with
   788    interactive sessions and are not directly available to Apache httpd
   789    when it is started as a service.  <strong>Use only UNC paths for
   790    network resources in httpd.conf</strong> so that the resources can
   791    be accessed consistently regardless of how Apache httpd is started.
   792    (Arcane and error prone procedures may work around the restriction
   793    on mapped drive letters, but this is not recommended.)</p>
   794  
   795    <div class="example"><h3>Example DocumentRoot with UNC path</h3><p><code>
   796    DocumentRoot //dochost/www/html/
   797    </code></p></div>
   798  
   799    <div class="example"><h3>Example DocumentRoot with IP address in UNC path</h3><p><code>
   800    DocumentRoot //192.168.1.50/docs/<br />
   801    </code></p></div>
   802  
   803    <div class="example"><h3>Example Alias and corresponding Directory with UNC path</h3><p><code>
   804    Alias /images/ //imagehost/www/images/<br />
   805    <br />
   806    &lt;Directory //imagehost/www/images/&gt;<br />
   807    ...<br />
   808    &lt;Directory&gt;<br />
   809    </code></p></div>
   810  
   811    <p>When running Apache httpd as a service, you must create a
   812    separate account in order to access network resources, as described
   813    above.</p>
   814    </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
   815  <div class="section">
   816  <h2><a name="tuning" id="tuning">Windows Tuning</a></h2>
   817      
   818      <ul>
   819        <li><p>If more than a few dozen piped loggers are used on an operating system 
   820        instance, scaling up the "desktop heap" is often necessary. For
   821        more detailed information, refer to the <a href="../logs.html#piped">piped logging</a> documentation.</p></li>
   822      </ul>
   823    </div></div>
   824  <div class="bottomlang">
   825  <p><span>Available Languages: </span><a href="../en/platform/windows.html" title="English">&nbsp;en&nbsp;</a> |
   826  <a href="../ko/platform/windows.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a></p>
   827  </div><div class="top"><a href="#page-header"><img src="../images/up.gif" alt="top" /></a></div><div class="section"><h2><a id="comments_section" name="comments_section">Comments</a></h2><div class="warning"><strong>Notice:</strong><br />This is not a Q&amp;A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our <a href="http://httpd.apache.org/lists.html">mailing lists</a>.</div>
   828  <script type="text/javascript"><!--//--><![CDATA[//><!--
   829  var comments_shortname = 'httpd';
   830  var comments_identifier = 'http://httpd.apache.org/docs/2.2/platform/windows.html';
   831  (function(w, d) {
   832      if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
   833          d.write('<div id="comments_thread"><\/div>');
   834          var s = d.createElement('script');
   835          s.type = 'text/javascript';
   836          s.async = true;
   837          s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
   838          (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
   839      }
   840      else { 
   841          d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
   842      }
   843  })(window, document);
   844  //--><!]]></script></div><div id="footer">
   845  <p class="apache">Copyright 2017 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>
   846  <p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!--
   847  if (typeof(prettyPrint) !== 'undefined') {
   848      prettyPrint();
   849  }
   850  //--><!]]></script>
   851  </body></html>