]> granicus.if.org Git - apache/blob - docs/manual/platform/windows.html.en
xforms
[apache] / docs / manual / platform / windows.html.en
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         XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
5               This file is generated from xml source: DO NOT EDIT
6         XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
7       -->
8 <title>Using Apache HTTP Server on Microsoft Windows - Apache HTTP Server</title>
9 <link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
10 <link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
11 <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" />
12 <script src="../style/scripts/prettify.js" type="text/javascript">
13 </script>
14
15 <link href="../images/favicon.ico" rel="shortcut icon" /></head>
16 <body id="manual-page"><div id="page-header">
17 <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>
18 <p class="apache">Apache HTTP Server Version 2.5</p>
19 <img alt="" src="../images/feather.gif" /></div>
20 <div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
21 <div id="path">
22 <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.5</a> &gt; <a href="./">Platform Specific Notes</a></div><div id="page-content"><div id="preamble"><h1>Using Apache HTTP Server on Microsoft Windows</h1>
23 <div class="toplang">
24 <p><span>Available Languages: </span><a href="../en/platform/windows.html" title="English">&nbsp;en&nbsp;</a> |
25 <a href="../ko/platform/windows.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a></p>
26 </div>
27
28     <p>This document explains how to install, configure and run
29     Apache 2.3 under Microsoft Windows.  If you have questions after
30     reviewing the documentation (and any event and error logs), you
31     should consult the peer-supported
32     <a href="http://httpd.apache.org/userslist.html">users' mailing
33     list</a>.</p>
34
35     <p>This document assumes that you are installing a binary
36     distribution of Apache. If you want to compile Apache yourself
37     (possibly to help with development or tracking down bugs),
38     see <a href="win_compiling.html">Compiling Apache for Microsoft
39     Windows</a>.</p>
40   </div>
41 <div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#req">Operating System Requirements</a></li>
42 <li><img alt="" src="../images/down.gif" /> <a href="#down">Downloading Apache for Windows</a></li>
43 <li><img alt="" src="../images/down.gif" /> <a href="#inst">Installing Apache for Windows</a></li>
44 <li><img alt="" src="../images/down.gif" /> <a href="#advinst">Advanced Installation Topics</a></li>
45 <li><img alt="" src="../images/down.gif" /> <a href="#cust">Customizing Apache for Windows</a></li>
46 <li><img alt="" src="../images/down.gif" /> <a href="#winsvc">Running Apache as a Service</a></li>
47 <li><img alt="" src="../images/down.gif" /> <a href="#wincons">Running Apache as a Console Application</a></li>
48 <li><img alt="" src="../images/down.gif" /> <a href="#test">Testing the Installation</a></li>
49 <li><img alt="" src="../images/down.gif" /> <a href="#windrivemap">Configuring Access to Network Resources</a></li>
50 </ul><ul class="seealso"><li><a href="#comments_section">Comments</a></li></ul></div>
51 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
52 <div class="section">
53 <h2><a name="req" id="req">Operating System Requirements</a></h2>
54     
55
56     <p>The primary Windows platform for running Apache 2.3 is Windows
57     2000 or later.  The binary installer only works with the x86 family
58     of processors, such as Intel and AMD processors.  Always obtain and
59     install the current service pack to avoid operating system bugs.</p>
60
61     <div class="note">Apache HTTP Server versions later than 2.2 will not run on any
62     operating system earlier than Windows 2000.</div>
63   </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
64 <div class="section">
65 <h2><a name="down" id="down">Downloading Apache for Windows</a></h2>
66     
67
68     <p>Information on the latest versions of Apache can be found on the
69     web site of the Apache web server at
70     <a href="http://httpd.apache.org/download.cgi">http://httpd.apache.org/download.cgi</a>.
71     There you will find the current release, as well as more recent alpha
72     or beta test versions, and a list of HTTP and FTP mirrors from which
73     you can download the Apache web server. Please use a mirror near to
74     you for a fast and reliable download.</p>
75
76     <p>For Windows installations you should download the version of
77     Apache for Windows with the <code>.msi</code> extension. This is a
78     single Microsoft Installer file, which contains a ready-to-run
79     build of Apache.  There is a separate <code>.zip</code> file,
80     which contains only the source code, see the summary above.</p>
81
82     <p>There is a choice between an *-openssl-*.msi flavor and
83     a *-no_ssl.msi flavor.  The *-openssl-*.msi flavor is distributed
84     by the Apache Software Foundation under ECCN 5D002 pursuant to
85     US Export Law license exception TSU.  This law may or may not
86     apply to your circumstance, please review the httpd README as
87     well as the <a href="http://www.apache.org/licenses/exports/">ASF
88     Export Classifications and Source Links</a> page.  The project
89     provides no further guidance to third parties in resolving the
90     legal circumstances which apply in each circumstance.</p>
91   </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
92 <div class="section">
93 <h2><a name="inst" id="inst">Installing Apache for Windows</a></h2>
94     
95
96     <p>You need Microsoft Installer 2.0 or above for the installation
97     to work.  For Windows NT 4.0 and 2000 refer to Microsoft's article
98     <a href="http://support.microsoft.com/kb/292539/">KB 292539</a>.
99     Windows XP and later do not require this update.</p>
100
101     <p>Note that you cannot install two versions of Apache 2.3 on the
102     same computer with the binary installer. You can, however, install
103     a version of the 1.3 series <strong>and</strong> a version of the
104     2.3 series on the same computer without problems. If you need to
105     have two different 2.3 versions on the same computer, you have to
106     <a href="win_compiling.html">compile and install Apache from the
107     source</a>.</p>
108
109     <p>Run the Apache <code>.msi</code> file you downloaded above. The
110     installation will ask you for these things:</p>
111
112     <ol>
113       <li><p><strong>Network Domain.</strong> Enter the DNS domain in which
114       your server is or will be registered in. For example, if your
115       server's full DNS name is <code>server.example.net</code>, you would
116       type <code>example.net</code> here.</p></li>
117
118       <li><p><strong>Server Name.</strong> Your server's full DNS name.
119       From the example above, you would type <code>server.example.net</code>
120       here.</p></li>
121
122       <li><p><strong>Administrator's Email Address.</strong> Enter the
123       server administrator's or webmaster's email address here. This
124       address will be displayed along with error messages to the client
125       by default.</p></li>
126
127       <li><p><strong>For whom to install Apache</strong> Select <code>for
128       All Users, on Port 80, as a Service - Recommended</code> if you'd
129       like your new Apache to listen at port 80 for incoming traffic.
130       It will run as a service (that is, Apache will run even if no one
131       is logged in on the server at the moment) Select <code>only for
132       the Current User, on Port 8080, when started Manually</code> if
133       you'd like to install Apache for your personal experimenting or
134       if you already have another WWW server running on port 80.</p></li>
135
136       <li><p><strong>The installation type.</strong> Select <code>Typical</code>
137       for everything except the source code and libraries for module
138       development. With <code>Custom</code> you can specify what to
139       install. A full install will require about 13 megabytes of free
140       disk space. This does <em>not</em> include the size of your web
141       site(s).</p></li>
142
143       <li><p><strong>Where to install.</strong> The default path is
144       <code>C:\Program Files\Apache Software Foundation</code>
145       under which a directory called
146       <code>Apache2.3</code> will be created by default.</p></li>
147     </ol>
148
149     <p>During the installation, Apache will configure the files in the
150     <code>conf</code> subdirectory to reflect the chosen installation
151     directory. However, if any of the configuration files in this
152     directory already exist, they will not be overwritten. Instead, the
153     new copy of the corresponding file will be left with the extension
154     <code>.default</code>. So, for example, if <code>conf\httpd.conf</code>
155     already exists, it will be renamed as <code>conf\httpd.conf.default</code>.
156     After the installation you should manually check to see what new
157     settings are in the <code>.default</code> file, and if necessary,
158     update your existing configuration file.</p>
159
160     <p>Also, if you already have a file called <code>htdocs\index.html</code>,
161     it will not be overwritten (and no <code>index.html.default</code>
162     will be installed either). This means it should be safe to install
163     Apache over an existing installation, although you would have to
164     stop the existing running server before doing the installation, and
165     then start the new one after the installation is finished.</p>
166
167     <p>After installing Apache, you must edit the configuration files
168     in the <code>conf</code> subdirectory as required. These files
169     will be configured during the installation so that Apache is ready
170     to be run from the directory it was installed into, with the
171     documents server from the subdirectory <code>htdocs</code>. There
172     are lots of other options which you should set before you really
173     start using Apache. However, to get started quickly, the files
174     should work as installed.</p>
175   </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
176 <div class="section">
177 <h2><a name="advinst" id="advinst">Advanced Installation Topics</a></h2>
178     
179
180     <p>One feature of the installer, "Build Headers and Libraries", can be
181     ignored by most users, but should be installed if compiling third party
182     modules.  The "APR Iconv Code Pages" can similarly be omitted by most
183     users, unless using <code class="module"><a href="../mod/mod_charset_lite.html">mod_charset_lite</a></code> or a third party
184     module which relies on APR internationalization features.</p>
185
186     <p>There are requests to ship a .zip file from time to time.  There is
187     no point in the ASF consuming additional storage, mirroring and bandwidth
188     for this purpose, because the .msi installer allows the installation
189     artifacts to all be unpacked using the <code>msiexec /a</code> network
190     installation option.  Using this command against any .msi will result
191     in an exploded tree of all of the individual files and components.</p>
192
193     <p>The installation options above can be customized by users familiar
194     with msiexec.exe options and silent installation.  The actual installer
195     sources are available in the httpd/httpd/win32-msi/ tree of the httpd
196     project subversion respository.  For reference, some of the more common
197     variables which may be modified are;</p>
198
199     <ul>
200       <li><code>AgreeToLicense</code> (toggle to "Yes")</li>
201       <li><code>ALLUSERS</code> (choose between Null and "1")</li>
202       <li><code>ApplicationUsers</code> (toggle to "OnlyCurrentUser")</li>
203       <li><code>EXISTING_APACHE_SERVICE_PATH</code></li>
204       <li><code>INSTALLDIR</code> (default "ProgramFilesFolder\Apache Software Foundation\Apache2.5\")</li>
205       <li><code>INSTALLLEVEL</code> (default "100", refer to list below)</li>
206       <li><code>RESOLVED_WINSOCK2</code> (toggle to "1")</li>
207       <li><code>SERVERADMIN</code></li>
208       <li><code>SERVERDOMAIN</code></li>
209       <li><code>SERVERNAME</code></li>
210       <li><code>SERVERPORT</code> (default "80")</li>
211       <li><code>SERVERSSLPORT</code> (default "443")</li>
212       <li><code>SERVICEINTERNALNAME</code> (default "Apache2.5", no spaces!)</li>
213       <li><code>SERVICENAME</code> (default "Apache2.5", include spaces)</li>
214       <li><code>SetupType</code> (default "Typical")</li>
215     </ul>
216
217     <p>The installation level of various features, which may be individually
218     toggled, include;</p>
219
220     <ul>
221       <li>Apache (1, base Apache HTTP Server 2.5 feature)</li>
222       <li>ApacheDocs (11, Apache Documentation)</li>
223       <li>ApacheMonitoring (41, Apache Service Taskbar Icon)</li>
224       <li>ApacheRuntime (1, Apache Runtime)</li>
225       <li>BuildFiles (101, Build Headers and Libraries)</li>
226       <li>Iconv (21, APR Iconv Code Pages)</li>
227       <li>OpensslBin (31, OpenSSL Runtime)</li>
228       <li>SslBin (41, Ssl Binaries)</li>
229     </ul>
230
231
232   </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
233 <div class="section">
234 <h2><a name="cust" id="cust">Customizing Apache for Windows</a></h2>
235     
236
237     <p>Apache is configured by the files in the <code>conf</code>
238     subdirectory. These are the same files used to configure the Unix
239     version, but there are a few different directives for Apache on
240     Windows. See the <a href="../mod/directives.html">directive index</a>
241     for all the available directives.</p>
242
243     <p>The main differences in Apache for Windows are:</p>
244     <ul>
245       <li><p>Because Apache for Windows is multithreaded, it does not
246       use a separate process for each request, as Apache can on Unix.
247       Instead there are usually only two Apache processes running: a
248       parent process, and a child which handles the requests. Within
249       the child process each request is handled by a separate thread.
250       </p>
251
252       <p>The process management directives are also different:</p>
253
254       <p><code class="directive"><a href="../mod/mpm_common.html#maxconnectionsperchild">MaxConnectionsPerChild</a></code>:
255       Like the Unix directive, this controls how many connections a single
256       child process will serve before exiting.
257       However, unlike on Unix, a replacement process is not instantly
258       available.  Use the default <code>MaxConnectionsPerChild 0</code>,
259       unless instructed to change the behavior to overcome a memory leak
260       in third party modules or in-process applications.</p>
261
262       <div class="warning"><strong>Warning: The server configuration
263       file is reread when a new child process is started. If you have
264       modified <code>httpd.conf</code>, the new child may not start or
265       you may receive unexpected results.</strong></div>
266
267       <p><code class="directive"><a href="../mod/mpm_common.html#threadsperchild">ThreadsPerChild</a></code>:
268       This directive is new. It tells the server how many threads it
269       should use. This is the maximum number of connections the server
270       can handle at once, so be sure to set this number high enough for
271       your site if you get a lot of hits. The recommended default is
272       <code>ThreadsPerChild 150</code>, but this must be adjusted to
273       reflect the greatest anticipated number of simultaneous
274       connections to accept.</p></li>
275
276       <li><p>The directives that accept filenames as arguments must use
277       Windows filenames instead of Unix ones. However, because Apache
278       may interpret backslashes as an "escape character" sequence, you
279       should consistently use forward slashes in path names, not
280       backslashes.  Drive letters can be used; if omitted, the drive
281       of the SystemRoot directive (or -d command line option) becomes
282       the default.</p></li>
283
284       <li><p>While filenames are generally case-insensitive on
285       Windows, URLs are still treated internally as case-sensitive
286       before they are mapped to the filesystem.  For example, the
287       <code class="directive"><a href="../mod/core.html#location">&lt;Location&gt;</a></code>,
288       <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
289       case-sensitive arguments.  For this reason, it is particularly
290       important to use the <code class="directive"><a href="../mod/core.html#directory">&lt;Directory&gt;</a></code> directive when attempting
291       to limit access to content in the filesystem, since this
292       directive applies to any content in a directory, regardless of
293       how it is accessed.  If you wish to assure that only lowercase
294       is used in URLs, you can use something like:</p>
295
296       <pre class="prettyprint lang-config">
297 RewriteEngine On
298 RewriteMap lowercase int:tolower
299 RewriteCond %{REQUEST_URI} [A-Z]
300 RewriteRule (.*) ${lowercase:$1} [R,L]
301       </pre>
302 </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.3 is installed at C:\Program Files, then the root
311       directory, Program Files and Apache2.3 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.3\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       <pre class="prettyprint lang-config">
324         LoadModule status_module modules/mod_status.so
325       </pre>
326
327
328       <p>Information on <a href="../mod/mod_so.html#creating">creating
329       loadable modules</a> is also available.</p></li>
330
331       <li><p>Apache can also load ISAPI (Internet Server Application
332       Programming Interface) extensions such as those used by Microsoft
333       IIS and other Windows servers. <a href="../mod/mod_isapi.html">More
334       information is available</a>. Note that Apache <strong>cannot</strong>
335       load ISAPI Filters, and ISAPI Handlers with some Microsoft feature
336       extensions will not work.</p></li>
337
338       <li><p>When running CGI scripts, the method Apache uses to find
339       the interpreter for the script is configurable using the
340       <code class="directive"><a href="../mod/core.html#scriptinterpretersource">ScriptInterpreterSource</a></code>
341       directive.</p></li>
342
343       <li><p>Since it is often difficult to manage files with names
344       like <code>.htaccess</code> in Windows, you may find it useful to
345       change the name of this per-directory configuration file using
346       the <code class="directive"><a href="../mod/core.html#accessfilename">AccessFilename</a></code>
347       directive.</p></li>
348
349       <li><p>Any errors during Apache startup are logged into the
350       Windows event log when running on Windows NT. This mechanism
351       acts as a backup for those situations where Apache is not yet
352       prepared to use the <code>error.log</code> file. You can
353       review the Windows Applicat Event Log by using the Event Viewer,
354       e.g. Start - Settings - Control Panel - Administrative Tools
355       - Event Viewer.</p></li>
356     </ul>
357
358   </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
359 <div class="section">
360 <h2><a name="winsvc" id="winsvc">Running Apache as a Service</a></h2>
361     
362
363     <p>You can install Apache as a service automatically during the
364     installation. If you chose to install for all users, the
365     installation will create an Apache service for you. If you specify
366     to install for yourself only, you can manually register Apache as a
367     service after the installation. You have to be a member of the
368     Administrators group for the service installation to succeed.</p>
369
370     <p>Apache comes with a utility called the Apache Service Monitor.
371     With it you can see and manage the state of all installed Apache
372     services on any machine on your network. To be able to manage an
373     Apache service with the monitor, you have to first install the
374     service (either automatically via the installation or manually).
375     </p>
376
377     <p>You can install Apache as a Windows NT service as follows from
378     the command prompt at the Apache <code>bin</code> subdirectory:</p>
379
380     <div class="example"><p><code>
381       httpd.exe -k install
382     </code></p></div>
383
384     <p>If you need to specify the name of the service you want to
385     install, use the following command. You have to do this if you
386     have several different service installations of Apache on your
387     computer.</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.3</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.3</code> and <code>NET STOP
420     Apache2.3</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
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
440     </code></p></div>
441
442     <p>or</p>
443
444     <div class="example"><p><code>
445       httpd.exe -k shutdown
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
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.3
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.3 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     especially during initial configuration and testing.</p>
542
543     <p>To run Apache from the command line as a console application,
544     use the following command:</p>
545
546     <div class="example"><p><code>
547       httpd.exe
548     </code></p></div>
549
550     <p>Apache will execute, and will remain running until it is stopped
551     by pressing Control-C.</p>
552
553     <p>You can also run Apache via the shortcut Start Apache in Console
554     placed to <code>Start Menu --&gt; Programs --&gt; Apache HTTP Server
555     2.3.xx --&gt; Control Apache Server</code> during the installation.
556     This will open a console window and start Apache inside it. If you
557     don't have Apache installed as a service, the window will remain
558     visible until you stop Apache by pressing Control-C in the console
559     window where Apache is running in. The server will exit in a few
560     seconds. However, if you do have Apache installed as a service, the
561     shortcut starts the service. If the Apache service is running
562     already, the shortcut doesn't do anything.</p>
563
564     <p>If Apache is running as a service, you can tell it to stop by opening another console
565     window and entering:</p>
566
567     <div class="example"><p><code>
568       httpd.exe -k shutdown
569     </code></p></div>
570
571     <p>Running as a service should be preferred over running in a
572     console window because this lets Apache end any current operations
573     and clean up gracefully.</p>
574
575     <p>But if the server is running in a console window, you can
576     only stop it by pressing Control-C in the same window.</p>
577
578     <p>You can also tell Apache to restart. This forces it to reread
579     the configuration file. Any operations in progress are allowed to
580     complete without interruption. To restart Apache, either press
581     Control-Break in the console window you used for starting Apache,
582     or enter</p>
583
584     <div class="example"><p><code>
585       httpd.exe -k restart
586     </code></p></div>
587
588     <p>if the server is running as a service.</p>
589
590     <div class="note">Note for people familiar with the Unix version of Apache:
591     these commands provide a Windows equivalent to <code>kill -TERM
592     <em>pid</em></code> and <code>kill -USR1 <em>pid</em></code>. The
593     command line option used, <code>-k</code>, was chosen as a reminder
594     of the <code>kill</code> command used on Unix.</div>
595
596     <p>If the Apache console window closes immediately or unexpectedly
597     after startup, open the Command Prompt from the Start Menu --&gt;
598     Programs. Change to the folder to which you installed Apache, type
599     the command <code>httpd.exe</code>, and read the error message. Then
600     change to the logs folder, and review the <code>error.log</code>
601     file for configuration mistakes. If you accepted the defaults when
602     you installed Apache, the commands would be:</p>
603
604     <div class="example"><p><code>
605       c: <br />
606       cd "\Program Files\Apache Software Foundation\Apache2.3\bin" <br />
607       httpd.exe
608     </code></p></div>
609
610     <p>Then wait for Apache to stop, or press Control-C. Then enter the
611     following:</p>
612
613     <div class="example"><p><code>
614       cd ..\logs <br />
615       more &lt; error.log
616     </code></p></div>
617
618     <p>When working with Apache it is important to know how it will
619     find the configuration file. You can specify a configuration file
620     on the command line in two ways:</p>
621
622     <ul>
623       <li><p><code>-f</code> specifies an absolute or relative path to
624       a particular configuration file:</p>
625
626       <div class="example"><p><code>
627         httpd.exe -f "c:\my server files\anotherconfig.conf"
628       </code></p></div>
629
630       <p>or</p>
631
632       <div class="example"><p><code>
633         httpd.exe -f files\anotherconfig.conf
634       </code></p></div></li>
635
636       <li><p><code>-n</code> specifies the installed Apache service
637       whose configuration file is to be used:</p>
638
639       <div class="example"><p><code>
640         httpd.exe -n "MyServiceName"
641       </code></p></div>
642       </li>
643     </ul>
644
645     <p>In both of these cases, the proper
646     <code class="directive"><a href="../mod/core.html#serverroot">ServerRoot</a></code> should be set in
647     the configuration file.</p>
648
649     <p>If you don't specify a configuration file with <code>-f</code>
650     or <code>-n</code>, Apache will use the file name compiled into the
651     server, such as <code>conf\httpd.conf</code>. This built-in path
652     is relative to the installation directory. You can verify the compiled
653     file name from a value labelled as <code>SERVER_CONFIG_FILE</code> when
654     invoking Apache with the <code>-V</code> switch, like this:</p>
655
656     <div class="example"><p><code>
657       httpd.exe -V
658     </code></p></div>
659
660     <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>
661
662     <ol>
663       <li>A <code class="directive"><a href="../mod/core.html#serverroot">ServerRoot</a></code> directive
664       via the <code>-C</code> command line switch.</li>
665
666       <li>The <code>-d</code> switch on the command line.</li>
667
668       <li>Current working directory.</li>
669
670       <li>A registry entry which was created if you did a binary
671       installation.</li>
672
673       <li>The server root compiled into the server. This is <code>
674       /apache</code> by default, you can verify it by using <code>
675       httpd.exe -V</code> and looking for a value labelled as
676       <code>HTTPD_ROOT</code>.</li>
677     </ol>
678
679     <p>During the installation, a version-specific registry key is
680     created in the Windows registry. The location of this key depends
681     on the type of the installation. If you chose to install Apache
682     for all users, the key is located under the
683     <code>HKEY_LOCAL_MACHINE</code> hive, like this (the version
684     numbers will of course vary between different versions of Apache:
685     </p>
686
687     <div class="example"><p><code>
688       HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Apache\2.50
689     </code></p></div>
690
691     <p>Correspondingly, if you chose to install Apache for the current
692     user only, the key is located under the <code>HKEY_CURRENT_USER</code>
693     hive, the contents of which are dependent of the user currently
694     logged on:</p>
695
696     <div class="example"><p><code>
697       HKEY_CURRENT_USER\SOFTWARE\Apache Software Foundation\Apache\2.50
698     </code></p></div>
699
700     <p>This key is compiled into the server and can enable you to test
701     new versions without affecting the current version. Of course, you
702     must take care not to install the new version in the same
703     directory as another version.</p>
704
705     <p>If you did not do a binary install, Apache will in some
706     scenarios complain about the missing registry key. This warning can
707     be ignored if the server was otherwise able to find its
708     configuration file.</p>
709
710     <p>The value of this key is the
711     <code class="directive"><a href="../mod/core.html#serverroot">ServerRoot</a></code> directory which
712     contains the <code>conf</code> subdirectory. When Apache starts it
713     reads the <code>httpd.conf</code> file from that directory. If
714     this file contains a <code class="directive"><a href="../mod/core.html#serverroot">ServerRoot</a></code>
715     directive which contains a different directory from the one
716     obtained from the registry key above, Apache will forget the
717     registry key and use the directory from the configuration file. If
718     you copy the Apache directory or configuration files to a new
719     location it is vital that you update the
720     <code class="directive"><a href="../mod/core.html#serverroot">ServerRoot</a></code> directive in the
721     <code>httpd.conf</code> file to reflect the new location.</p>
722   </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
723 <div class="section">
724 <h2><a name="test" id="test">Testing the Installation</a></h2>
725     
726
727     <p>After starting Apache (either in a console window or as a
728     service) it will be listening on port 80 (unless you changed the
729     <code class="directive"><a href="../mod/mpm_common.html#listen">Listen</a></code> directive in the
730     configuration files or installed Apache only for the current user).
731     To connect to the server and access the default page, launch a
732     browser and enter this URL:</p>
733
734     <div class="example"><p><code>
735       http://localhost/
736     </code></p></div>
737
738     <p>Apache should respond with a welcome page and you should see
739     "It Works!". If nothing happens or you get an error, look in the
740     <code>error.log</code> file in the <code>logs</code> subdirectory.
741     If your host is not connected to the net, or if you have serious
742     problems with your DNS (Domain Name Service) configuration, you
743     may have to use this URL:</p>
744
745     <div class="example"><p><code>
746       http://127.0.0.1/
747     </code></p></div>
748
749     <p>If you happen to be running Apache on an alternate port, you
750     need to explicitly put that in the URL:</p>
751
752     <div class="example"><p><code>
753       http://127.0.0.1:8080/
754     </code></p></div>
755
756     <p>Once your basic installation is working, you should configure it
757     properly by editing the files in the <code>conf</code> subdirectory.
758     Again, if you change the configuration of the Windows NT service
759     for Apache, first attempt to start it from the command line to
760     make sure that the service starts with no errors.</p>
761
762     <p>Because Apache <strong>cannot</strong> share the same port with
763     another TCP/IP application, you may need to stop, uninstall or reconfigure
764     certain other services before running Apache. These conflicting
765     services include other WWW servers, some firewall implementations,
766     and even some client applications (such as Skype) which will use port
767     80 to attempt to bypass firewall issues.</p>
768   </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
769 <div class="section">
770 <h2><a name="windrivemap" id="windrivemap">Configuring Access to Network Resources</a></h2>
771     
772
773   <p>Access to files over the network can be specified using two
774   mechanisms provided by Windows:</p>
775
776   <dl>
777     <dt>Mapped drive letters</dt>
778     <dd>e.g., <code>Alias /images/ Z:/</code></dd>
779
780     <dt>UNC paths</dt>
781     <dd>e.g., <code>Alias /images/ //imagehost/www/images/</code></dd>
782   </dl>
783
784   <p>Mapped drive letters allow the administrator to maintain the
785   mapping to a specific machine and path outside of the Apache httpd
786   configuration.  However, these mappings are associated only with
787   interactive sessions and are not directly available to Apache httpd
788   when it is started as a service.  <strong>Use only UNC paths for
789   network resources in httpd.conf</strong> so that the resources can
790   be accessed consistently regardless of how Apache httpd is started.
791   (Arcane and error prone procedures may work around the restriction
792   on mapped drive letters, but this is not recommended.)</p>
793
794   <div class="example"><h3>Example DocumentRoot with UNC path</h3><pre class="prettyprint lang-config">
795   DocumentRoot //dochost/www/html/
796   </pre>
797 </div>
798
799   <div class="example"><h3>Example DocumentRoot with IP address in UNC path</h3><pre class="prettyprint lang-config">
800   DocumentRoot //192.168.1.50/docs/
801   </pre>
802 </div>
803
804   <div class="example"><h3>Example Alias and corresponding Directory with UNC path</h3><pre class="prettyprint lang-config">
805 Alias /images/ //imagehost/www/images/
806
807 &lt;Directory //imagehost/www/images/&gt;
808 #...
809 &lt;Directory&gt;
810   </pre>
811 </div>
812
813   <p>When running Apache httpd as a service, you must create a
814   separate account in order to access network resources, as described
815   above.</p>
816   </div></div>
817 <div class="bottomlang">
818 <p><span>Available Languages: </span><a href="../en/platform/windows.html" title="English">&nbsp;en&nbsp;</a> |
819 <a href="../ko/platform/windows.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a></p>
820 </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>This section is experimental!</strong><br />Comments placed here should not be expected 
821 to last beyond the testing phase of this system, nor do we in any way guarantee that we'll read them.</div>
822 <div id="disqus_thread">
823 </div><script type="text/javascript"><!--//--><![CDATA[//><!--
824 var lang = 'en';
825 var disqus_shortname = 'httpd';
826 var disqus_identifier = window.location.href.replace(/(current|trunk)/, "2.4").replace(/\/[a-z]{2}\//, "/").replace(window.location.protocol, "http:") + '.' + lang;
827 if (disqus_identifier.indexOf("httpd.apache.org") != -1) {
828     (function() {
829                 var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
830                 dsq.src = window.location.protocol + '//' + disqus_shortname + '.disqus.com/embed.js';
831             (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
832         })();
833 } else {
834     var text = document.createTextNode("Comments have been disabled for offline viewing.");
835     document.getElementById('disqus_thread').appendChild(text);
836 }
837 //--><!]]></script></div><div id="footer">
838 <p class="apache">Copyright 2012 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>
839 <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[//><!--
840 if (typeof(prettyPrint) !== undefined) {
841     prettyPrint();
842 }
843 //--><!]]></script>
844 </body></html>