httpd-cvs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
Subject cvs commit: httpd-2.0/docs/manual install.html
Date Thu, 10 May 2001 05:40:04 GMT
slive       01/05/09 22:40:04

  Modified:    docs/manual install.html
  Replace install.html with an html-ized version of
  Discussion following on apache-docs.
  Revision  Changes    Path
  1.33      +439 -179  httpd-2.0/docs/manual/install.html
  Index: install.html
  RCS file: /home/cvs/httpd-2.0/docs/manual/install.html,v
  retrieving revision 1.32
  retrieving revision 1.33
  diff -u -d -b -u -r1.32 -r1.33
  --- install.html	2001/03/28 21:26:28	1.32
  +++ install.html	2001/05/10 05:40:04	1.33
  @@ -14,185 +14,445 @@
   <!--#include virtual="header.html" -->
  -This document has not been updated to take into account changes
  -made in the 2.0 version of the Apache HTTP Server.  Some of the
  -information may still be relevant, but please use it
  -with care.
  +<H1 ALIGN="CENTER">Compiling and Installing</H1>
  -<H1 ALIGN="CENTER">Compiling and Installing Apache 1.3</H1>
  -This document covers compilation and installation of Apache on Unix
  -systems only. For compiling and installation on Windows, see <A
  -HREF="platform/windows.html">Using Apache with Microsoft Windows</A> and for
  -TPF see <A HREF="platform/install-tpf.html">Installing the Apache 1.3 HTTP
  -Server on TPF</A>.
  +<p>This document covers compilation and installation of Apache on Unix
  +and Unix-like systems only. For compiling and installation on Windows,
  +see <A HREF="platform/windows.html">Using Apache with Microsoft
  +Windows</A>.  For other platforms, see the <a
  +href="platform/">platform</a> documentation.</p>
  +<p>Apache 2.0's configuration and installation environment has changed
  +completely from Apache 1.3.  Apache 1.3 used a custom set of scripts
  +to achieve easy installation.  Apache 2.0 now uses libtool and
  +autoconf to create an environment that looks like many other Open
  +Source projects.</p>
  -UnixWare users will want to consult <A HREF="platform/unixware.html">build notes</A>
  -for various UnixWare versions before compiling.
  +<h3>Overview for the impatient</h3>
  -<H2>Downloading Apache</H2>
  +     $ ./configure --prefix=<em>PREFIX</em><br>
  +     $ make<br>
  +     $ make install<br>
  +     $ <em>PREFIX</em>/bin/apachectl start
  -Information on the latest version of Apache can be found on the Apache
  -web server at <A
  -HREF=""></A>.  This will
  -list the current release, any more recent beta-test release, together
  -with details of mirror web and anonymous ftp sites.
  +<li><em>PREFIX</em> is not the string "PREFIX". Instead use the Unix
  +filesystem path under which Apache should be installed. For instance
  +use "/usr/local/apache" for <em>PREFIX</em> above.</li>
  -If you downloaded a binary distribution, skip to <A
  -HREF="#install">Installing Apache</A>. Otherwise read the next section
  -for how to compile the server.
  +<li>if you are building from a copy of the Apache CVS repository,
  +rather than a release distribution, then you must use the "buildconf"
  +script before running configure.</li>
  -<H2>Compiling Apache</H2>
  +<li>If you are building on FreeBSD, you should add the argument
  +--with-mpm=prefork to the configure line.  The Apache Group has
  +discovered that threads do not work well with Apache on FreeBSD.  For
  +that reason, we disable threads by default on FreeBSD, and you need to
  +build the prefork MPM.  If you wish to try to make threads work on
  +FreeBSD, they can be re-enabled by using --enable-threads</li>
  -Compiling Apache consists of three steps: Firstly select which Apache
  -<STRONG>modules</STRONG> you want to include into the server. Secondly create
  -configuration for your operating system. Thirdly compile the
  -All configuration of Apache is performed in the <CODE>src</CODE>
  -directory of the Apache distribution. Change into this directory.
  - <LI>
  -  Select modules to compile into Apache in the
  -  <CODE>Configuration</CODE> file. Uncomment lines corresponding to
  -  those optional modules you wish to include (among the AddModule lines
  -  at the bottom of the file), or add new lines corresponding to
  -  additional modules you have downloaded or written. (See <A
  -  HREF="misc/API.html">API.html</A> for preliminary docs on how to
  -  write Apache modules).  Advanced users can comment out some of the
  -  default modules if they are sure they will not need them (be careful
  -  though, since many of the default modules are vital for the correct
  -  operation and security of the server).
  -  <P>
  +<p>The following requirements exist for building Apache:</p>
  -  You should also read the instructions in the <CODE>Configuration</CODE>
  -  file to see if you need to set any of the <CODE>Rule</CODE> lines.
  +<li>Disk Space<br><br>
  +Make sure you have approximately 12 MB of
  +temporary free disk space available.  After installation Apache
  +occupies approximately 5 MB of disk space (the actual required disk
  +space depends on the amount of compiled in third party modules,
  - <LI>
  -  Configure Apache for your operating system. Normally you can just
  -  run the <CODE>Configure</CODE> script as given below. However
  -  if this fails or you have any special requirements (<EM>e.g.</EM>, to include
  -  an additional library required by an optional module) you might need
  -  to edit one or more of the following options in the
  -  <CODE>Configuration</CODE> file:
  -  <P>
  +<li>ANSI-C Compiler<br><br>Make sure you have an ANSI-C compiler
  +installed. The GNU C compiler (GCC) from the Free Software Foundation
  +(FSF) is recommended (version 2.7.2 is fine). If you don't have GCC
  +then at least make sure your vendors compiler is ANSI compliant. You
  +can find the homepage of GNU at and the GCC
  +distribution under<br><br></li>
  -  Run the <CODE>Configure</CODE> script:
  -   <PRE>
  -    % Configure
  -    Using 'Configuration' as config file
  -     + configured for &lt;whatever&gt; platform
  -     + setting C compiler to &lt;whatever&gt; *
  -     + setting C compiler optimization-level to &lt;whatever&gt; *
  -     + Adding selected modules
  -     + doing sanity check on compiler and options
  -    Creating Makefile in support
  -    Creating Makefile in main
  -    Creating Makefile in os/unix
  -    Creating Makefile in modules/standard
  -   </PRE>
  +<li>Perl 5 Interpreter [OPTIONAL]<br><br> For some of the support
  +scripts like `apxs' or `dbmmanage' (which are written in Perl) the
  +Perl 5 interpreter is required (versions 5.003 and 5.004 are fine). If
  +no such interpreter is found by the `configure' script this is no
  +harm.  Of course, you still can build and install Apache 2.0. Only
  +those support scripts cannot be used. If you have multiple Perl
  +interpreters installed (perhaps a Perl 4 from the vendor and a Perl 5
  +from your own), then it is recommended to use the --with-perl option
  +(see below) to make sure the correct one is selected by ./configure.
  -  (*: Depending on Configuration and your system, Configure
  -  might not print these lines. That's OK).<P>
  +<li>Dynamic Shared Object (DSO) support [OPTIONAL]<br><br> To provide
  +maximum flexibility Apache now is able to load modules under runtime
  +via the DSO mechanism by using the pragmatic
  +apr_dso_open()/apr_dso_sym() calls. These calls are not available
  +under all operating systems therefore you cannot use the DSO mechanism
  +on all platforms. Apache relies on autoconf to detect the ability to
  +use DSOs, and libtool to determine how to build DSOs. If your platform
  +is supported by libtool, and we can find DSO system calls, then DSOs
  +should work out-of-the-box.<br><br>
  -  This generates a Makefile for use in stage 3. It also creates a
  -  Makefile in the support directory, for compilation of the optional
  -  support programs.
  -  <P>
  +If your system is not on these lists but has the dlopen-style
  +interface, you either have to provide the appropriate compiler and
  +linker flags manually or at least make sure a Perl 5 interpreter is
  +installed from which Apache can guess the options.<br><br></li>
  -  (If you want to maintain multiple configurations, you can give an
  -  option to <CODE>Configure</CODE> to tell it to read an alternative
  -  Configuration file, such as <CODE>Configure -file
  -  <P>
  - <LI>
  -  Type <CODE>make</CODE>.
  -The modules we place in the Apache distribution are the ones we have
  -tested and are used regularly by various members of the Apache
  -development group.  Additional modules contributed by members or third
  -parties with specific needs or functions are available at
  -&lt;<A HREF=""
  -    ></A>&gt;.
  -There are instructions on that page for linking these modules into the
  -core Apache code.
  +<p>If you are building from a copy of the CVS repository, rather than
  +a release distribution, then you will need these additional tools:</p>
  -<H2><A NAME="install">Installing Apache</A></H2>
  -You will have a binary file called <CODE>httpd</CODE> in the
  -<CODE>src</CODE> directory.  A binary distribution of Apache will
  -supply this file.  <P>
  +<li>Libtool 1.3.3<br><br> Make sure that you have libtool 1.3.3 or
  +later installed before trying to configure and build Apache 2.0.
  +Libtool can be downloaded from the Free Software Foundation (FSF), at
  -The next step is to install the program and configure it. Apache is
  -designed to be configured and run from the same set of directories
  -where it is compiled. If you want to run it from somewhere else, make
  -a directory and copy the <CODE>conf</CODE>, <CODE>logs</CODE> and
  -<CODE>icons</CODE> directories into it.  In either case you should
  -read the <A HREF="misc/security_tips.html#serverroot">security tips</A>
  -describing how to set the permissions on the server root directory.<P>
  +<li>Autoconf 2.13<br><br> Make sure that you have autoconf 2.13 or
  +later installed before trying to configure and build Apache 2.0.
  +Autoconf can be downloaded from the Free Software Foundation (FSF), at
  -The next step is to edit the configuration files for the server. This
  -consists of setting up various <STRONG>directives</STRONG> in up to three
  -central configuration files. By default, these files are located in
  -the <CODE>conf</CODE> directory and are called <CODE>srm.conf</CODE>,
  -<CODE>access.conf</CODE> and <CODE>httpd.conf</CODE>.  To help
you get
  -started there are same files in the <CODE>conf</CODE> directory of the
  -distribution, called <CODE>srm.conf-dist</CODE>,
  -<CODE>access.conf-dist</CODE> and <CODE>httpd.conf-dist</CODE>.
  -or rename these files to the names without the <CODE>-dist</CODE>.
  -Then edit each of the files. Read the comments in each file carefully.
  -Failure to setup these files correctly could lead to your server not
  -working or being insecure. You should also have an additional file in
  -the <CODE>conf</CODE> directory called <CODE>mime.types</CODE>.
  -file usually does not need editing.
  +<h3>Configuring the source tree</h3>
  -First edit <CODE>httpd.conf</CODE>.  This sets up general attributes
  -about the server: the port number, the user it runs as, <EM>etc.</EM>  Next
  -edit the <CODE>srm.conf</CODE> file; this sets up the root of the
  -document tree, special functions like server-parsed HTML or internal
  -imagemap parsing, <EM>etc.</EM>  Finally, edit the <CODE>access.conf</CODE>
  -file to at least set the base cases of access.
  +<p>If you have downloading the Apache 2.0 from the CVS, rather than a
  +release distribution, then you will need to prepare the source tree
  +for configuration and compilation. This is done by running:</p>
  -In addition to these three files, the server behavior can be configured
  -on a directory-by-directory basis by using <CODE>.htaccess</CODE>
  -files in directories accessed by the server.
  +      ./buildconf
  -<H3>Set your system time properly!</H3>
  +<p>This script ensures that all required programs are installed on the
  +currently machine, and creates the ./configure script.  If you are
  +using a package downloaded from then this step is not
  -Proper operation of a public web server requires accurate time
  -keeping, since elements of the HTTP protocol are expressed as the time
  -of day.  So, it's time to investigate setting up NTP or some other
  -time synchronization system on your Unix box, or whatever the
  -equivalent on NT would be.
  -<H2>Compiling Support Programs</H2>
  +<p>The next step is to configure the Apache source tree for your
  +particular platform and personal requirements. The most important
  +setup here is the location prefix where Apache is to be installed
  +later, because Apache has to be configured for this location to work
  +correctly. But there are a lot of other options available for your
  -In addition to the main <CODE>httpd</CODE> server which is compiled
  -and configured as above, Apache includes a number of support programs.
  -These are not compiled by default. The support programs are in the
  -<CODE>support</CODE> directory of the distribution. To compile
  -the support programs, change into this directory and type
  -    make
  +<p>For a short impression of what possibilities you have, here is a
  +typical example which compiles Apache for the installation tree
  +/sw/pkg/apache with a particular compiler and flags plus the two
  +additional modules mod_rewrite and mod_speling for later loading
  +through the DSO mechanism:</p>
  +     $ CC="pgcc" CFLAGS="-O2" \<br>
  +       ./configure --prefix=/sw/pkg/apache \<br>
  +                   --enable-rewrite=shared \<br>
  +                   --enable-speling=shared
  +<p>The easiest way to find all of the configuration flags for Apache
  +2.0 is to run ./configure --help.  What follows is a brief description
  +of most of the arguments.</p>
  +     Reference:
  +     $ [CC=...]        [TARGET=...]
  +       [CPPFLAGS=...]  [NOTEST_CPPFLAGS=...]
  +       [CFLAGS=...]    [NOTEST_CFLAGS=...]
  +       [CXXFLAGS=...]  [NOTEST_CXXFLAGS=...]
  +       [LDFLAGS=...]   [NOTEST_LDFLAGS=...]
  +       [LIBS=...]      [NOTEST_LIBS=...]
  +       [INCLUDES=...]  [SHLIB_PATH=...] 
  +       ./configure
  +           [--quiet]         [--prefix=DIR]            [--enable-NAME=(shared)]
  +           [--verbose]       [--exec-prefix=PREFIX]    [--disable-NAME]
  +           [--shadow[=DIR]]  [--bindir=EPREFIX]        [--with-mpm=NAME]
  +           [--show-layout]   [--sbindir=DIR]           
  +           [--help]          [--libexecdir=DIR]        
  +                             [--mandir=DIR]            
  +                             [--sysconfdir=DIR]        
  +                             [--datadir=DIR]           
  +                             [--includedir=DIR]        
  +                             [--localstatedir=DIR]
  +                             [--runtimedir=DIR]        [--enable-suexec]
  +                             [--logfiledir=DIR]        [--suexec-caller=UID]
  +                             [--proxycachedir=DIR]     [--suexec-docroot=DIR]
  +                             [--with-layout=[FILE:]ID] [--suexec-logfile=FILE]
  +                                                       [--suexec-userdir=DIR]
  +                             [--with-perl=FILE]        [--suexec-uidmin=UID]
  +                             [--without-support]       [--suexec-gidmin=GID]
  +                             [--without-confadjust]    [--suexec-safepath=PATH]
  +                             [--without-execstrip]
  +			     [--server-uid=UID]
  +			     [--server-gid=GID]
  +                             [--enable-maintainter-mode]
  +                             [--enable-debug]
  +SHLIB_PATH and TARGET environment variables to override or expand the
  +corresponding default entries as determined by configure.</p>
  +NOTEST_LDFLAGS, and NOTEST_LIBS to add entries that should only be
  +used during the actual build and compilation of Apache, such as
  +<p>Use the --prefix=PREFIX and --exec-prefix=EPREFIX options to
  +configure Apache to use a particular installation prefix. The default
  +is PREFIX=/usr/local/apache and EPREFIX=PREFIX.</p>
  +<p>Use the --bindir=DIR, --sbindir=DIR, --libexecdir=DIR,
  +--mandir=DIR, --sysconfdir=DIR, --datadir=DIR, --iconsdir=DIR,
  +--htdocsdir=DIR, --cgidir=DIR, --includedir=DIR, --localstatedir=DIR,
  +--runtimedir=DIR, --logfiledir=DIR and --proxycachedir=DIR option to
  +change the paths for particular subdirectories of the installation
  +tree.  Defaults are bindir=EPREFIX/bin, sbindir=EPREFIX/bin,
  +libexecdir=EPREFIX/modules, mandir=PREFIX/man, sysconfdir=PREFIX/conf,
  +datadir=PREFIX, iconsdir=PREFIX/icons, htdocsdir=PREFIX/htdocs,
  +cgidir=PREFIX/cgi-bin, includedir=PREFIX/include,
  +localstatedir=PREFIX, runtimedir=PREFIX/logs, logfiledir=PREFIX/logs
  +and proxycachedir=PREFIX/proxy.</p>
  +<p>Note: To reduce the pollution of shared installation locations
  +(like /usr/local/ or /etc) with Apache files to a minimum the string
  +``/apache'' is automatically appended to 'libexecdir', 'sysconfdir',
  +'datadir', 'localstatedir' and 'includedir' if (and only if) the
  +following points apply for each path individually:</p>
  +<li>the path doesn't already contain the word ``apache''</li>
  +<li>the path was not directly customized by the user</li>
  +<p>Keep in mind that per default these paths are derived from 'prefix'
  +and 'exec-prefix', so usually its only a matter whether these paths
  +contain ``apache'' or not. Although the defaults were defined with
  +experience in mind you always should make sure the paths fit your
  +situation by checking the finally chosen paths via the --layout
  +<p>Use the --with-layout=[F:]ID option to select a particular
  +installation path base-layout. You always _HAVE_ to select a
  +base-layout. There are currently two layouts pre-defined in the file
  +config.layout: `Apache' for the classical Apache path layout and `GNU'
  +for a path layout conforming to the GNU `standards' document. When you
  +want to use your own custom layout FOO, either add a corresponding
  +"&lt;Layout FOO&gt;...&lt;/Layout&gt;" section to config.layout and use
  +--with-layout=FOO or place it into your own file, say config.mypaths,
  +and use --with-layout=config.mypaths:FOO.</p>
  +<p>Use the --show-layout option to check the final installation path
  +layout while fiddling with the options above.</p>
  +<p>Use the --enable-NAME=(shared) and --disable-NAME options to enable
  +or disable a particular already distributed module from the Apache
  +<p>Use the --with-mpm=NAME option to determine which MPM should be
  +built for your server.</p>
  +<h3>List of Available Modules</h3>
  +     Environment creation
  +      (+) mod_env .......... Set environment variables for CGI/SSI scripts
  +      (+) mod_setenvif ..... Set environment variables based on HTTP headers
  +      (-) mod_unique_id .... Generate unique identifiers for request
  +     Content type decisions
  +      (+) mod_mime ......... Content type/encoding determination (configured)
  +      (-) mod_mime_magic ... Content type/encoding determination (automatic)
  +      (+) mod_negotiation .. Content selection based on the HTTP Accept* headers
  +     URL mapping
  +      (+) mod_alias ........ Simple   URL translation and redirection
  +      (-) mod_rewrite ...... Advanced URL translation and redirection
  +      (+) mod_userdir ...... Selection of resource directories by username
  +      (-) mod_speling ...... Correction of misspelled URLs
  +     Directory Handling
  +      (+) mod_dir .......... Directory and directory default file handling
  +      (+) mod_autoindex .... Automated directory index file generation
  +     Access Control and Authentication
  +      (+) mod_access ....... Access Control (user, host, network)
  +      (+) mod_auth ......... HTTP Basic Authentication (user, passwd)
  +      (-) mod_auth_dbm ..... HTTP Basic Authentication via Unix NDBM files
  +      (-) mod_auth_db ...... HTTP Basic Authentication via Berkeley-DB files
  +      (-) mod_auth_anon .... HTTP Basic Authentication for Anonymous-style users
  +      (-) mod_digest ....... HTTP Digest Authentication
  +     HTTP response
  +      (-) mod_headers ...... Arbitrary HTTP response headers (configured)
  +      (-) mod_cern_meta .... Arbitrary HTTP response headers (CERN-style files)
  +      (-) mod_expires ...... Expires HTTP responses 
  +      (+) mod_asis ......... Raw HTTP responses 
  +     Scripting
  +      (+) mod_include ...... Server Side Includes (SSI) support
  +      (+) mod_cgi .......... Common Gateway Interface (CGI) support
  +      (+) mod_cgid ......... Common Gateway Interface (CGI) support for 
  +                             multi-threaded MPMs
  +      (+) mod_actions ...... Map CGI scripts to act as internal `handlers'
  +     Internal Content Handlers
  +      (+) mod_status ....... Content handler for server run-time status
  +      (-) mod_info ......... Content handler for server configuration summary
  +     Request Logging
  +      (+) mod_log_config ... Customizable logging of requests
  +      (-) mod_usertrack .... Logging of user click-trails via HTTP Cookies
  +     Content Management
  +      (-) mod_dav .......... WebDAV (RFC 2518) support for Apache
  +      (-) mod_dav_fs ....... mod_dav backend to managing filesystem content
  +     Miscellaneous
  +      (+) mod_imap ......... Server-side Image Map support
  +      (-) mod_proxy ........ Caching Proxy Module (HTTP, HTTPS, FTP)
  +      (-) mod_so ........... Dynamic Shared Object (DSO) bootstrapping
  +     Experimental
  +      (-) mod_mmap_static .. Caching of frequently served pages via mmap()
  +     Development
  +      (-) mod_example ...... Apache API demonstration (developers only)
  +     MPMs
  +          mpmt_pthread ..... Multi-process(dynamic) Multi-threaded(static) 
  +                             Unix MPM
  +          prefork .......... Preforking Unix MPM
  +          perchild ......... Multi-process(static) Multi-threaded(dynamic)
  +                             Unix MPM, that allows a User per child process
  +          winnt ............ Multi-process(1) Multi-threaded Windows MPM
  +          mpmt_beos ........ Multi-process Multi-threaded Beos MPM
  +          beos ............. Multi-process Multi-threaded Beos MPM
  +          spmt_os2 ......... Single-process Multi-threaded OS/2 MPM
  +     _________________________________________________________________________
  +                    (+) = enabled  per default [disable with --disable-module]
  +                    (-) = disabled per default [enable  with --enable-module ]
  +<p>Use the --enable-suexec option to enable the suEXEC feature by
  +building and installing the "suexec" support program.</p>
  +RECOMMEND YOU TO FIRST READ THE DOCUMENT htdocs/manual/suexec.html
  +THESE OPTIONS!</strong></p>
  +<p>Use the --quiet option to disable all configuration verbose
  +<h3>Building the package</h3>
  +<p>Now you can build the various parts which form the Apache package
  +by simply running the command:</p>
  +        $ make 
  +<p>Please be patient here, this takes approximately 2 minutes to
  +complete under a Pentium-166/FreeBSD-2.2 system, dependend on the
  +amount of modules you have enabled.</p>
  +<h3>Installing the package</h3>
  +<p>Now its time to install the package under the configured
  +installation PREFIX (see --prefix option above) by running:</h3>
  +        $ make install
  +<p>For the paranoid hackers under us: The above command really
  +installs under prefix _only_, i.e. no other stuff from your system is
  +touched. Even if you upgrade an existing installation your
  +configuration files in PREFIX/conf/ are preserved.</p>
  +<h3>Testing the package</h3>
  +<p>Now you can fire up your Apache HTTP server by immediately running:</p>
  +        $ PREFIX/bin/apachectl start
  +<p>and then you should be able to request your first document via URL
  +http://localhost/ (when you built and installed Apache as root or at
  +least used the --without-confadjust option) or http://localhost:8080/
  +(when you built and installed Apache as a regular user). Then stop the
  +server again by running:</p>
  +        $ PREFIX/bin/apachectl stop
  +<h3>Customizing the package</h3>
  +<p>Finally you can customize your Apache HTTP server by editing the
  +configuration files under PREFIX/conf/.</p>
  +        $ vi PREFIX/conf/httpd.conf
  +<p>Have a look at the Apache manual under docs/manual/ or
  + for a complete reference of available
  +configuration directives.</p>
  +<h3>Preparing the system</h3>
  +<p>Proper operation of a public HTTP server requires at least the
  +<li>A correctly working TCP/IP layer, since HTTP is implemented on top
  +of TCP/IP. Although modern Unix platforms have good networking layers,
  +always make sure you have all official vendor patches referring to the
  +network layer applied.</li>
  +<li>Accurate time keeping, since elements of the HTTP protocol are
  +expressed as the time of day.  So, it's time to investigate setting
  +some time synchronization facility on your system. Usually the ntpdate
  +or xntpd programs are used for this purpose which are based on the
  +Network Time Protocol (NTP). See the Usenet newsgroup
  +comp.protocols.time.ntp and the NTP homepage at
  + for more details about NTP software
  +and public time servers.</li>
   <!--#include virtual="footer.html" -->

View raw message