![[APACHE DOCUMENTATION]](images/sub.gif) 
 
      This document covers compilation and installation of Apache on Unix systems. For compiling and installation on other platforms, see
You may download the latest version of Apache either directly from the Apache web site, at http://www.apache.org/dist/httpd/, or from one of the many mirror sites, listed at http://www.apache.org/dyn/closer.cgi. These sites will list the current release, and more recent beta releases, and have links to older versions, and binary distributions for a variety of platforms.
Like all good things, there are two ways to configure, compile, and install Apache. You can go for the 3-minute installation process using the APACI process described below; or, you can opt for the same mechanism used in previous versions of Apache, as described in the file 'src/INSTALL'. Each mechanism has its benefits and drawbacks - APACI is newer and a little more raw, but it gets you up and running the least amount of time, whereas the "Configuration.tmpl" mechanism may be more familiar and give you some more flexibility to the power user. We'd be very interested in your comments and feedback regarding each approach.
     $ ./configure --prefix=PREFIX
     $ make
     $ make install
     $ PREFIX/bin/apachectl start
    NOTE: PREFIX is not the string "PREFIX". Instead
    use the Unix filesystem path under which Apache should be installed. For
    instance use "/usr/local/apache" for PREFIX above.
The following requirements exist for building Apache:
To provide maximum flexibility Apache now is able to load modules under runtime via the DSO mechanism by using the pragmatic dlopen()/dlsym() system calls. These system calls are not available under all operating systems therefore you cannot use the DSO mechanism on all platforms. And Apache currently has only limited built-in knowledge on how to compile shared objects because this is heavily platform-dependent. The current state is this:
| Linux | SunOS | UnixWare | Darwin/Mac OS | 
| FreeBSD | Solaris | AIX | OpenStep/Mach | 
| OpenBSD | IRIX | SCO | DYNIX/ptx | 
| NetBSD | HPUX | ReliantUNIX | BSDI | 
| Digital Unix | DGUX | 
Ultrix
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 (see CFLAGS_SHLIB, LDFLAGS_SHLIB and LDFLAGS_SHLIB_EXPORT below) manually or at least make sure a Perl 5 interpreter is installed from which Apache can guess the options.
For more in-depth information about DSO support in Apache 1.3 please read the document htdocs/manual/dso.html carefully. Especially the section entitled "Advantages & Disadvantages" because using the DSO mechanism can have strange side-effects if you are not carefully. BE WARNED!
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 pleasure.
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_proxy for later loading through the DSO mechanism:
     $ CC="pgcc" OPTIM="-O2" \
       ./configure --prefix=/usr/local/apache \
                   --enable-module=rewrite --enable-shared=rewrite \
                   --enable-module=proxy   --enable-shared=proxy
    For a complete list of the available options, type the following command:
./configure --help
See also the file README.configure for listings of
 example configurations.
Now you can build the various parts which form the Apache package by simply running the command
        $ make 
    Please be patient here, this takes approximately 2 minutes to complete under a Pentium-166/FreeBSD-2.2 system, dependent on the amount of modules you have enabled.
Now its time to install the package under the configured installation
    PREFIX (see the --prefix option above):
        $ make install
   In the following examples, PREFIX is not the literal string
       "PREFIX", but whatever argument you provided to
       the--prefix option.
All configuration of Apache is performed in the
    src directory of the Apache distribution. Change
    into this directory.
Configuration 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 API.html 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). 
        You should also read the instructions in the
        Configuration file to see if you need to set
        any of the Rule lines.
Configure script as given
        below. However if this fails or you have any special
        requirements (e.g., to include an additional
        library required by an optional module) you might need to
        edit one or more of the following options in the
        Configuration file: EXTRA_CFLAGS, LIBS,
        LDFLAGS, INCLUDES. 
        Run the Configure script:
    % Configure
    Using 'Configuration' as config file
     + configured for <whatever> platform
     + setting C compiler to <whatever> *
     + setting C compiler optimization-level to <whatever> *
     + 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
  
        
        (*: Depending on Configuration and your system, Configure
        might not print these lines. That's OK). 
        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.
(If you want to maintain multiple configurations, you
        can give an option to Configure to tell it to
        read an alternative Configuration file, such as
        Configure -file Configuration.ai).
make.httpd in the
    src directory. A binary distribution of Apache
    will supply this file. 
    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
    conf, logs and icons
    directories into it. In either case you should read the security tips
    describing how to set the permissions on the server root
    directory.
The next step is to edit the configuration files for the
    server. This consists of setting up various
    directives in up to three central
    configuration files. By default, these files are located in the
    conf directory and are called
    srm.conf, access.conf and
    httpd.conf. To help you get started there are same
    files in the conf directory of the distribution,
    called srm.conf-dist,
    access.conf-dist and httpd.conf-dist.
    Copy or rename these files to the names without the
    -dist. 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
    conf directory called mime.types.
    This file usually does not need editing.
First edit httpd.conf. This sets up general
    attributes about the server: the port number, the user it runs
    as, etc. Next edit the srm.conf file;
    this sets up the root of the document tree, special functions
    like server-parsed HTML or internal imagemap parsing,
    etc. Finally, edit the access.conf file
    to at least set the base cases of access.
In addition to these three files, the server behavior can be
    configured on a directory-by-directory basis by using
    .htaccess files in directories accessed by the
    server.
httpd 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 support directory of
    the distribution. To compile the support programs, change into
    this directory and type 
    make
    Now you can fire up your Apache HTTP server by immediately running
        $ PREFIX/bin/apachectl start
    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:
        $ PREFIX/bin/apachectl stop
    net time command on NT.
       