Skip Navigation

Sign up

If you sign up for an account on this web site you can customise elements of this site and subscribe to an email newsletter.

If you have an account on this web site you may login.

If you have an account on this site but have forgotten your user name and / or your password then you can request an account reminder email.

HowTo Compile Apache 1.3 for MKDoc

Following are instructions for installing apache and mod_perl by compiling them from source for a back-end MKDoc server and using Apache 2.x as a front facing proxy.

Compiling Apache 1.3.x from source is generally needed for MKDoc (Apache 2.x which comes with many GNU/Linux distros is not suitable), see the mod_perl site for more details.

See the mod_gzip instructions for running Apache 1.3.x without a Apache 2.x proxy.

Apache, mod_perl

Download the source code

The latest apache 1.3.x can be downloaded from here: http://httpd.apache.org/download.cgi

The latest mod_perl from here: http://perl.apache.org/download/

wget ftp://mirror.positive-internet.com/apache/httpd/apache_1.3.33.tar.gz
wget ftp://mirror.positive-internet.com/apache/httpd/apache_1.3.33.tar.gz.asc
wget http://perl.apache.org/dist/mod_perl-1.29.tar.gz
wget http://perl.apache.org/dist/mod_perl-1.29.tar.gz.asc

Check the sigs

gpg --recv-key 08C975E5
gpg --verify apache_1.3.33.tar.gz.asc
gpg --recv-key 88C3A5A5
gpg --verify mod_perl-1.29.tar.gz.asc

Uncompress and extract

tar -zxvf apache_1.3.33.tar.gz
tar -zxvf mod_perl-1.29.tar.gz

Make and install

Make and install mod_perl with mod_gzip and apache:

cd mod_perl-1.29
perl Makefile.PL APACHE_SRC=../apache_1.3.33/src \
  DO_HTTPD=1 EVERYTHING=1 USE_APACI=1
make
make test
su
make install
cd ../apache_1.3.33
make install

Start Apache

Apache can now be started:

/usr/local/apache/bin/apachectl start

And if you want it to start after a reboot you can add this to /etc/rc.local (sourcing the mksetenv.sh script is essential for MKDoc to work properly and you chould change the path to whereever you have MKDoc installed):

source /var/mkdoc/mksetenv.sh
/usr/local/apache/bin/apachectl start

Apache, mod_ssl and mod_perl

The following assumes that you have openssl-devel packages installed already and in their default locations, if not see the mod_perl and mod_ssl instructions on perl.apache.org for using a source disto of openssl.

Download the source code

The latest apache 1.3.x can be downloaded from here: http://httpd.apache.org/download.cgi

The latest mod_ssl from here: http://www.modssl.org/source/

The latest mod_perl from here: http://perl.apache.org/download/

wget ftp://mirror.positive-internet.com/apache/httpd/apache_1.3.33.tar.gz
wget ftp://mirror.positive-internet.com/apache/httpd/apache_1.3.33.tar.gz.asc
wget http://www.modssl.org/source/mod_ssl-2.8.24-1.3.33.tar.gz
wget http://www.modssl.org/source/mod_ssl-2.8.24-1.3.33.tar.gz.asc
wget http://perl.apache.org/dist/mod_perl-1.29.tar.gz
wget http://perl.apache.org/dist/mod_perl-1.29.tar.gz.asc

Check the sigs

gpg --recv-key 08C975E5
gpg --verify apache_1.3.33.tar.gz.asc
gpg --recv-key 26BB437D
gpg --verify mod_ssl-2.8.24-1.3.33.tar.gz.asc
gpg --recv-key 88C3A5A5
gpg --verify mod_perl-1.29.tar.gz.asc

Uncompress and extract

tar -zxvf apache_1.3.33.tar.gz
tar -zxvf mod_ssl-2.8.24-1.3.33.tar.gz
tar -zxvf mod_perl-1.29.tar.gz

Make and install

Make and install mod_perl with mod_gzip and apache:

cd mod_ssl-2.8.24-1.3.33
./configure --with-apache=../apache_1.3.33
cd ../mod_perl-1.29
perl Makefile.PL APACHE_SRC=../apache_1.3.33/src \
  DO_HTTPD=1 EVERYTHING=1 USE_APACI=1 \
  APACI_ARGS='--enable-module=ssl'
make
make test
su
make install
cd ../apache_1.3.33
make install

Using mod_rewrite and Apache 2

If you want the Apache 2.x that comes with your distro to remain installed then one way to do this is to run the MKDoc Apache on a high port such as 8080 and use mod_rewrite to send requests on port 80 there.

Note that is has advantages: the ‘front-end’ apache-2.x deals with slow-clients and can perform content compression and encryption, this leaves the ‘backend’ apache-1.3 as a dedicated mod_perl server. This backend doesn't need to be compiled with mod_ssl or mod_gzip.

This is an example conf file that could be dropped into /etc/httpd/conf.d/ on a Fedora / RedHat distro:

# Editor: vim:syn=apache
#
# the mkdoc apache is in /usr/local/apache
# and the site is in /var/mkdoc/sites/example.org
#
<VirtualHost *:80>
 ServerName            www.example.org
 ServerAlias           example.org
 ServerAlias           users.example.org
 ServerAdmin           admin@example.org
 RewriteEngine On
 RewriteCond %{HTTP_HOST} ^users\.
 RewriteRule /?(.*) http://users.example.org:8080/$1 [P,L]
 RewriteCond %{HTTP_HOST} ^www\.
 RewriteRule /?(.*) http://www.example.org:8080/$1 [P,L]
 RewriteRule /?(.*) http://www.example.org/$1 [R=permanent,L]
 ErrorLog logs/example-error_log
 CustomLog logs/example-access_log combined
</VirtualHost>

If you drop this file into the /etc/httpd/conf.d/ directory as deflate.conf then the front end Apache 2.x will do compression:

# Editor: vim:syn=apache
#
# mod deflate
<Location />
 # More info: http://httpd.apache.org/docs-2.0/mod/mod_deflate.html
 #
 # Insert filter
 SetOutputFilter DEFLATE
 #
 # Netscape 4.x has some problems...
 BrowserMatch ^Mozilla/4 gzip-only-text/html
 #
 # Netscape 4.06-4.08 have some more problems
 BrowserMatch ^Mozilla/4\.0[678] no-gzip
 #
 # MSIE masquerades as Netscape, but it is fine
 BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
 # NOTE: Due to a bug in mod_setenvif up to Apache 2.0.48
 # the above regex won't work. You can use the following
 # workaround to get the desired effect:
 # BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
 #
 # Don't compress images or PDFs
 SetEnvIfNoCase Request_URI \
   \.(?:gif|jpe?g|png|pdf)$ no-gzip dont-vary
 #
 # Don't compress compressed data
 SetEnvIfNoCase Request_URI \
   \.(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary
 #
 # Don't compress compressed music,  mp3's and ogg
 SetEnvIfNoCase Request_URI \
   \.(?:mp3|ogg)$ no-gzip dont-vary
 #
 # Make sure proxies don't deliver the wrong content
 Header append Vary User-Agent env=!dont-vary
</Location>

Up

This document was last modified by Chris Croome on 2005-09-08 08:37:38
MKDoc Ltd., 31 Psalter Lane, Sheffield, S11 8YL, UK.
Copyright © 2001-2005 MKDoc Ltd.