Introduction

Il existe déjà un billet sur la compilation du serveur web apache, mais il concerne la branche 2.2.x. La branche actuelle, 2.4.x ne fonctionne pas selon le même principe, car les fonctionnalités APR ( Apache Portable Runtime ) ont été sorties du code source de httpd.
Il en est de même pour PCRE ( Perl Compatible Regular Expressions ).

Ce billet et conçu pour Debian Squeeze. Il suppose installé les outils de compilation ( aptitude install build-essential ).

Chargement des sources

Au moment de la rédaction de ce billet, les versions stables sont :

  • httpd 2.4.2,
  • apr 1.4.6
  • apr-util 1.4.1

Télécharger ces sources par wget

wget http://mirror.ibcp.fr/pub/apache//httpd/httpd-2.4.2.tar.gz
wget http://apache.cict.fr//apr/apr-1.4.6.tar.gz
wget http://apache.cict.fr//apr/apr-util-1.4.1.tar.gz

Il faut aussi installer les librairies PCRE

aptitude install libpcre3-dev

Décompresser les sources

tar -xvzf /home/httpd-2.4.2.tar.gz
cd httpd-2.4.2/srclib
tar -xvzf /home/apr-1.4.6.tar.gz
mv apr-1.4.6 apr
tar -xvzf /home/apr-util-1.4.1.tar.gz
mv apr-util-1.4.1 apr-util

Lancer ensuite la compilation de manière "classique". Dans l'exemple le mpm utilisé est worker.

./configure --enable-so --enable-mods-shared="all" --prefix=/usr/local/apache2 --with-mpm=worker
make
make install

La suite de la configuration est identique au billet précédent. Un bémol toutefois, il faut dans la configuration charger un module de plus : mod_unixd sinon il y aura au démarrage l'erreur suivante : Invalid command 'User', perhaps misspelled or defined by a module not included in the server configuration.
Ci dessous un exemple de fichier httpd.conf compatible 2.4.x

ServerRoot /usr/local/apache2

User apache
Group apache

DocumentRoot /var/www/html
Listen 80

LoadModule mime_module modules/mod_mime.so
LoadModule unixd_module modules/mod_unixd.so
TypesConfig conf/mime.types

LoadModule dir_module modules/mod_dir.so
DirectoryIndex index.html

ErrorLog /var/log/apache2/error.log
LogLevel warn