
  A P A C H E   I N S T A L L A T I O N

  NOTE: Windows users please read the documents ../README.NT and
        http://www.apache.org/docs/windows.html, (or the
        htdocs/manual/windows.html file included with Apache).  
        The following applies only to Unix users.

  Installing the Apache 1.3 HTTP server with APACI
  ================================================

  For the out-of-the-box build and installation through the new Apache
  Autoconf-style Interface (APACI) see the file INSTALL in the parent
  directory. This document describes only the manual way of installing Apache.

  Installing the Apache 1.3 HTTP server manually
  ==============================================

  Unless you grabbed a binary distribution of Apache, you must compile it for
  your specific platform.  In order to compile it, you must set compile-time
  options (in particular, system type) for your system by editing a
  Configuration file, run a script which generates a Makefile and a small
  piece of C code, and then compile it.

  Compilation
  -----------

  Building the Apache Web server absolutely REQUIRES an ANSI C-compliant
  compiler.  If your compiler does not meet this requirement, don't even
  bother trying to build the server; it won't work.  The server may or may not
  build correctly with a C++ compiler.  Making it compilable with C++ is not a
  goal at this point, so if it doesn't work please use a normal ANSI C
  compiler instead.

  This release of Apache supports the notion of "optional modules".  However,
  the server has to know which modules are compiled into it, in order for
  those modules to be effective; this requires generation of a short bit of
  code ("modules.c") which simply has a list of them.

  It is also necessary to choose the correct options for your platform.

  To do this:

  1) Copy the file "Configuration.tmpl" to "Configuration" and then edit
     "Configuration".  This contains the list and settings of various "Rules"
     and an additional section at the bottom which lists the modules which
     have been compiled in, and also names the files containing them.  You
     will need to:

     a) Adjust the Rules and EXTRA_CFLAGS|LIBS|LDFLAGS|INCLUDES if
        you feel so inclined.

     b) Uncomment lines corresponding to those optional modules you wish to
        include (among the Module lines at the bottom of the file), or add new
        lines corresponding to custom modules you have written.  (See API.html
        for preliminary docs on how to do that).    

     Note that DBM auth has to be explicitly configured in, if you want it ---
     just uncomment the corresponding line.

  2) Run the "Configure" script:

     $ ./Configure
     Using config file: Configuration
     Creating Makefile
      + configured for <whatever> platform
      + setting C compiler 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
     $ _

     This generates new versions of the Makefiles and of modules.c.  (If you
     want to maintain multiple configurations, you can say, e.g.,

     $ ./Configure -file Configuration.ai
     Using config file: Configuration.ai
     Creating Makefile
      + configured for <whatever> platform
      + setting C compiler 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
     $ _

  3) Now compile the program:
  
     $ make

  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
  http://www.apache.org/dist/contrib/modules/.  There are instructions
  on that page for linking these modules into the core Apache code.

  If during compilation you get a warning about a missing 'regex.h', set
  WANTHSREGEX=yes in the 'Configuration', and let The Apache Group know you
  needed to do this for your OS by filling out a problem report form at
  http://bugs.apache.org/, or by sending a mail message to
  apache-bugs@apache.org. Include the output of the command "uname -a".

  Installation
  ------------
 
  After compilation, you will have a binary called "httpd" in this src/
  directory.  If you received a binary distribution of apache, you should have
  this file already.

  The next step is to edit the configuration files for the server.  In the
  top-level subdirectory called "conf" you should find distribution versions
  of the three configuration files: srm.conf-dist, access.conf-dist, and
  httpd.conf-dist.  Copy them to srm.conf, access.conf, httpd.conf
  respectively.

  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. Documentation for
  all of these is located at http://www.apache.org/docs/.

  Finally, make a call to httpd, with a -f to the full path to the httpd.conf
  file. I.e., the common case:

    $ /usr/local/apache/httpd -f /usr/local/apache/conf/httpd.conf

  And voila! The server should be running.

  By default the srm.conf and access.conf files are located by name - to
  specifically call them by other names, use the AccessConfig and
  ResourceConfig directives in httpd.conf.

  Set your system time properly!

  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.

  Upgrading an Existing Apache Environment
  ----------------------------------------

  Between releases of Apache, there are several files that are likely to get
  changed (aside from the source, of course).  These include:

    src/Makefile.tmpl
    src/Configuration.tmpl
    src/Configure
    conf/*.conf-dist
    conf/mime.types

  It's recommended that you unpack a new Apache version distribution into a
  different directory than the existing one, and check these files against the
  ones you already have for new or changed directives.  It's almost certain
  that the Configure, Configuration.tmpl, and Makefile.tmpl files are going to
  change, so pay particular attention to merging your existing Configuration
  settings with the ones in the Configuration.tmpl file to make a new
  Configuration file in the new Apache src directory.  Then follow the steps
  for a new installation to build and test the new server before replacing the
  existing Apache directory tree with the one from the new distribution.

