From: Joshua Slive
- $ ./configure --prefix=PREFIX
- $ make
- $ make install
- $ PREFIX/bin/apachectl start
-
+Download | +$ lynx http://www.apache.org/dist/httpd/httpd-2_0_NN.tar.gz
+ |
Extract | +$ gzip -d httpd-2_0_NN.tar.gz |
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.
PATH
must contain basic
+build tools such as make
.If you are building from a copy of the CVS repository, rather than -a release distribution, then you will need these additional tools:
+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. If 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
.
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:
+Extracting the source from the Apache HTTPD tarball is a simple +matter of uncompressing, and then untarring:
- ./buildconf
-
+$ gzip -d httpd-2_0_NN.tar.gzThis 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 apache.org then this step is not -necessary.
+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.
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.
+particular platform and personal requirements. This is done using the +scriptconfigure
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 @@ -163,216 +188,200 @@ through the DSO mechanism:
--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 -2.0 is to run ./configure --help. What follows is a brief description -of most of the arguments.
- -- 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] -- -
Use the CC, CPPFLAGS, CFLAGS, CXXFLAGS, LDFLAGS, LIBS, INCLUDES, -SHLIB_PATH and TARGET environment variables to override or expand the -corresponding default entries as determined by configure.
- -Use NOTEST_CPPFLAGS, NOTEST_CFLAGS, NOTEST_CXXFLAGS, -NOTEST_LDFLAGS, and NOTEST_LIBS to add entries that should only be -used during the actual build and compilation of Apache, such as --Werror.
- -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.
- -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.
- -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:
-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 -option.
- -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 -"<Layout FOO>...</Layout>" 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.
- -Use the --show-layout option to check the final installation path -layout while fiddling with the options above.
- -Use the --enable-NAME=(shared) and --disable-NAME options to enable -or disable a particular already distributed module from the Apache -package.
- -Use the --with-mpm=NAME option to determine which MPM should be -built for your server.
- -- 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 ] - -- -
Use the --enable-suexec option to enable the suEXEC feature by -building and installing the "suexec" support program.
- -CAUTION: FOR DETAILS ABOUT THE SUEXEC FEATURE WE HIGHLY -RECOMMEND YOU TO FIRST READ THE DOCUMENT htdocs/manual/suexec.html -BEFORE USING THE ABOVE OPTIONS.
- -USING THE SUEXEC FEATURE PROPERLY CAN REDUCE CONSIDERABLY -THE SECURITY RISKS INVOLVED WITH ALLOWING USERS TO DEVELOP AND RUN -PRIVATE CGI OR SSI PROGRAMS. HOWEVER, IF SUEXEC IS IMPROPERLY -CONFIGURED, IT CAN CAUSE ANY NUMBER OF PROBLEMS AND POSSIBLY CREATE -NEW HOLES IN YOUR COMPUTER'S SECURITY. IF YOU AREN'T FAMILIAR WITH -MANAGING SETUID ROOT PROGRAMS AND THE SECURITY ISSUES THEY PRESENT, WE -HIGHLY RECOMMEND THAT YOU NOT CONSIDER USING SUEXEC AND KEEP AWAY FROM -THESE OPTIONS!
- -Use the --quiet option to disable all configuration verbose -messages.
+is to run ./configure --help. What follows is a brief description +of most of the arguments and 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=...
CPPFLAGS=...
CFLAGS=...
LDFLAGS=...
LIBS=...
INCLUDES=...
TARGET=...
[Default: apache]NOTEST_CPPFLAGS=...
NOTEST_CFLAGS=...
NOTEST_LDFLAGS=...
NOTEST_LIBS=...
SHLIB_PATH=...
--help
--quiet
--verbose
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]It is possible to specify that architecture-dependent files should +be placed under a different directory.
+ +--exec-prefix=EPREFIX
[Default:
+PREFIX]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
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.
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]
=shared
.--disable-MODULE
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
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.
-Now you can build the various parts which form the Apache package by simply running the command:
@@ -381,77 +390,58 @@ 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, dependend on the -amount of modules you have enabled.
+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.
-Now its time to install the package under the configured
-installation PREFIX (see --prefix option above) by running:
+installation PREFIX (see --prefix
option above) by running:
$ make install
-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.
+If you are upgrading, the installation will not overwrite +your configuration files or documents.
-Now you can fire up your Apache HTTP server by immediately running:
+Next, you can customize your Apache HTTP server by editing the configuration files under +PREFIX/conf/.
--- $ PREFIX/bin/apachectl start +
++ ++$ 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
-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:
+Now you can start your Apache HTTP +server by immediately running:
+-- $ PREFIX/bin/apachectl stop + $ PREFIX/bin/apachectl start
Customizing the package
- -Finally 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.
- - -Preparing the system
- -Proper operation of a public HTTP server requires at least the -following:
- -- -
+- 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.
- -- 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 -http://www.eecis.udel.edu/~ntp/ for more details about NTP software -and public time servers.
- -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:diff --git a/docs/manual/install.html.en b/docs/manual/install.html.en index 9b1b920da97..a03eb3f8361 100644 --- a/docs/manual/install.html.en +++ b/docs/manual/install.html.en @@ -31,32 +31,46 @@ Source projects.$ PREFIX/bin/apachectl stop
Overview for the impatient
-- $ ./configure --prefix=PREFIX
- $ make
- $ make install
- $ PREFIX/bin/apachectl start -+
+ +- Download +$ lynx http://www.apache.org/dist/httpd/httpd-2_0_NN.tar.gz +
Notes: -
+
+- Extract +$ gzip -d httpd-2_0_NN.tar.gz
+$ tar xvf httpd-2_0_NN.tar +- 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.
+- Configure +$ ./configure --prefix=PREFIX +
- 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.
+- Compile +$ make +
- 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
+- 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
@@ -64,91 +78,102 @@ FreeBSD, they can be re-enabled by using --enable-threads-
+- Disk Space
- -
-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, -etc).- ANSI-C Compiler
- -
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 http://www.gnu.org/ and the GCC -distribution under http://www.gnu.org/order/ftp.html.- Perl 5 Interpreter [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 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. -- Dynamic Shared Object (DSO) support [OPTIONAL]
+
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.
- -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.- 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, yourPATH
must contain basic +build tools such asmake
.- 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
-If you are building from a copy of the CVS repository, rather than -a release distribution, then you will need these additional tools:
+Apache can be downloaded from the Apache Software Foundation +download site or from a nearby mirror.
-- -
+- Libtool 1.3.3
+
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 -http://www.gnu.org/order/ftp.html.Version numbers that end in
-alpha
indicate early +pre-test versions which may or may not work. Version numbers ending +inbeta
indicate more reliable releases that still +require further testing or bug fixing. If you wish to dowload the +best available production release of the Apache HTTP Server, you +should choose the latest version with neitheralpha
nor +beta
in its filename.- Autoconf 2.13
+
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 -http://www.gnu.org/order/ftp.html.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
-Configuring the source tree
- -Setup
- -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:
+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- ./buildconf -
+$ tar xvf httpd-2_0_NN.tar +
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 apache.org then this step is not -necessary.
+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.
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.
+particular platform and personal requirements. This is done using the +scriptconfigure
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 @@ -163,216 +188,200 @@ through the DSO mechanism:
--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 -2.0 is to run ./configure --help. What follows is a brief description -of most of the arguments.
- -- 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] -- -
Use the CC, CPPFLAGS, CFLAGS, CXXFLAGS, LDFLAGS, LIBS, INCLUDES, -SHLIB_PATH and TARGET environment variables to override or expand the -corresponding default entries as determined by configure.
- -Use NOTEST_CPPFLAGS, NOTEST_CFLAGS, NOTEST_CXXFLAGS, -NOTEST_LDFLAGS, and NOTEST_LIBS to add entries that should only be -used during the actual build and compilation of Apache, such as --Werror.
- -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.
- -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.
- -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:
-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 -option.
- -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 -"<Layout FOO>...</Layout>" 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.
- -Use the --show-layout option to check the final installation path -layout while fiddling with the options above.
- -Use the --enable-NAME=(shared) and --disable-NAME options to enable -or disable a particular already distributed module from the Apache -package.
- -Use the --with-mpm=NAME option to determine which MPM should be -built for your server.
- -- 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 ] - -- -
Use the --enable-suexec option to enable the suEXEC feature by -building and installing the "suexec" support program.
- -CAUTION: FOR DETAILS ABOUT THE SUEXEC FEATURE WE HIGHLY -RECOMMEND YOU TO FIRST READ THE DOCUMENT htdocs/manual/suexec.html -BEFORE USING THE ABOVE OPTIONS.
- -USING THE SUEXEC FEATURE PROPERLY CAN REDUCE CONSIDERABLY -THE SECURITY RISKS INVOLVED WITH ALLOWING USERS TO DEVELOP AND RUN -PRIVATE CGI OR SSI PROGRAMS. HOWEVER, IF SUEXEC IS IMPROPERLY -CONFIGURED, IT CAN CAUSE ANY NUMBER OF PROBLEMS AND POSSIBLY CREATE -NEW HOLES IN YOUR COMPUTER'S SECURITY. IF YOU AREN'T FAMILIAR WITH -MANAGING SETUID ROOT PROGRAMS AND THE SECURITY ISSUES THEY PRESENT, WE -HIGHLY RECOMMEND THAT YOU NOT CONSIDER USING SUEXEC AND KEEP AWAY FROM -THESE OPTIONS!
- -Use the --quiet option to disable all configuration verbose -messages.
+is to run ./configure --help. What follows is a brief description +of most of the arguments and 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=...
CPPFLAGS=...
CFLAGS=...
LDFLAGS=...
LIBS=...
INCLUDES=...
TARGET=...
[Default: apache]NOTEST_CPPFLAGS=...
NOTEST_CFLAGS=...
NOTEST_LDFLAGS=...
NOTEST_LIBS=...
SHLIB_PATH=...
--help
--quiet
--verbose
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]It is possible to specify that architecture-dependent files should +be placed under a different directory.
+ +--exec-prefix=EPREFIX
[Default:
+PREFIX]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
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.
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]
=shared
.--disable-MODULE
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
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.
-Now you can build the various parts which form the Apache package by simply running the command:
@@ -381,77 +390,58 @@ 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, dependend on the -amount of modules you have enabled.
+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.
-Now its time to install the package under the configured
-installation PREFIX (see --prefix option above) by running:
+installation PREFIX (see --prefix
option above) by running:
$ make install
-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.
+If you are upgrading, the installation will not overwrite +your configuration files or documents.
-Now you can fire up your Apache HTTP server by immediately running:
+Next, you can customize your Apache HTTP server by editing the configuration files under +PREFIX/conf/.
-
- $ PREFIX/bin/apachectl start
+
+$ 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
-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:
+Now you can start your Apache HTTP
+server by immediately running:
+
- $ PREFIX/bin/apachectl stop
+ $ PREFIX/bin/apachectl start
-Customizing the package
-
-Finally 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.
-
-
-Preparing the system
-
-Proper operation of a public HTTP server requires at least the
-following:
-
-
-
-- 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.
-
-- 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
-http://www.eecis.udel.edu/~ntp/ for more details about NTP software
-and public time servers.
-
-
+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