]> granicus.if.org Git - apache/blob - docs/manual/install.xml
centralize the versioning of the httpd and the docs directories
[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  Copyright 2002-2005 The Apache Software Foundation or its licensors, as
8  applicable.
9
10  Licensed under the Apache License, Version 2.0 (the "License");
11  you may not use this file except in compliance with the License.
12  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 Apache
30     on Unix and Unix-like systems only. For compiling and
31     installation on Windows, see <a
32     href="platform/windows.html">Using Apache with Microsoft
33     Windows</a>. For other platforms, see the <a
34     href="platform/">platform</a> documentation.</p>
35
36     <p>Apache 2.0's configuration and installation environment has
37     changed completely from Apache 1.3. Apache 1.3 used a custom
38     set of scripts to achieve easy installation. Apache 2.0 now
39     uses <code>libtool</code> and <code>autoconf</code>
40     to create an environment that looks like many other Open Source
41     projects.</p>
42
43     <p>If you are upgrading from one minor version to the next (for
44     example, 2.0.50 to 2.0.51), please skip down to the <a
45     href="#upgrading">upgrading</a> section.</p>
46
47 </summary>
48
49 <seealso><a href="programs/configure.html">Configure the source tree</a></seealso>
50 <seealso><a href="invoking.html">Starting Apache</a></seealso>
51 <seealso><a href="stopping.html">Stopping and Restarting</a></seealso>
52
53 <section id="overview"><title>Overview for the
54     impatient</title>
55
56     <table>
57       <columnspec><column width=".13"/><column width=".80"/></columnspec>
58       <tr>
59         <td><a href="#download">Download</a></td>
60
61         <td><code>$ lynx http://httpd.apache.org/download.cgi</code>
62         </td>
63       </tr>
64
65       <tr>
66         <td><a href="#extract">Extract</a></td>
67
68         <td><code>$ gzip -d httpd-2_1_<em>NN</em>.tar.gz<br />
69          $ tar xvf httpd-2_1_<em>NN</em>.tar</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 start</code>
101         </td>
102       </tr>
103     </table>
104
105     <p><em>NN</em> must be replaced with the current minor 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:</p>
119
120     <dl>
121       <dt>Disk Space</dt>
122       <dd>Make sure you have at least 50 MB of temporary free disk
123       space available. After installation Apache occupies
124       approximately 10 MB of disk space. The actual disk space
125       requirements will vary considerably based on your chosen
126       configuration options and any third-party modules.</dd>
127
128       <dt>ANSI-C Compiler and Build System</dt>
129       <dd>Make sure you have an ANSI-C compiler installed. The <a
130       href="http://www.gnu.org/software/gcc/gcc.html">GNU C
131       compiler (GCC)</a> from the <a
132       href="http://www.gnu.org/">Free Software Foundation (FSF)</a>
133       is recommended (version 2.7.2 is fine). If you don't have GCC
134       then at least make sure your vendor's compiler is ANSI
135       compliant. In addition, your <code>PATH</code> must contain
136       basic build tools such as <code>make</code>.</dd>
137
138       <dt>Accurate time keeping</dt>
139       <dd>Elements of the HTTP protocol are expressed as the time of
140       day. So, it's time to investigate setting some time
141       synchronization facility on your system. Usually the
142       <code>ntpdate</code> or <code>xntpd</code> programs are used for
143       this purpose which are based on the Network Time Protocol (NTP).
144       See the Usenet newsgroup <a
145       href="news:comp.protocols.time.ntp">comp.protocols.time.ntp</a>
146       and the <a href="http://www.ntp.org">NTP
147       homepage</a> for more details about NTP software and public
148       time servers.</dd>
149
150       <dt><a href="http://www.perl.org/">Perl 5</a>
151       [OPTIONAL]</dt>
152       <dd>For some of the support scripts like <program>
153       apxs</program> or <program>dbmmanage</program> (which are
154       written in Perl) the Perl 5 interpreter is required (versions
155       5.003 or newer are sufficient). If you have multiple Perl 
156       interpreters (for example, a systemwide install of Perl 4, and 
157       your own install of Perl 5), you are advised to use the 
158       <code>--with-perl</code> option (see below) to make sure the 
159       correct one is used by <program>configure</program>.
160       If no Perl 5 interpreter is found by the 
161       <program>configure</program> script, you will not be able to use 
162       the affected support scripts. Of course, you will still be able to 
163       build and use Apache 2.0.</dd>
164     </dl>
165 </section>
166
167 <section id="download"><title>Download</title>
168
169     <p>Apache can be downloaded from the <a
170     href="http://httpd.apache.org/download.cgi">Apache HTTP Server
171     download site</a> which lists several mirrors.  Most users of
172     Apache on unix-like systems will be better off downloading and
173     compiling a source version.  The build process (described below) is
174     easy, and it allows you to customize your server to suit your needs.
175     In addition, binary releases are often not up to date with the latest
176     source releases.  If you do download a binary, follow the instructions
177     in the <code>INSTALL.bindist</code> file inside the distribution.</p>
178
179     <p>After downloading, it is important to verify that you have a
180     complete and unmodified version of the Apache HTTP Server. This
181     can be accomplished by testing the downloaded tarball against the
182     PGP signature.  Details on how to do this are available on the <a
183     href="http://httpd.apache.org/download.cgi#verify">download
184     page</a> and an extended example is available describing the <a
185     href="http://httpd.apache.org/dev/verification.html">use of
186     PGP</a>.</p>
187
188 </section>
189
190 <section id="extract"><title>Extract</title>
191
192     <p>Extracting the source from the Apache HTTPD tarball is a
193     simple matter of uncompressing, and then untarring:</p>
194
195 <example>
196 $ gzip -d httpd-2_1_<em>NN</em>.tar.gz<br />
197 $ tar xvf httpd-2_1_<em>NN</em>.tar
198 </example>
199
200     <p>This will create a new directory under the current directory
201     containing the source code for the distribution. You should
202     <code>cd</code> into that directory before proceeding with
203     compiling the server.</p>
204 </section>
205
206 <section id="configure"><title>Configuring the source tree</title>
207
208     <p>The next step is to configure the Apache source tree for your
209     particular platform and personal requirements. This is done using
210     the script <program>configure</program> included in
211     the root directory of the distribution. (Developers downloading
212     the CVS version of the Apache source tree will need to have
213     <code>autoconf</code> and <code>libtool</code> installed and will
214     need to run <code>buildconf</code> before proceeding with the next
215     steps. This is not necessary for official releases.)</p>
216
217     <p>To configure the source tree using all the default options,
218     simply type <code>./configure</code>. To change the default
219     options, <program>configure</program> accepts a variety of variables
220     and command line options.</p>
221
222     <p>The most important option is the location <code>--prefix</code>
223     where Apache is to be installed later, because Apache has to be
224     configured for this location to work correctly.  More fine-tuned
225     control of the location of files is possible with additional <a
226     href="programs/configure.html#installationdirectories">configure
227     options</a>.</p>
228
229     <p>Also at this point, you can specify which <a
230     href="programs/configure.html#optionalfeatures">features</a> you
231     want included in Apache by enabling and disabling <a
232     href="mod/">modules</a>.  Apache comes with a <a
233     href="mod/module-dict.html#Status">Base</a> set of modules included by
234     default.  Other modules are enabled using the
235     <code>--enable-<var>module</var></code> option, where
236     <var>module</var> is the name of the module with the
237     <code>mod_</code> string removed and with any underscore converted
238     to a dash.  You can also choose to compile modules as <a
239     href="dso.html">shared objects (DSOs)</a> -- which can be loaded
240     or unloaded at runtime -- by using the option
241     <code>--enable-<var>module</var>=shared</code>.  Similarly, you can
242     disable Base modules with the
243     <code>--disable-<var>module</var></code> option.  Be careful when
244     using these options, since <program>configure</program> cannot warn you
245     if the module you specify does not exist; it will simply ignore the
246     option.</p>
247
248     <p>In addition, it is sometimes necessary to provide the
249     <program>configure</program> script with extra information about the
250     location of your compiler, libraries, or header files.  This is
251     done by passing either environment variables or command line
252     options to <program>configure</program>.  For more information, see the
253     <program>configure</program> manual page.</p>
254
255     <p>For a short impression of what possibilities you have, here
256     is a typical example which compiles Apache for the installation
257     tree <code>/sw/pkg/apache</code> with a particular compiler and flags
258     plus the two additional modules <module>mod_rewrite</module> and
259     <module>mod_speling</module> for
260     later loading through the DSO mechanism:</p>
261
262 <example>
263       $ CC="pgcc" CFLAGS="-O2" \<br />
264        ./configure --prefix=/sw/pkg/apache \<br />
265        --enable-rewrite=shared \<br />
266        --enable-speling=shared
267 </example>
268
269     <p>When <program>configure</program> is run it will take several minutes to
270     test for the availability of features on your system and build
271     Makefiles which will later be used to compile the server.</p>
272
273     <p>Details on all the different <program>configure</program> options are
274     available on the <program>configure</program> manual page.</p>
275 </section>
276
277 <section id="compile"><title>Build</title>
278
279     <p>Now you can build the various parts which form the Apache
280     package by simply running the command:</p>
281
282 <example>$ make</example>
283
284     <p>Please be patient here, since a base configuration takes
285     approximately 3 minutes to compile under a Pentium III/Linux
286     2.2 system, but this will vary widely depending on your
287     hardware and the number of modules which you have enabled.</p>
288 </section>
289
290 <section id="install"><title>Install</title>
291
292     <p>Now it's time to install the package under the configured
293     installation <em>PREFIX</em> (see <code>--prefix</code> option
294     above) by running:</p>
295
296 <example>$ make install</example>
297
298     <p>If you are upgrading, the installation will not overwrite
299     your configuration files or documents.</p>
300 </section>
301
302 <section id="customize"><title>Customize</title>
303
304     <p>Next, you can customize your Apache HTTP server by editing
305     the <a href="configuring.html">configuration files</a> under
306     <code><em>PREFIX</em>/conf/</code>.</p>
307
308 <example>$ vi <em>PREFIX</em>/conf/httpd.conf</example>
309
310     <p>Have a look at the Apache manual under <a
311     href="./">docs/manual/</a> or consult <a
312     href="http://httpd.apache.org/docs/&httpd.docs;/"
313     >http://httpd.apache.org/docs/&httpd.docs;/</a> for the most recent
314     version of this manual and a complete reference of available <a
315     href="mod/directives.html">configuration directives</a>.</p>
316 </section>
317
318 <section id="test"><title>Test</title>
319
320     <p>Now you can <a href="invoking.html">start</a> your Apache
321     HTTP server by immediately running:</p>
322
323 <example>$ <em>PREFIX</em>/bin/apachectl start</example>
324
325     <p>and then you should be able to request your first document
326     via URL <code>http://localhost/</code>. The web page you see is located
327     under the <directive module="core">DocumentRoot</directive>
328     which will usually be <code><em>PREFIX</em>/htdocs/</code>.
329     Then <a href="stopping.html">stop</a> the server again by
330     running:</p>
331
332 <example>$ <em>PREFIX</em>/bin/apachectl stop</example>
333 </section>
334 <section id="upgrading"><title>Upgrading</title>
335
336     <p>The first step in upgrading is to read the release announcement
337     and the file <code>CHANGES</code> in the source distribution to
338     find any changes that may affect your site.  When changing between
339     major releases (for example, from 1.3 to 2.0 or from 2.0 to 2.2),
340     there will likely be major differences in the compile-time and
341     run-time configuration that will require manual adjustments.  All
342     modules will also need to be upgraded to accomodate changes in the
343     module API.</p>
344
345     <p>Upgrading from one minor version to the next (for example, from
346     2.0.55 to 2.0.57) is easier.  The <code>make install</code>
347     process will not overwrite any of your existing documents, log
348     files, or configuration files.  In addition, the developers make
349     every effort to avoid incompatible changes in the
350     <program>configure</program> options, run-time configuration, or the
351     module API between minor versions.  In most cases you should be able to
352     use an identical <program>configure</program> command line, an identical
353     configuration file, and all of your modules should continue to
354     work.  (This is only valid for versions after 2.0.41; earlier
355     versions have incompatible changes.)</p>
356
357     <p>To upgrade across minor versions, start by finding the file
358     <code>config.nice</code> in the <code>build</code> directory of
359     your installed server or at the root of the source tree for your
360     old install.  This will contain the exact
361     <program>configure</program> command line that you used to
362     configure the source tree.  Then to upgrade from one version to
363     the next, you need only copy the <code>config.nice</code> file to
364     the source tree of the new version, edit it to make any desired
365     changes, and then run:</p>
366
367     <example>
368     $ ./config.nice<br />
369     $ make<br />
370     $ make install<br />
371     $ <em>PREFIX</em>/bin/apachectl stop<br />
372     $ <em>PREFIX</em>/bin/apachectl start<br />
373     </example>
374
375     <note type="warning">You should always test any new version in your
376     environment before putting it into production.  For example, you
377     can install and run the new version along side the old one by
378     using a different <code>--prefix</code> and a
379     different port (by adjusting the <directive
380     module="mpm_common">Listen</directive> directive) to test for any
381     incompatibilities before doing the final upgrade.</note>
382 </section>
383 </manualpage>