Return-Path: Delivered-To: new-httpd-archive@hyperreal.org Received: (qmail 19545 invoked by uid 6000); 25 Mar 1998 16:27:20 -0000 Received: (qmail 19516 invoked from network); 25 Mar 1998 16:27:08 -0000 Received: from mrelay.jrc.it (139.191.1.65) by taz.hyperreal.org with SMTP; 25 Mar 1998 16:27:08 -0000 Received: from mda00.jrc.it (mda00.jrc.it [139.191.7.10]) by mrelay.jrc.it (LMC5688) with ESMTP id RAA12675; Wed, 25 Mar 1998 17:26:57 +0100 (MET) Received: (from dirkx@localhost) by mda00.jrc.it (8.8.5/8.8.5) id RAA25232; Wed, 25 Mar 1998 17:27:00 +0100 (CET) Date: Wed, 25 Mar 1998 17:27:00 +0100 (CET) From: Dirk-Willem van Gulik X-Sender: dirkx@mda00.jrc.it To: rse@engelschall.com cc: new-httpd@apache.org Subject: Re: Voting: APACI In-Reply-To: <199803251113.MAA10367@en1.engelschall.com> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: new-httpd-owner@apache.org Precedence: bulk Reply-To: new-httpd@apache.org Hmm.. I've jus tried it; for a x-system build and it works fine for some flavours of BSD, Solaris and OSF. And it does make auto (re-) installations indeed a very smooth afair. Though I would be wary of including it for a real release I really would like to see it included say for the 1.3, because if it works and does not need an insane amounth of support; then it would be a very worthwile addition ! Dw On Wed, 25 Mar 1998 rse@engelschall.com wrote: > > Voting APACI > ------------ > > Ok, APACI is old enough and now it's time to either consider it to included > for Apache 1.3 or finally ignored for the Apache Group. I've added a very long > description to apache-1.3/STATUS to give you the chance to make a fair > decision, even if you still don't know anything about APACI: For thise of > you who don't want to try it out theirself (perhaps less time) I'll append > the APACI README and INSTALL file to this posting. > > Please add your votes to the STATUS file. Thanks. > > Greetings, > Ralf S. Engelschall > rse@engelschall.com > www.engelschall.com > _ ____ _ ____ ___ > / \ | _ \ / \ / ___|_ _| > / _ \ | |_) / _ \| | | | > / ___ \| __/ ___ \ |___ | | > /_/ \_\_| /_/ \_\____|___| > > APache 1.3 AutoConf Interface (APACI) > ===================================== > > APACI is an Autoconf-style interface for the Unix side of the Apache 1.3 > HTTP server source distribution. It is _NOT_ GNU Autoconf-based, i.e. no > GNU Autoconf stuff is actually used. Instead APACI just provides a similar > batch configuration interface and a corresponding out-of-the-box > 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 $ ./configure --prefix=/path/to/apache [...] > $ make > $ make install > > After these steps Apache 1.3 is completely installed and already initially > configured, so you can immediately fire it up the first time via > > $ /path/to/apache/sbin/apachectl start > > to get your first success event with the Apache HTTP server without having > to fiddle around a long time. On the other hand APACI provides a lot of > options to adjust the build and installation process for flexible > 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. > > Examples > ======== > > In the following typical or even interesting variants of the available > configuration step are shown to give you an impression what APACI is good > for. > > 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) under a > GNU-conforming subdirectory layout under /path/to/apache. For using the old > Apache 1.2 subdirectory layout additionally use the --compat option: > > $ ./configure --compat --prefix=/path/to/apache > $ make > $ make install > > Dynamic Shared Object (DSO) support > ----------------------------------- > > Apache 1.3 support building modules as shared objects on all major platforms > like FreeBSD, Linux, SunOS, Solaris, IRIX, OSF/1 and UnixWare. APACI has a > nice way of enabling and automatically installing these shared objects: > > $ ./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 mod_rewrite and automatically builds and installs mod_rewrite as a > shared object, so it is optionally available for loading under runtime. > > APACI also support 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 > enables modules (--enable-module or the default set) except for mod_so > itself (the bootstrapping module for shared object support). To build > a full-powered Apache with maximum flexiblity by building and installing > most of the modules, you can use: > > $ ./configure --prefix=/path/to/apache \ > --enable-modules=most \ > --enable-shared=max > $ make > $ make install > > This is 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) and then enables shared object support for all > of them. This way you get all these modules installed and you then can > configure via the "LoadModule" directive which ones are actually used. > > 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://www.covalent.net/module_registry/ and the contribution directory at > http://www.apache.org/dist/contrib/modules/. These modules usually come in a > file named mod_foo.c. APACI support 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 adds mod_foo.c to SRC/modules/extra/, enables it in the > configuration and builds Apache with it. A useful way is to combine this > with the shared object 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 shared object and adds a "LoadModule" line > to the httpd.conf file, so later you can enable your own module under > runtime. > > mod_perl Support > ---------------- > > The Apache/Perl integration project (http://perl.apache.org/) from Doug > McEachern 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/ and APACI has support for adding its Apache > part on-the-fly to the building process of Apache 1.3: > > $ ./configure --prefix=/path/to/apache \ > --with-perl=/path/to/bin/perl \ > --add-modperl=/path/to/mod_perl-1.XX > --enable-shared=perl > $ make > $ make install > > This automatically builds and installs Apache 1.3 with mod_perl 1.XX as a > shared object under /tmp/apache. After additionally installing the Perl side > of mod_perl via > > $ cd /path/to/mod_perl-1.XX > $ /path/to/bin/perl Makefile.PL NO_HTTPD=1 > $ make all install > > you can enable the created "LoadModule" line in /tmp/apache/etc/httpd.conf > and fire up Apache with mod_perl. > > 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. > > $ ./configure --prefix=/path/to/apache \ > --enable-suexec \ > --suexec-caller=www \ > --suexec-userdir=.www > $ make > $ make install > > This automatically builds and installs Apache 1.3 with suEXEC support for > the caller uid "www" and the user subdirs ".www". The access paths for the > suexec program are automatically adjusted and the suexec program is > installed, so Apachecan 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 but build the object files in separated > subtrees. This can be accomplished by letting APACI compile in a shadow tree > like this: > > $ ./configure --shadow --prefix=/path/to/apache > $ make > $ make install > > Then APACI runs the src/helpers/GuessOS script to determine the GNU triple > for the underlaying platform, creates a shadow tree in src. and > then performs the complete build process in this shadow tree. > > > Installing the Apache 1.3 HTTP server with APACI > ================================================ > > 1. Overview for the impatient > -------------------------- > > $ ./configure --prefix=PREFIX > $ make > $ make install > $ PREFIX/sbin/apachectl start > > 2. Requirements > ------------ > > The following requirements exist for building Apache: > > o Disk Space: > Make sure you have 8 MB of temporary free disk space. After > installation Apache occupies approximately 3 MB of disk space. > > o 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. If you > don't have GCC then at least make sure your vendors compiler is ANSI > compliant. You can find the homepage of GNU on > http://www.gnu.ai.mit.edu/ and the GCC distribution on > http://www.gnu.ai.mit.edu/order/ftp.html . > > 3. Configuring the source tree > --------------------------- > > The next step is to configure the Apache source tree for your particular > system/platform. The important information here is to set a location > prefix where Apache is to be installed later, because Apache has to be > configured for this location to work correctly. > > $ [CC=...] [OPTIM=...] [CFLAGS=...] [CFLAGS_SHLIB=...] > [LDFLAGS=...] [LDFLAGS_SHLIB=...] > [LIBS=...] [INCLUDES=...] > [RANLIB=...] [LDFLAGS_SHLIB_EXPORT=...] > ./configure [--prefix=DIR] > [--exec-prefix=PREFIX] > [--bindir=EPREFIX] > [--sbindir=DIR] > [--libexecdir=DIR] > [--mandir=DIR] > [--sysconfdir=DIR] > [--datadir=DIR] > [--localstatedir=DIR] > [--compat] > [--display-layout] > [--enable-rule=RULENAME] > [--disable-rule=RULENAME] > [--enable-module=MODULENAME] > [--disable-module=MODULENAME] > [--enable-shared=MODULENAME] > [--disable-shared=MODULENAME] > [--add-module=FILE] > [--add-modperl=DIR] > [--enable-suexec] > [--suexec-caller=UID] > [--suexec-userdir=SUBDIR] > [--shadow] > [--quiet] > [--verbose] > > Use the CC, OPTIM, CFLAGS, CFLAGS_SHLIB, LDFLAGS, LDFLAGS_SHLIB, LIBS, > INCLUDES, RANLIB and LDFLAGS_SHLIB_EXPORT environment variables to > override the corresponding default entries in the src/Configuration.tmpl > file. > > 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 and --localstatedir=DIR option to change > the path for a particular subdirectory of the installation tree. Defaults > are bindir=EPREFIX/bin, sbindir=EPREFIX/sbin, libexecdir=EPREFIX/libexec, > mandir=PREFIX/man, sysconfdir=PREFIX/etc, datadir=PREFIX/share and > localstatedir=PREFIX/var. > > Use the --compat option to install Apache into a installation tree which > has a similar layout than the one where Apache 1.2 was installed into. > > Use the --display-layout option to check the final installation path > layout while fiddling with the above options. > > Use the --enable-rule=RULENAME and --disable-rule=RULENAME options to > enable or disable a particular Rule from the Apache src/Configuration.tmpl > file. The defaults (yes=enabled, no=disabled) can be seen when running > `./configure --help'. > > Use the --enable-module=MODULENAME and --disable-module=MODULENAME options > to enable or disable a particular Module from the Apache > src/Configuration.tmpl file. The defaults (yes=enabled, no=disabled) can > be seen when running `./configure --help'. There are two special > MODULENAME variants: "all" for enabling or disabling all modules and > "most" for enabling or disabling only these modules which are useable on > all platforms. > > Use the --enable-shared=MODULENAME and --disable-shared=MODULENAME options > to enable or disable the shared object support for a particular Module > from the Apache src/Configuration.tmpl file. The defaults (yes=enabled, > no=disabled) can be seen when running `./configure --help'. There are two > special MODULENAME variants: "max" for enabling or disabling all modules > except the bootstrapping module mod_so and "remain" for enabling or > disabling only these modules which are still not enabled. > > Use the --add-module=FILE option to on-the-fly add a module to the Apache > package build process. FILE has be a valid path to a C source file, i.e. > FILE usually /path/to/mod_xxx.c > > Use the --add-modperl=DIR option to on-the-fly add the Apache-part of the > mod_perl source distribution to the Apache package build process. DIR has > be a valid path to the mod_perl source tree. > > Use the --enable-suexec option to enable the suEXEC feature by building > and installing the "suexec" support program. Use --suexec-caller=UID to > set the allowed caller user id and --suexec-userdir=SUBDIR to set the user > subdirectory for this feature. > > Use the --shadow option to let APACI create a shadow subtree of the source > subtree. This is useful when you want to build for different platforms in > parallel (usually through a NFS or AFS mounted filesystem). > > Use the --quiet option to disable all configuration verbose messages. > > Use the --verbose option to enable additional verbose messages. > > 4. Building the package > -------------------- > > Now you can build the programs, manpages and include files which form the > Apache package by running the command > > $ make > > Please be patient, this takes approximately 5 minutes to complete under a > Pentium-166/FreeBSD-2.1 system. > > 5. Installing the package > ---------------------- > > Now its time to install the package's programs under the installation > prefix 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. > > 6. Testing the package > ------------------- > > Now you can fire up your Apache HTTP server by running > > $ PREFIX/sbin/apachectl start > > and then you should be able to request your first document via URL > http://localhost/. Then stop the server again by running: > > $ PREFIX/sbin/apachectl stop > > 7. Customizing the package > ----------------------- > > Finally you can customize your Apache HTTP server by editing the files > under PREFIX/etc/. > >