Compiler et installer
Ce document couvre la compilation et l'installation d'apache
sur les système unix et unix-like seulement. Pour compiler et installer sous windows,
voir: Using Apache with Microsoft
Windows. Pour les autres plateformes, voir la documentation platform
L’environnement de configuration et d’installation d’Apache 2.0 à changé complètement depuis Apache 1.3. Apache 1.3 utilisait un jeu de scripts propriétaires pour une installation facile. Aujourd’hui, Apache 2.0 utilise libtool et autoconf pour créer un environnement qui ressemble à celui que l’on retrouve dans les autres projets OpenSource.
NN doit être remplacé avec le numéro de version actuelle, et PREFIX doit être remplacé par le répertoire d’installation sur le système. Si
PREFIX n’est pas spécifié, le répertoire par défaut est :
/usr/local/apache2
.
Chaque étape de l’installation et de la compilation est décrit plus en détails par la suite. Commençons par les prés requis pour compiler et installer Apache HTTPd.
![top]()
Les conditions suivantes sont requises pour la compilation d’Apache:
- Espace disque
Soyez sur que vous avez au moins 50 Mo au moins de libre temporairement sur votre disque. Après l’installation d’Apache, il occupe approximativement 10 Mo.
La taille nécessaire varie considérablement en fonction de vos choix de configuration et de modules.
- Compilateur ANSI-C et Compilation
Soyez sur que vous avez un compilateur ANSI-C installé. Le GNU C
compilateur (GCC) de Free Software Foundation (FSF)
est recommendé(la version 2.7.2 est bien). Si vous n’avez pas GCC, assurez vous que votre compilateur est compatible ANSI. De plus, votre PATH
doit contenir des outils de base comme make
.
- Conservation précise de l’heure
Les éléments du protocole HTTP sont exprimés par rapports à l’heure du jour (time of the day).
Le moment est donc venu d’installer des utilitaires de synchronisation de date et heure sur votre système. Ntpdate ou xntpd sont souvent utilisés dans le cas présent, et sont basés sur le NTP (Network Time Protocol).
Des informations supplémentaire sont disponibles sur le newsgroup
comp.protocols.time.ntp
et sur le site officiel NTP
pour plus de détails sur les solutions NTP et les servers d’heure et date public.
- Perl 5
[OPTIONEL]
Pour le support de certains scripts comme
apxs ou dbmmanage (qui sont écrits en perl) l’interpréteur Perl 5 est requis (les versions
5.003 and 5.004 sont bien). Si aucun interpréteur n’est trouvé par le script `configure’, ce n’est pas alarmant. Vous pouvez continuer à compiler et installer Apache 2.0, seulement le support de ce type de script ne sera pas assuré. Si vous avez plusieurs interpréteurs Perls installés (peut être Perl 4 par défaut sur le système et Perl 5 par vous-même), alors, il est recommandé d’utiliser l’option –with-perl pour être sur que le bon interpréteur est utilisé par ./configure.
![top]()
Apache peut être téléchargé sur le site Apache Software
Foundation download ou sur les sites mirroirs.
Les numéros de version qui se terminent en alpha
indiquent des versions en pré-tests qui pourront ou ne pourront pas fonctionner. Les numéros de versions qui se terminent en beta
indiquent des releases plus stables qui nécessitent encore des tests ou des corrections de bugs. Si vous désirez télécharger la meilleure version « production » d’Apache disponible, vous devez choisir la dernière version sans alpha
ni beta
dans le nom de fichier.
Après avoir rapatrié le fichier, et plus spécialement s’il provient d’un mirroir, il est important de verifier qu’il est complet et surtout non modifié. Pour cela, vous devez tester le package avec la signature PGP. Deux procédures sont nécessaires. Premièrement, vous devez obtenir le fichier KEYS
à partir du siteApache distribution. (Pour s’assurer que le fichier de KEYS
n’a pas été modifié, vous pouvez utiliser un fichier d’une version antérieure d’apache et importer les clefs d’un server de clefs public.) Les clefs sont importées dans votre jetton personnel de clefs en utilisant les commandes suivantes (dépend de votre version de pgp):
ou
La prochaine étape est de tester le package avec les signatures PGP qui peuvent être obtenues sur le site main Apache. Le fichier de signature à un nom identique à celui du package avec l’extension .asc
. Ensuite, vous pouvez verifier la distribution avec les commandes suivantes (Dépendent encore de votre version de pgp):
$ pgp httpd-2_0_NN.tar.gz.asc
ou
$ gpg --verify httpd-2_0_NN.tar.gz.asc
Vous devriez recevoir un message comme
Good signature from user "Martin Kraemer
<[EMAIL PROTECTED]>".
Selon la relation de confiance contenue dans votre jetton, vous pouvez aussi recevoir un message vous avertissant que la relation de confiance entre la clefs et le signataire ne peut être vérifiée. Ce n’est pas un problème si vous avez confiance en l’authenticité du fichier KEYS
.
![top]()
Extraire les sources du serveur HTTPd Apache à partir du package est un simple problème de décompression et de désarchivage:
$ gzip -d httpd-2_0_NN.tar.gz
$ tar xvf httpd-2_0_NN.tar
Ces commandes vont créer un nouveau répertoire dans le répertoire courant contenant les sources de la distribution. Vous devez aller dans ce répertoire avant de procéder à la compilation.
![top]()
L’étape suivante permet de configurer les sources d’Apache pour des plateformes et exigences particulières avec le script configure
inclus dans le répertoire racine de la distribution. (Les développeurs téléchargeant la version CVS du source d’Apache devront avoir autoconf
et libtool
installés et devront lancer buildconf
avant de procéder aux étapes suivantes. Ce ne sont pas nécessairement des releases officielles.
Pour configurer les sources en utilisant toutes les options par défaut, exécuter simplement ./configure
. Pour changer les options par défaut, configure
accepte une multitude de variables et de lignes de commandes en options. Les variables d’environnement sont généralement placées avant la commande ./configure
, alors que les autres options doivent être placées après. L’option la plus importante est le préfixe d’emplacement (chemin) qui sera utilisé pour l’installation, car Apache va être configuré pour fonctionner correctement à partir de ce chemin. Une multitude d’options sont aussi disponibles pour vos exigences.
Pour un aperçu des possibilités dont vous disposez, vous avez ici un exemple typique qui compile Apache pour un chemin d’installation /sw/pkg/apache avec un compilateur particulier, des flags, et les modules rewrite et speling en DSO (dynamic shared object).
$ CC="pgcc" CFLAGS="-O2" \
./configure --prefix=/sw/pkg/apache \
--enable-rewrite=shared \
--enable-speling=shared
Lancer configure va prendre quelques minutes pour tester la disponibilité des options sur votre système, et générer les Makefiles qui vont servir plus tard à compiler le server.
La façon la plus simple pour trouver tous les flags et options est de lancer ./configure –help. Ce qui suit est une brève description de la plus part des arguments et variables d’environnement.
Le processus autoconf utilise des variables d’environnement pour générer l’environnement de compilation. En général, ces variables changent la méthode pour compiler apache, mais ne changent rien dans les fonctionnalités du server. Ces variables peuvent être placées dans l’environnement avant d’appeler configure
, mais il est d’autant plus facile de les spécifier dans les lignes de commandes de configure
comme indiqué dans l’exemple ci-dessus.
CC=...
- Nom de la commande de compilation.
CPPFLAGS=...
- Options supplémentaires pour le compilateur C.
CFLAGS=...
- Options de debug et d’optimisation pour le compilateur C
LDFLAGS=...
- Options supplémentaires passées au linker.
LIBS=...
- Chemin des librairies pour le linker
INCLUDES=...
- Chemin du répertoire des includes ("-Idir").
TARGET=...
[Defaut: apache]
- Nom de l’exécutable qui va être généré.
NOTEST_CPPFLAGS=...
NOTEST_CFLAGS=...
NOTEST_LDFLAGS=...
NOTEST_LIBS=...
- Ces variables partagent les mêmes fonctions que leurs homologues en non-test. Cependant, les variables seront appliquées sur le processus de compilation seulement quand autoconf aura testé les fonctionnalités. Ce qui autorise l’inclusion de flags qui pourront causer des problèmes lors du test de fonctionnalités, mai qui devront être utilisées à la compilation finale.
SHLIB_PATH=...
- Chemin du répertoire contenant les librairies partagées pour le compilateur et le linker.
--help
- Affiche le message d’utilisation ainsi que toutes les options disponibles, mais ne configure rien.
--quiet
- Désactive les messages de test
--verbose
- Affiche plus d’information durant le processus de configuration, comme les noms de fichiers qui sont testés.
Il y a actuellement deux façons de configurer les répertoires dans lesquels Apache va installer ses fichiers. La première méthode est de spécifier les répertoires et laisser Apache s’installer tout seul dans les répertoires par défaut.
--prefix=PREFIX
[Défaut:
/usr/local/apache2]
- Spécifie le répertoire dans lequel les fichiers d’Apache vont être installés.
Il est possible de spécifier pour des fichiers dépendant de l’architecture, des emplacements différents.
--exec-prefix=EPREFIX
[Default:
PREFIX]
- Spécifie le répertoire dans lequel les fichiers dépendant de l’architecture seront placés.
La seconde méthode, plus souple, est d’utiliser le fichier config.layout
. En utilisant cette méthode, il est possible de spécifier séparément l’emplacement de chaque type de fichier avant l’installation d’Apache.Le fichier config.layout
contient quelques exemples de configurations, et vous explique comment créer votre propre configuration personnalisée en suivant les exemples. Les différentes dispositions dans le fichier sont groupées dans la section <Layout
FOO>...</Layout>
et sont reportés par nom dans FOO
.
--enable-layout=LAYOUT
- Utilise le layout renseigné dans le fichier
config.layout
pour spécifier les répertoires et chemins d’installation.
Actuellement, il est impossible de combiner les options --enable-layout
et --prefix
.
Il reste possible de spécifier individuellement les chemins détaillés dans la ligne de commande de configure
. Si vous voulez une installation de base, vous pouvez simplement et seulement utiliser l’option --prefix
.Si vous voulez personnaliser votre installation, vous devez éditer le fichier config.layout
et utiliser l’option --enable-layout
.
Apache est un serveur modulable, les fonctionnalités de base uniquement sont inclues dans le core du server. Les fonctionnalités étendues sont disponibles par le biais de modules. Durant le processus de configuration, vous pouvez selectionner les modules que vous désirer ajouter au server. Vous pouvez consulter la liste des modules inclue dans la documentation. Ces modules au statut de base, sont inclus par défaut dans le server et doivent être désactivés si vous ne les voulez pas. Les modules avec un autre statut doivent être activé si vous voulez les utiliser.
Il y a deux façon de compiler un module utilisé par Apache. Les modules peuvent être compilés en statique, ce qui signifie qu’ils seront inclus en permanence dans le binaire d’apache.
Sinon, si votre système supporte les Dynamic Shared objects (DSOs) et qu’autoconf détecte ce support, vous pouvez compiler dynamiquement. Les modules DSO sont stockés séparément du binaire Apache, et doivent être inclus ou exclus du server en utilisant les directives de configuration de fonctionnement du server disponibles avec mod_so
.
Le module mod_so est automatiquement inclus dans le server dès qu’un module dynamique est inclus lors de la compilation. Si vous voulez que votre serveur puisse utiliser des modules DSO sans le compiler avec un des modules disponibles, vous pouvez spécificer --enable-so
.
--enable-MODULE[=shared]
- Compile et inclus le module MODULE. L’identifiant MODULE est l’ identifiant module disponible dans la documentation sans la terminaison "_module". Pour compiler un module en DSO, ajouter l’option
=shared
.
--disable-MODULE
- Enlève le module MODULE qui sera sinon compilé et inclus.
--enable-modules=MODULE-LIST
- Compile et inclus les modules listé et séparés par des espaces MODULE-LIST.
-
--enable-mods-shared=MODULE-LIST
- Compile et inclus les modules listé et séparés par des espaces, MODULE-LIST comme des shared objects(DSO)
modules.
La MODULE-LIST dans les options
--enable-modules
et --enable-mods-shared
contient normalement une liste d’identifiants de modules séparés par des espaces. Par exemple, pour activer mod_dav et mod_info, vous pouvez utiliser
./configure --enable-dav --enable-info
ou autrement:
./configure --enable-modules="dav info"
De plus, l’identifiant all
ou
most
peut être utilisé pour activer tous ou la plus part des modules. Vous pouvez donc aussi de la même manière enlever les modules avec --disable-MODULE
option.
Par exemple, pour ajouter tous les modules en DSO sauf mod_info vous pouvez utiliser :
./configure --enable-mods-shared=all
--disable-info
En plus des modules standard, Apache 2.0 propose un choix de Modules Multi-Processing (MPMs). Un et un seul MPM peut être inclus dans le processus de compilation. Les MPM par défaut et par plateformes sont listés dans la MPM documentation page,
mais peuvent être modifiés avec la commande configure
.
--with-mpm=NAME
- Choisit le MPM NAME.
Quelques fonctionnalités d’Apache utilisent
mod_auth_dbm
et mod_rewrite
's
DBM RewriteMap
utilise des base de données de paires clefs/valeur pour des consultations rapides d’information. Apache inclus SDBM et son code source, pour que la base de donnée soit toujours disponible. Si vous voulez utiliser un autre type de base de données, les options suivantes de configure
sont disponibles:
--with-gdbm[=path]
--with-ndbm[=path]
--with-berkeley-db[=path]
- Si aucun path n’est spécifié, Apache ira chercher dans les fichiers include et librairies des emplacements par défaut.Un path explicite imposera à Apache d’aller chercher dans path
/lib
et le path/include
pour les fichiers concernés. Pour finir, le path peurt contenir des chemins d’include et de librairies séparés par des virgules.
Apache inclus un support de programme appelé suexec qui peut être utilisé pour isoler des CGIs. Cependant, si suexec n’est pas bien configuré, il peut causer de sérieux problèmes de sécurité. Vous devez donc lire attentivement la
documentation suexec avant d’implémenter cette fonctionnalité.
![top]()
Vous pouvez maintenant compiler les differentes parties qui composent le package Apache en lançant simplement la commande:
Un peu de patience ici, une configuration basique prend environ 3 minutes pour compiler sur un PIII/Linux 2.2, Mais peut varier sensiblement en fonction de votre matériel et du nombre de modules que vous avez activé.
Vous pouvez maintenant installer Apache dans l’emplacement spécifié lors de la configuration PREFIX (voir l’option --prefix
ci-dessus) en tappant:
Si vous upgradez, l’installation n’effacera pas vos fichier de configuration ou documents.
Vous pouvez maintenant démarrer votre server HTTPd Apache en tappant :
$ PREFIX/bin/apachectl start
et vous devriez pouvoir consulter votre premier document avec l’URL http://localhost/. La page Web que vous voyez est paramétrée avec la directive DocumentRoot
qui habituellement contient PREFIX/htdocs/
.
Et stopper le serveur en tappant:
$ PREFIX/bin/apachectl stop