Récupérer, compiler et installer Apache avec ses modules de base

Récupérer les sources de Apache

Qu'est-ce qu'Apache ?

Extrait du site www.apache.org

Le projet Apache est un effort de développement collaboratif d'un logiciel qui vise à fournir un serveur HTTP (Web) robuste, rivalisant avec des produits commerciaux, fonctionnel et dont le code source est libre. Le projet est mené conjointement par un groupe de volontaires des quatre coins du monde, utilisant Internet et le Web pour communiquer, plannifier et développer le serveur et sa documentation. Ces volontaires sont connus sous le nom de Apache Group. De plus, des centaines d'utilisateurs ont contribués aux idées, au code et à la documentation du projet. Ce fichier a vocation à décrire rapidement l'histoire de Apache Group et d'en faire connaitre les contributeurs.

Du point de vue des auteurs:

C'est simplement le meilleur serveur Web, sa configuration est très souple et permet de s'adapter au mieux à vos besoins, et il est E-X-T-R-E-M-E-M-E-N-T stable ! Je n'ai personnellement jamais vécu de plantage en environnement de production (=sans trucs expérimentaux).

Que celui qui a expérimenté un plantage m'envoie un rapport d'incident par email pour que je le publie ici...

Télécharger les sources

Site d'origine http://www.apache.org/dist/httpd/
cd /usr/local/

tar -xvzf apache_1.3.26.tar.gz

Correctif pour les très gros sites

Si votre serveur web doit répondre à un grand nombre de requêtes simultanées et que votre machine est suffisament puissante pour supporter ces requêtes, vous pouvez changer le nombre maximal de processus

Télécharger le correctif depuis : http://www.delouw.ch/linux/apache-patch_HARD_SERVER_LIMIT.txt

--- httpd.h     Thu Mar 21 18:07:34 2002
+++ httpd.h-new Sun Apr  7 13:34:11 2002
@@ -320,7 +320,7 @@
 #elif defined(NETWARE)
 #define HARD_SERVER_LIMIT 2048
 #else
-#define HARD_SERVER_LIMIT 256
+#define HARD_SERVER_LIMIT 512
 #endif
 #endif

Ce correctif accroît le nombre maximum d'accès concurrents à 512. N'hésitez pas à l'augmenter encore si vous avez taillé un noyau pour et si vous avez édité votre /etc/security/limits.conf (RÉSERVÉ aux administrateurs expérimentés). De mauvais paramètres pourraient provoquer un “auto-attaque déni de service”!! Assurez vous de répartir correctement les ressources du système.

Appliquer le patch comme suit:

cd /usr/local/apache_1.3.26/src/include

patch -p0 < apache-patch_HARD_SERVER_LIMIT.txt

mod_ssl

Qu'est-ce que mod_ssl ?

Extrait du site www.modssl.org

Ce module fournit des fonctions de chiffrement fort aux serveurs Web Apache 1.3 via les protocoles SSL v2/v3 et TLS v1 en s'appuyant sur OpenSSL.

Du point de vue des auteurs:

Ce module est nécessaire pour que Apache puisse traiter des requêtes SSL (https). Il modifie le code source d'Apache et etend son API

Assurez vous que tous les autres modules pour votre serveur Apache sont compilé avec l'option de compilation -DEAPI sans quoi votre serveur Web plantera ou refusera de démarrer

Presque tous les modules que je connais le font par eux même sauf mod_jserv et mod_jk

Appliquer le correctif aux sources de Apache

cd /usr/local/

tar -xvzf mod_ssl-2.8.9-1.3.26.tar.gz
cd mod_ssl-2.8.9-1.3.26/

./configure --with-apache=/usr/local/apache_1.3.26 

mod_perl

Qu'est-ce que mod_perl ?

Extrait du site perl.apache.org

Avec mod_perl, il est possible d'écrire des modules Apache intégralement en Perl. De plus, l'interpréteur persistant inclus dans le serveur évite la perte de temps inhérente au démarrage d'un interpréteur externe.

Du point de vue des auteurs:

mod_perl est une sorte de substitut pour les cgi-bin. Les cgi déclenchent un 'fork' à chaque requête qui induit une perte de temps. Avec mod_perl, l'interpréteur Perl est chargé par le serveur Apache et persistant. Les requêtes ne nécessitent plus de 'fork'.

Compilation et installation

cd /usr/local

tar -xvzf mod_perl-1.27.tar.gz

cd mod_perl-1.27

perl Makefile.PL \
EVERYTHING=1 \
APACHE_SRC=../apache_1.3.26/src \
USE_APACI=1 \
PREP_HTTPD=1 \
DO_HTTPD=1

make
make install

NB: Ne compilez pas mod_perl en DSO! Aux dernières nouvelles, Apache planterait (je n'ai jamais testé)

Configuragation et compilation de Apache

Les deux modules statiques (mod_ssl et mod_perl) sont maintenant configurés et le source d'Apache a été modifié.

Compilation et installation


EAPI_MM="/usr/local/mm-1.1.3" SSL_BASE="/usr/local/ssl" \
./configure \
--enable-module=unique_id \
--enable-module=rewrite \
--enable-module=speling \
--enable-module=expires \
--enable-module=info \
--enable-module=log_agent \
--enable-module=log_referer \
--enable-module=usertrack \
--enable-module=proxy \
--enable-module=userdir \
--enable-module=so \
--enable-shared=ssl \
--enable-module=ssl \
--activate-module=src/modules/perl/libperl.a \
--enable-module=perl

make
make install

Creation de ceritificats SSL auto-signés


cd /usr/local/ssl/bin

./openssl req -new > new.cert.csr
./openssl rsa -in privkey.pem -out new.cert.key
./openssl x509 -in new.cert.csr -out new.cert.cert \
-req -signkey new.cert.key -days 999

cp new.cert.key /usr/local/apache/conf/ssl.key/server.key
cp new.cert.cert /usr/local/apache/conf/ssl.crt/server.crt

N.B.: OpenSSL demande plusieurs renseignements. Un erreur courante est de donner au mauvais "common name". A cet endroit, vous devez mettre le nom complet de votre serveur, par exemple www.foo.org