]> granicus.if.org Git - apache/blob - docs/manual/install.xml
Clean up a stray <p>, copy n paste error
[apache] / docs / manual / install.xml
1 <?xml version='1.0' encoding='UTF-8' ?>
2 <!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd">
3 <?xml-stylesheet type="text/xsl" href="./style/manual.en.xsl"?>
4 <!-- $LastChangedRevision$ -->
5
6 <!--
7  Licensed to the Apache Software Foundation (ASF) under one or more
8  contributor license agreements.  See the NOTICE file distributed with
9  this work for additional information regarding copyright ownership.
10  The ASF licenses this file to You under the Apache License, Version 2.0
11  (the "License"); you may not use this file except in compliance with
12  the License.  You may obtain a copy of the License at
13
14      http://www.apache.org/licenses/LICENSE-2.0
15
16  Unless required by applicable law or agreed to in writing, software
17  distributed under the License is distributed on an "AS IS" BASIS,
18  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19  See the License for the specific language governing permissions and
20  limitations under the License.
21 -->
22
23 <manualpage metafile="install.xml.meta">
24
25   <title>Compiling and Installing</title>
26
27 <summary>
28
29     <p>This document covers compilation and installation of the Apache HTTP Server
30     on Unix and Unix-like systems only. For compiling and
31     installation on Windows, see <a
32     href="platform/windows.html">Using Apache HTTP Server with Microsoft
33     Windows</a> and <a
34     href="platform/win_compiling.html">Compiling Apache for Microsoft Windows</a>.
35     For other platforms, see the <a
36     href="platform/">platform</a> documentation.</p>
37
38     <p>Apache httpd uses <code>libtool</code> and <code>autoconf</code>
39     to create a build environment that looks like many other Open Source
40     projects.</p>
41
42     <p>If you are upgrading from one minor version to the next (for
43     example, 2.4.8 to 2.4.9), please skip down to the <a
44     href="#upgrading">upgrading</a> section.</p>
45
46 </summary>
47
48 <seealso><a href="programs/configure.html">Configure the source tree</a></seealso>
49 <seealso><a href="invoking.html">Starting Apache httpd</a></seealso>
50 <seealso><a href="stopping.html">Stopping and Restarting</a></seealso>
51
52 <section id="overview"><title>Overview for the
53     impatient</title>
54
55     <table>
56       <columnspec><column width=".13"/><column width=".80"/></columnspec>
57       <tr>
58         <td><a href="#download">Download</a></td>
59
60         <td><code>$ lynx http://httpd.apache.org/download.cgi</code>
61         </td>
62       </tr>
63
64       <tr>
65         <td><a href="#extract">Extract</a></td>
66
67         <td><code>$ gzip -d httpd-<em>NN</em>.tar.gz<br />
68          $ tar xvf httpd-<em>NN</em>.tar<br />
69          $ cd httpd-<em>NN</em></code></td>
70       </tr>
71
72       <tr>
73         <td><a href="#configure">Configure</a></td>
74
75         <td><code>$ ./configure --prefix=<em>PREFIX</em></code>
76         </td>
77       </tr>
78
79       <tr>
80         <td><a href="#compile">Compile</a></td>
81
82         <td><code>$ make</code> </td>
83       </tr>
84
85       <tr>
86         <td><a href="#install">Install</a></td>
87
88         <td><code>$ make install</code> </td>
89       </tr>
90
91       <tr>
92         <td><a href="#customize">Customize</a></td>
93
94         <td><code>$ vi <em>PREFIX</em>/conf/httpd.conf</code> </td>
95       </tr>
96
97       <tr>
98         <td><a href="#test">Test</a></td>
99
100         <td><code>$ <em>PREFIX</em>/bin/apachectl -k start</code>
101         </td>
102       </tr>
103     </table>
104
105     <p><em>NN</em> must be replaced with the current version
106     number, and <em>PREFIX</em> must be replaced with the
107     filesystem path under which the server should be installed. If
108     <em>PREFIX</em> is not specified, it defaults to
109     <code>/usr/local/apache2</code>.</p>
110
111     <p>Each section of the compilation and installation process is
112     described in more detail below, beginning with the requirements
113     for compiling and installing Apache httpd.</p>
114 </section>
115
116 <section id="requirements"><title>Requirements</title>
117
118     <p>The following requirements exist for building Apache httpd:</p>
119
120     <dl>
121       <dt>APR and APR-Util</dt>
122       <dd>Make sure you have APR and APR-Util already installed on
123       your system. If you don't, or prefer to not use the system-provided
124       versions, download the latest versions of both APR and APR-Util
125       from <a href="http://apr.apache.org/">Apache APR</a>, unpack
126       them into <code>/httpd_source_tree_root/srclib/apr</code> and /httpd_source_tree_root<code>/srclib/apr-util</code>
127       (be sure the directory names do not have version numbers; for example,
128       the APR distribution must be under /httpd_source_tree_root/srclib/apr/) and use
129       <code>./configure</code>'s <code>--with-included-apr</code>
130       option.  On some platforms, you may have to install the
131       corresponding <code>-dev</code> packages to allow httpd to build
132       against your installed copy of APR and APR-Util.</dd>
133
134       <dt>Perl-Compatible Regular Expressions Library (PCRE)</dt>
135       <dd>This library is required but not longer bundled with httpd.
136       Download the source code from <a href="http://www.pcre.org/">http://www.pcre.org</a>,
137       or install a Port or Package.  If your build system can't find
138       the pcre-config script installed by the PCRE build, point to it
139       using the <code>--with-pcre</code> parameter.  On some platforms,
140       you may have to install the corresponding <code>-dev</code>
141       package to allow httpd to build against your installed copy
142       of PCRE.</dd>
143
144       <dt>Disk Space</dt>
145       <dd>Make sure you have at least 50 MB of temporary free disk
146       space available. After installation the server occupies
147       approximately 10 MB of disk space. The actual disk space
148       requirements will vary considerably based on your chosen
149       configuration options, any third-party modules, and, of course,
150       the size of the web site or sites that you have on the server.</dd>
151
152       <dt>ANSI-C Compiler and Build System</dt>
153       <dd>Make sure you have an ANSI-C compiler installed. The <a
154       href="http://gcc.gnu.org/">GNU C
155       compiler (GCC)</a> from the <a
156       href="http://www.gnu.org/">Free Software Foundation (FSF)</a>
157       is recommended. If you don't have GCC
158       then at least make sure your vendor's compiler is ANSI
159       compliant. In addition, your <code>PATH</code> must contain
160       basic build tools such as <code>make</code>.</dd>
161
162       <dt>Accurate time keeping</dt>
163       <dd>Elements of the HTTP protocol are expressed as the time of
164       day. So, it's time to investigate setting some time
165       synchronization facility on your system. Usually the
166       <code>ntpdate</code> or <code>xntpd</code> programs are used for
167       this purpose which are based on the Network Time Protocol (NTP).
168       See the <a href="http://www.ntp.org">NTP
169       homepage</a> for more details about NTP software and public
170       time servers.</dd>
171
172       <dt><a href="http://www.perl.org/">Perl 5</a>
173       [OPTIONAL]</dt>
174       <dd>For some of the support scripts like <program>
175       apxs</program> or <program>dbmmanage</program> (which are
176       written in Perl) the Perl 5 interpreter is required (versions
177       5.003 or newer are sufficient).  If no Perl 5 interpreter is found by the
178       <program>configure</program> script, you will not be able to use
179       the affected support scripts. Of course, you will still be able to
180       build and use Apache httpd.</dd>
181     </dl>
182 </section>
183
184 <section id="download"><title>Download</title>
185
186     <p>The Apache HTTP Server can be downloaded from the <a
187     href="http://httpd.apache.org/download.cgi">Apache HTTP Server
188     download site</a>, which lists several mirrors.  Most users of
189     Apache on unix-like systems will be better off downloading and
190     compiling a source version.  The build process (described below) is
191     easy, and it allows you to customize your server to suit your needs.
192     In addition, binary releases are often not up to date with the latest
193     source releases.  If you do download a binary, follow the instructions
194     in the <code>INSTALL.bindist</code> file inside the distribution.</p>
195
196     <p>After downloading, it is important to verify that you have a
197     complete and unmodified version of the Apache HTTP Server. This
198     can be accomplished by testing the downloaded tarball against the
199     PGP signature.  Details on how to do this are available on the <a
200     href="http://httpd.apache.org/download.cgi#verify">download
201     page</a> and an extended example is available describing the <a
202     href="http://httpd.apache.org/dev/verification.html">use of
203     PGP</a>.</p>
204
205 </section>
206
207 <section id="extract"><title>Extract</title>
208
209     <p>Extracting the source from the Apache HTTP Server tarball is a
210     simple matter of uncompressing, and then untarring:</p>
211
212 <example>
213 $ gzip -d httpd-<em>NN</em>.tar.gz<br />
214 $ tar xvf httpd-<em>NN</em>.tar
215 </example>
216
217     <p>This will create a new directory under the current directory
218     containing the source code for the distribution. You should
219     <code>cd</code> into that directory before proceeding with
220     compiling the server.</p>
221 </section>
222
223 <section id="configure"><title>Configuring the source tree</title>
224
225     <p>The next step is to configure the Apache source tree for your
226     particular platform and personal requirements. This is done using
227     the script <program>configure</program> included in
228     the root directory of the distribution. (Developers downloading
229     an unreleased version of the Apache source tree will need to have
230     <code>autoconf</code> and <code>libtool</code> installed and will
231     need to run <code>buildconf</code> before proceeding with the next
232     steps. This is not necessary for official releases.)</p>
233
234     <p>To configure the source tree using all the default options,
235     simply type <code>./configure</code>. To change the default
236     options, <program>configure</program> accepts a variety of variables
237     and command line options.</p>
238
239     <p>The most important option is the location <code>--prefix</code>
240     where Apache is to be installed later, because Apache has to be
241     configured for this location to work correctly.  More fine-tuned
242     control of the location of files is possible with additional <a
243     href="programs/configure.html#installationdirectories">configure
244     options</a>.</p>
245
246     <p>Also at this point, you can specify which <a
247     href="programs/configure.html#optionalfeatures">features</a> you
248     want included in Apache by enabling and disabling <a
249     href="mod/">modules</a>.  Apache comes with a wide range of modules
250     included by default.  They will be compiled as
251     <a href="dso.html">shared objects (DSOs)</a> which can be loaded
252     or unloaded at runtime.
253     You can also choose to compile modules statically by using the option
254     <code>--enable-<var>module</var>=static</code>.</p>
255
256     <p>Additional modules are enabled using the
257     <code>--enable-<var>module</var></code> option, where
258     <var>module</var> is the name of the module with the
259     <code>mod_</code> string removed and with any underscore converted
260     to a dash.  Similarly, you can disable modules with the
261     <code>--disable-<var>module</var></code> option.  Be careful when
262     using these options, since <program>configure</program> cannot warn you
263     if the module you specify does not exist; it will simply ignore the
264     option.</p>
265
266     <p>In addition, it is sometimes necessary to provide the
267     <program>configure</program> script with extra information about the
268     location of your compiler, libraries, or header files.  This is
269     done by passing either environment variables or command line
270     options to <program>configure</program>.  For more information, see the
271     <program>configure</program> manual page. Or invoke
272     <program>configure</program> using the <code>--help</code> option.</p>
273
274     <p>For a short impression of what possibilities you have, here
275     is a typical example which compiles Apache for the installation
276     tree <code>/sw/pkg/apache</code> with a particular compiler and flags
277     plus the two additional modules <module>mod_ldap</module> and
278     <module>mod_lua</module>:</p>
279
280 <example>
281       $ CC="pgcc" CFLAGS="-O2" \<br />
282        ./configure --prefix=/sw/pkg/apache \<br />
283        --enable-ldap=shared \<br />
284        --enable-lua=shared
285 </example>
286
287     <p>When <program>configure</program> is run it will take several minutes to
288     test for the availability of features on your system and build
289     Makefiles which will later be used to compile the server.</p>
290
291     <p>Details on all the different <program>configure</program> options are
292     available on the <program>configure</program> manual page.</p>
293 </section>
294
295 <section id="compile"><title>Build</title>
296
297     <p>Now you can build the various parts which form the Apache
298     package by simply running the command:</p>
299
300 <example>$ make</example>
301
302     <p>Please be patient here, since a base configuration takes
303     several minutes to compile and the time will vary widely
304     depending on your hardware and the number of modules that you
305     have enabled.</p>
306 </section>
307
308 <section id="install"><title>Install</title>
309
310     <p>Now it's time to install the package under the configured
311     installation <em>PREFIX</em> (see <code>--prefix</code> option
312     above) by running:</p>
313
314 <example>$ make install</example>
315
316     <p>This step will typically require root privileges, since
317     <em>PREFIX</em> is usually a directory with restricted write
318     permissions.</p>
319
320     <p>If you are upgrading, the installation will not overwrite
321     your configuration files or documents.</p>
322 </section>
323
324 <section id="customize"><title>Customize</title>
325
326     <p>Next, you can customize your Apache HTTP server by editing
327     the <a href="configuring.html">configuration files</a> under
328     <code><em>PREFIX</em>/conf/</code>.</p>
329
330 <example>$ vi <em>PREFIX</em>/conf/httpd.conf</example>
331
332     <p>Have a look at the Apache manual under
333     <code><em>PREFIX</em>/docs/manual/</code> or consult <a
334     href="http://httpd.apache.org/docs/&httpd.docs;/"
335     >http://httpd.apache.org/docs/&httpd.docs;/</a> for the most recent
336     version of this manual and a complete reference of available <a
337     href="mod/directives.html">configuration directives</a>.</p>
338 </section>
339
340 <section id="test"><title>Test</title>
341
342     <p>Now you can <a href="invoking.html">start</a> your Apache
343     HTTP server by immediately running:</p>
344
345 <example>$ <em>PREFIX</em>/bin/apachectl -k start</example>
346
347     <p>You should then be able to request your first document
348     via the URL <code>http://localhost/</code>. The web page you see is located
349     under the <directive module="core">DocumentRoot</directive>,
350     which will usually be <code><em>PREFIX</em>/htdocs/</code>.
351     Then <a href="stopping.html">stop</a> the server again by
352     running:</p>
353
354 <example>$ <em>PREFIX</em>/bin/apachectl -k stop</example>
355 </section>
356 <section id="upgrading"><title>Upgrading</title>
357
358     <p>The first step in upgrading is to read the release announcement
359     and the file <code>CHANGES</code> in the source distribution to
360     find any changes that may affect your site.  When changing between
361     major releases (for example, from 2.0 to 2.2 or from 2.2 to 2.4),
362     there will likely be major differences in the compile-time and
363     run-time configuration that will require manual adjustments.  All
364     modules will also need to be upgraded to accommodate changes in the
365     module API.</p>
366
367     <p>Upgrading from one minor version to the next (for example, from
368     2.2.55 to 2.2.57) is easier.  The <code>make install</code>
369     process will not overwrite any of your existing documents, log
370     files, or configuration files.  In addition, the developers make
371     every effort to avoid incompatible changes in the
372     <program>configure</program> options, run-time configuration, or the
373     module API between minor versions.  In most cases you should be able to
374     use an identical <program>configure</program> command line, an identical
375     configuration file, and all of your modules should continue to
376     work.</p>
377
378     <p>To upgrade across minor versions, start by finding the file
379     <code>config.nice</code> in the <code>build</code> directory of
380     your installed server or at the root of the source tree for your
381     old install.  This will contain the exact
382     <program>configure</program> command line that you used to
383     configure the source tree.  Then to upgrade from one version to
384     the next, you need only copy the <code>config.nice</code> file to
385     the source tree of the new version, edit it to make any desired
386     changes, and then run:</p>
387
388     <example>
389     $ ./config.nice<br />
390     $ make<br />
391     $ make install<br />
392     $ <em>PREFIX</em>/bin/apachectl -k graceful-stop<br />
393     $ <em>PREFIX</em>/bin/apachectl -k start<br />
394     </example>
395
396     <note type="warning">You should always test any new version in your
397     environment before putting it into production.  For example, you
398     can install and run the new version along side the old one by
399     using a different <code>--prefix</code> and a
400     different port (by adjusting the <directive
401     module="mpm_common">Listen</directive> directive) to test for any
402     incompatibilities before doing the final upgrade.</note>
403
404     <p>You can pass additional arguments to <code>config.nice</code>,
405     which will be appended to your original <program>configure</program>
406     options:</p>
407
408     <example>
409     $ ./config.nice --prefix=/home/test/apache --with-port=90
410     </example>
411 </section>
412 <section id="thirdp"><title>Third-party packages</title>
413
414     <p>A large number of third parties provide their own packaged
415     distributions of the Apache HTTP Server for installation on
416     particular platforms. This includes the various Linux distributions,
417     various third-party Windows packages, Mac OS X, Solaris, and many
418     more.</p>
419
420     <p>Our software license not only permits, but encourages, this kind
421     of redistribution. However, it does result in a situation where the
422     configuration layout and defaults on your installation of the server
423     may differ from what is stated in the documentation. While
424     unfortunate, this situation is not likely to change any time
425     soon.</p>
426
427     <p>A <a
428     href="http://wiki.apache.org/httpd/DistrosDefaultLayout">description
429     of these third-party distrubutions</a> is maintained in the HTTP
430     Server wiki, and should reflect the current state of these
431     third-party distributions. However, you will need to familiarize
432     yourself with your particular platform's package management and
433     installation procedures.</p>
434
435 </section>
436 </manualpage>