APACHE CONFIGURATION | |
Apache 1.3 Autoconf-style Interface (APACI) | |
=========================================== | |
APACI is an Autoconf-style interface for the Unix side of the Apache 1.3 | |
HTTP server source distribution. It is actually not GNU Autoconf-based, i.e. | |
the GNU Autoconf package itself is not used. Instead APACI just provides a | |
similar batch configuration interface and a corresponding out-of-the-box | |
build and installation procedure. | |
The basic goal is to provide the following commonly known and expected | |
procedure for out-of-the-box building and installing a package like Apache: | |
$ gunzip <apache_1.3.X.tar.gz | tar xvf - | |
$ ./configure --prefix=PREFIX [...] | |
$ make | |
$ make install | |
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. | |
After these steps Apache 1.3 is completely installed under PREFIX and | |
already initially configured, so you can immediately fire it up the first | |
time via | |
$ PREFIX/sbin/apachectl start | |
to get your first success event with the Apache HTTP server without having | |
to fiddle around with various options for a long time. On the other hand | |
APACI provides a lot of options to adjust the build and installation process | |
for flexibly customizing your Apache installation. So, APACI provides both: | |
Out-of-the-box building and installation for the impatient and powerful | |
custom configuration for the experts. | |
Detailed Description | |
==================== | |
For a detailed description of all available APACI options please read the | |
file INSTALL or at least run the command | |
$ ./configure --help | |
for a compact one-page summary of the possibilities you have. | |
Alternatively, you can start from the following examples. | |
Examples | |
======== | |
In the following typical or even interesting variants of the available | |
configuration steps are shown to give you an impression what APACI is good | |
for and what APACI can do for you to be able to install Apache without much | |
pain. | |
Standard installation | |
--------------------- | |
The standard installation is done via | |
$ ./configure --prefix=/path/to/apache | |
$ make | |
$ make install | |
This builds Apache 1.3 with the standard set of enabled modules | |
(automatically determined from src/Configuration.tmpl) with an Apache 1.2 | |
conforming subdirectory layout under /path/to/apache. For using the GNU | |
style subdirectory layout additionally use the --with-layout=GNU option: | |
$ ./configure --with-layout=GNU --prefix=/path/to/apache | |
$ make | |
$ make install | |
If you are not sure which directory layout you want, you can use the | |
--show-layout option. It displays the directory layout which would be used | |
but immediately exits without configuring anything. Examples: | |
$ ./configure --show-layout | |
$ ./configure --prefix=/path/to/apache --show-layout | |
$ ./configure --with-layout=GNU --prefix=/path/to/apache --show-layout | |
Additionally if some of the shown paths still don't fit for your particular | |
situation, you can use the --bindir, --sbindir, --libexecdir, --mandir, | |
--sysconfdir, --datadir, --localstatedir, --runtimedir, --logfiledir and | |
--proxycachedir options to adjust the layout as required. Always check with | |
--show-layout the resulting directory layout which would be used for | |
installation. | |
suEXEC support | |
-------------- | |
The suEXEC feature of Apache provides a mechanism to run CGI and SSI | |
programs under the user and group id of the owner of the program. It is | |
neither installed nor configured per default for Apache 1.3, but APACI | |
supports it with additional options: | |
$ ./configure --prefix=/path/to/apache \ | |
--enable-suexec \ | |
--suexec-caller=www \ | |
--suexec-userdir=.www \ | |
--suexec-docroot=/path/to/root/dir \ | |
--suexec-logfile=/path/to/logdir/suexec_log \ | |
--suexec-uidmin=1000 \ | |
--suexec-gidmin=1000 \ | |
--suexec-safepath="/bin:/usr/bin" | |
$ make | |
$ make install | |
This automatically builds and installs Apache 1.3 with suEXEC support for | |
the caller uid "www" and the user's homedir subdirs ".www". The default | |
paths for --suexec-docroot is the value from the --datadir option with | |
the suffix "/htdocs" and the --logfiledir value with the suffix | |
"/suexec_log" for the --suexec-logfile option. The access paths for the | |
suexec program are automatically adjusted and the suexec program is | |
installed, so Apache can find it on startup. | |
Building multiple platforms in parallel | |
--------------------------------------- | |
When you want to compile Apache for multiple platforms in parallel it is | |
useful to share the source tree (usually via NFS, AFS or DFS) but build the | |
object files in separated subtrees. This can be accomplished by letting | |
APACI create a source shadow tree and build there: | |
$ ./configure --shadow --prefix=/path/to/apache | |
$ make | |
$ make install | |
Then APACI first determines the GNU platform triple, creates a shadow tree | |
in src.<gnu-triple> plus corresponding Makefile.<gnu-triple> and then | |
performs the complete build process inside this shadow tree. | |
Dynamic Shared Object (DSO) support | |
----------------------------------- | |
Apache 1.3 supports building modules as shared objects on all major Unix | |
platforms (see section "Supported Platforms" in document | |
htdocs/manual/dso.html for details). APACI has a nice way of enabling the | |
building of DSO-based modules and automatically installing them: | |
$ ./configure --prefix=/path/to/apache \ | |
--enable-module=rewrite \ | |
--enable-shared=rewrite | |
$ make | |
$ make install | |
This builds and installs Apache with the default configuration except that | |
it adds the mod_rewrite module and automatically builds and installs it as a | |
DSO, so it is optionally available for loading under runtime. To make your | |
life even more easy APACI additionally inserts a corresponding `LoadModule' | |
line into the httpd.conf file in the installation phase. | |
APACI also supports a variant of the --enable-shared option: | |
$ ./configure --prefix=/path/to/apache \ | |
--enable-shared=max | |
$ make | |
$ make install | |
This enables shared object building for the maximum of modules, i.e. all | |
enabled modules (--enable-module or the default set) except for mod_so | |
itself (the bootstrapping module for DSO support). So, to build a | |
full-powered Apache with maximum flexibility by building and installing most | |
of the modules, you can use: | |
$ ./configure --prefix=/path/to/apache \ | |
--enable-module=most \ | |
--enable-shared=max | |
$ make | |
$ make install | |
This first enables most of the modules (all modules except some problematic | |
ones like mod_auth_db which needs third party libraries not available on | |
every platform or mod_log_agent and mod_log_referer which are deprecated) | |
and then enables DSO support for all of them. This way you get all these | |
modules installed and you then can decide under runtime (via the | |
`LoadModule') directives which ones are actually used. This is especially | |
useful for vendor package maintainers to provide a flexible Apache package. | |
On-the-fly added additional/private module | |
------------------------------------------ | |
For Apache there are a lot of modules flying around on the net which solve | |
particular problems. For a good reference see the Apache Module Registory at | |
http://modules.apache.org/ and the Apache Group's contribution directory at | |
http://www.apache.org/dist/contrib/modules/. These modules usually come in a | |
file named mod_foo.c. APACI supports adding these sources on-the-fly to the | |
build process: | |
$ ./configure --prefix=/path/to/apache \ | |
--add-module=/path/to/mod_foo.c | |
$ make | |
$ make install | |
This automatically copies mod_foo.c to src/modules/extra/, activates it in | |
the configuration and builds Apache with it. A very useful way is to combine | |
this with the DSO support: | |
$ ./configure --prefix=/path/to/apache \ | |
--add-module=/path/to/mod_foo.c \ | |
--enable-shared=foo | |
$ make | |
$ make install | |
This builds and installs Apache with the default set of modules, but | |
additionally builds mod_foo as a DSO and adds a `LoadModule' line to the | |
httpd.conf file to activate it for loading under runtime. | |
Apache and mod_perl | |
------------------- | |
The Apache/Perl integration project (http://perl.apache.org/) from Doug | |
MacEachern <dougm@perl.apache.org> is a very powerful approach to integrate | |
a Perl 5 interpreter into the Apache HTTP server both for running Perl | |
programs and for programming Apache modules in Perl. The distribution | |
mod_perl-1.XX.tar.gz can be found on http://perl.apache.org/src/. Here is | |
how you can build and install Apache with mod_perl: | |
$ gunzip <apache_1.3.X.tar.gz | tar xvf - | |
$ gunzip <mod_perl-1.XX.tar.gz | tar xvf - | |
$ cd mod_perl-1.XX | |
$ perl Makefile.PL APACHE_SRC=../apache_1.3.X/src \ | |
DO_HTTPD=1 USE_APACI=1 \ | |
[EVERYTHING=1 ...] | |
$ make | |
$ make install | |
[optionally you now have the chance to prepare or add more | |
third-party modules to the Apache source tree] | |
$ cd ../apache_1.3.X | |
$ ./configure --prefix=/path/to/apache \ | |
--activate-module=src/modules/perl/libperl.a \ | |
[--enable-shared=perl] | |
$ make | |
$ make install | |
Apache and PHP | |
-------------- | |
The PHP language (http://www.php.net) is an HTML-embedded scripting language | |
which can be directly integrated into the Apache HTTP server for powerful HTML | |
scripting. The package can be found at http://www.php.net/downloads.php | |
1. How you can install Apache with a statically linked PHP: | |
$ gunzip <apache_1.3.X.tar.gz | tar xvf - | |
$ gunzip <php-3.0.tar.gz | tar xvf - | |
$ cd apache_1.3.X | |
$ ./configure --prefix=/path/to/apache | |
$ cd ../php-3.0 | |
$ ./configure --with-apache=../apache_1.3.X | |
$ make | |
$ make install | |
[optionally you now have the chance to prepare or add more | |
third-party modules to the Apache source tree] | |
$ cd ../apache_1.3.X | |
$ ./configure --prefix=/path/to/apache \ | |
--activate-module=src/modules/php3/libphp3.a | |
$ make | |
$ make install | |
2. You can also use APXS: | |
$ cd apache-1.3.X | |
$ ./configure --prefix=/path/to/apache --enable-shared=max | |
$ make | |
$ make install | |
$ cd php-3.0.X | |
$ ./configure --with-apxs=/path/to/apache/bin/apxs \ | |
--with-config-file-path=/path/to/apache | |
$ make | |
$ make install | |
At this point don't forget to edit your conf/httpd.conf file and | |
make sure the file contains the line for PHP 3: | |
AddType application/x-httpd-php3 .php3 | |
Or this line for PHP 4: | |
AddType application/x-httpd-php .php | |
Then restart your server. |