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