Attached are two files: a much abbreviated INSTALL and a revamp of
install.html.  Here is what my goals were:

INSTALL is a just a pointer to the real install docs with a very basic
quickstart guide for people who have nothing but an xterm to work with.

I removed most of the ./configure documentation because it was either
obsolete or not functional because of bugs in httpd-2.0. I documented only
the most basic things that people need to get things going, and that I
could verify actually work.  I do not think that this is at all complete,
or even necessarily completely accurate, but I hope it is a good base for
future work.  In addition, I think that it is MUCH more useful than what
is there for people actually trying to get 2.0 up and running.

I will commit install.html unless I see major objections.  By major
objections I mean either 1. You think what is already there is better than
this; or 2. You think this is heading in the wrong direction completely.

I am also very interested in input on how to improve this, but I plan to
commit it as is and then do improvements later.  That way, others can take
a crack at it too.

I do not have the karma to commit INSTALL, so I would appreciate it if
someone could take care of that for me.

-- 
Joshua Slive
[EMAIL PROTECTED]
http://slive.ca/
Phone: (604) 822-1871
  QUICK AND DIRTY APACHE INSTALLATION

  For full installation documentation, see docs/manual/install.html or
  http://httpd.apache.org/docs-2.0/install.html

  Overview for the impatient
  --------------------------

     $ ./configure --prefix=PREFIX
     $ make
     $ make install
     $ PREFIX/bin/apachectl start

     NOTES: * 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.

            * 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

            * If you are a developer using the CVS version of Apache,           
             you will need to run ./buildconf before anything else.

  The easiest way to find all of the configuration flags for Apache
  2.0 is to run ./configure --help.

  Thanks for using the Apache HTTP Server, Version 2.0.

                                     The Apache Software Foundation
                                     http://www.apache.org/
Title: Compiling and Installing Apache

Compiling and Installing

This document covers compilation and installation of Apache on Unix and Unix-like systems only. For compiling and installation on Windows, see Using Apache with Microsoft Windows. For other platforms, see the platform documentation.

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.

Overview for the impatient

Download $ lynx http://httpd.apache.org/dist/httpd-2_0_NN.tar.gz
Extract $ gzip -d httpd-2_0_NN.tar.gz
$ tar xvf httpd-2_0_NN.tar
Configure $ ./configure --prefix=PREFIX
Compile $ make
Install $ make install
Customize $ vi PREFIX/conf/httpd.conf
Test $ PREFIX/bin/apachectl start

NN must be replaced with the current minor version number, and PREFIX must be replaced with the filesystem path under which the server should be installed. If PREFIX is not specified, it defaults to /usr/local/apache2.

Each section of the compilation and installation process is described in more detail below, beginning with the requirements for compiling and installing Apache HTTPD.

Requirements

The following requirements exist for building Apache:

  • Disk Space

    Make sure you have at least 50 MB of temporary free disk space available. After installation Apache occupies approximately 10 MB of disk space. The actual disk space requirements will vary considerably based on your chosen configuration options and any third-party modules.

  • ANSI-C Compiler and Build System

    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. In addition, your PATH must contain basic build tools such as make.

  • Accurate time keeping

    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 for more details about NTP software and public time servers.

  • Perl 5 [OPTIONAL]

    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 there 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.

Download

Apache can be downloaded from the Apache Software Foundation download site or from a nearby mirror.

Version numbers that end in alpha indicate early pre-test versions which may or may not work. Version numbers ending in beta indicate more reliable releases that still require further testing or bug fixing. In you wish to dowload the best available production release of the Apache HTTP Server, you should choose the latest version with neither alpha nor beta in its filename.

After downloading, especially if a mirror site is used, it is important to verify that you have a complete and unmodified version of the Apache HTTP Server. This can be accomplished by testing the downloaded tarball against the PGP signature, which should always be obtained from the main Apache website. The signature file has a filename identical to the source tarball with the addition of .asc.

Extract

Extracting the source from the Apache HTTPD tarball is a simple matter of uncompressing, and then untarring:

$ gzip -d httpd-2_0_NN.tar.gz
$ tar xvf httpd-2_0_NN.tar

This will create a new directory under the current directory containing the source code for the distribution. You should cd into that directory before proceeding with compiling the server.

Configuring the source tree

The next step is to configure the Apache source tree for your particular platform and personal requirements. This is done using the script configure included in the root directory of the distribution. (Developers downloading the CVS version of the Apache source tree will need to have autoconf and libtool installed and will need to run buildconf before proceeding with the next steps. This is not necessary for official releases.)

To configure the source tree using all the default options, simply type ./configure. To change the default options, configure accepts a variety of variables and command line options. Environment variables are generally placed before the ./configure command, while other options are placed after. The most important option 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_speling for later loading through the DSO mechanism:

$ CC="pgcc" CFLAGS="-O2" \
./configure --prefix=/sw/pkg/apache \
--enable-rewrite=shared \
--enable-speling=shared

When configure is run it will take several minutes to test for the availability of features on your system and build Makefiles which will later be used to compile the server.

The easiest way to find all of the configuration flags for Apache is to run ./configure --help. What follows is a brief description of most of the arguments and environment variables.

Environment Variables

The autoconf build process uses several environment variables to configure the build environment. In general, these variables change the method used to build Apache, but not the eventual features of the server. These variables can be placed in the environment before invoking configure, but it is usually easier to specify them on the configure command line as demonstrated in the example above.

CC=...
The name of the C compiler command.
CPPFLAGS=...
Miscellaneous C preprocessor and compiler options.
CFLAGS=...
Debugging and optimization options for the C compiler.
LDFLAGS=...
Miscellaneous options to be passed to the linker.
LIBS=...
Library location information ("-L" and "-l" options) to pass to the linker.
INCLUDES=...
Header file search directories ("-Idir").
TARGET=... [Default: apache]
Name of the executable which will be built.
NOTEST_CPPFLAGS=...
NOTEST_CFLAGS=...
NOTEST_LDFLAGS=...
NOTEST_LIBS=...
These variables share the same function as their non-NOTEST namesakes. However, the variables are applied to the build process only after autoconf has performed its feature testing. This allows the inclusion of flags which will cause problems during feature testing, but must be used for the final compilation.
SHLIB_PATH=...
Options which specify shared library paths for the compiler and linker.

autoconf Output Options

--help
Prints the usage message including all available options, but does not actually configure anything.
--quiet
Prevents the printing of the usual "checking..." messages.
--verbose
Prints much more information during the configuration process, including the names of all the files examined.

Pathnames

There are currently two ways to configure the pathnames under which Apache will install its files. First, you can specify a directory and have Apache install itself under that directory in its default locations.

--prefix=PREFIX [Default: /usr/local/apache2]
Specifies the directory under which the Apache files will be installed.

It is possible to specify that architecture-dependent files should be placed under a different directory.

--exec-prefix=EPREFIX [Default: PREFIX]
Specifies the directory under which architecture-dependent files will be placed.

The second, and more flexible way to configure the install path locations for Apache is using the config.layout file. Using this method, it is possible to separately specify the location for each type of file within the Apache installation. The config.layout file contains several example configurations, and you can also create your own custom configuration following the examples. The different layouts in this file are grouped into <Layout FOO>...</Layout> sections and referred to by name as in FOO.

--enable-layout=LAYOUT
Use the named layout in the config.layout file to specify the installation paths.

Presently it is not possible to mix the --enable-layout and --prefix options. Nor is it possible to individually specify detailed pathnames on the configure command line. If you want just a basic install, you can simply use the --prefix option on its own. If you want to customize your install, you should edit the config.layout file and use the --enable-layout option.

Modules

Apache is a modular server. Only the most basic functionality is included in the core server. Extended features are available in various modules. During the configuration process, you must select which modules to compile for use with your server. You can view a list of modules included in the documentation. Those modules with a status of "Base" are included by default and must be specifically disabled if you do not want them. Modules with any other status must be specifically enabled if you wish to use them.

There are two ways for a module to be compiled and used with Apache. Modules may be statically compiled, which means that they are permanently included in the Apache binary. Alternatively, if your operating system supports Dynamic Shared Objects (DSOs) and autoconf can detect that support, then modules may be dynamically compiled. DSO modules are stored separately from the Apache binary, and may be included or excluded from the server using the run-time configuration directives provided by mod_so. The mod_so is automatically included in the server if any dynamic modules are included in the compilation. If you would like to make your server capable of loading DSOs without actually compiling any dynamic modules, you can explicitly --enable-so.

--enable-MODULE[=shared]
Compile and include the module MODULE. The identifier MODULE is the Module Identifier from the module documentation without the "_module" string. To compile the module dynamically as a DSO, add the option =shared.
--disable-MODULE
Remove the module MODULE which would otherwise be compiled and included.

In addition to the standard set of modules, Apache 2.0 also includes a choice of Multi-Processing Modules (MPMs). One, and only one MPM must be included in the compilation process. The default MPMs for each platform are listed on the MPM documentation page, but can be overridden on the configure command line.

--with-mpm=NAME
Choose the mpm NAME.

Suexec

Apache includes a support program called suexec which can be used to isolate user CGI programs. However, if suexec is improperly configured, it can cause serious security problems. Therefore, you should carefully read and consider the suexec documentation before implementing this feature.

Building the package

Now you can build the various parts which form the Apache package by simply running the command:

$ make

Please be patient here, since a base configuration takes approximately 3 minutes to compile under a Pentium III/Linux 2.2 system, but this will vary widely depending on your hardware and the number of modules which you have enabled.

Installing the package

Now its time to install the package under the configured installation PREFIX (see --prefix option above) by running:

$ make install

If you are upgrading, the installation will not overwrite your configuration files or documents.

Customizing the package

Next, you can customize your Apache HTTP server by editing the configuration files under PREFIX/conf/.

$ vi PREFIX/conf/httpd.conf

Have a look at the Apache manual under docs/manual/ or http://httpd.apache.org/docs/ for a complete reference of available configuration directives.

Testing the package

Now you can start 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 http://localhost:8080/ (when you built and installed Apache as a regular user). The web page you see is located under the DocumentRoot which will usually be PREFIX/htdocs/. Then stop the server again by running:

$ PREFIX/bin/apachectl stop
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to