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="<-" alt="<-" src="../images/left.gif" /></a></div> 23 <div id="path"> 24 <a href="http://www.apache.org/">Apache</a> > <a href="http://httpd.apache.org/">HTTP Server</a> > <a href="http://httpd.apache.org/docs/">Documentation</a> > <a href="../">Version 2.2</a> > <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"> en </a> | 29 <a href="../ko/platform/windows.html" hreflang="ko" rel="alternate" title="Korean"> ko </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"><Location></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"><Directory></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 --> Programs --> Apache HTTP Server 556 2.2.xx --> 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 --> 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 < 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 <Directory //imagehost/www/images/><br /> 807 ...<br /> 808 <Directory><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"> en </a> | 826 <a href="../ko/platform/windows.html" hreflang="ko" rel="alternate" title="Korean"> ko </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&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>