Compilation et installation d’Apache HTTPD à partir du code source
La plupart des distributions Linux fournissent une version spécifique des paquets binaires Apache HTTPD à partir de leurs dépôts principaux. L’inconvénient est que cette version n’est souvent pas mise à jour avant la sortie majeure de la prochaine distribution.
Pour tirer parti des fonctionnalités disponibles uniquement à partir d’une version plus récente ou pour créer des binaires personnalisés, la compilation et l’installation d’Apache HTTPD à partir du code source sont simples.
Ce tutoriel décrit les étapes de compilation et d’installation d’Apache HTTPD sous des distributions Linux basées sur RPM (Fedora, CentOS, …) et Deb (Debian, Ubuntu, …). La dernière version disponible (2.4.x) est utilisé.
Code source Apache HTTPD
Le répertoire /usr/local/src/ est généralement utilisé pour les activités liées à la génération (nécessite des privilèges root). Il est utilisé dans ce tutoriel comme répertoire de construction.
Le code source d’Apache HTTPD est disponible sous forme de fichier tar à partir de : http://httpd.apache.org/download.cgi.
Voici les étapes pour télécharger et extraire le code source dans le répertoire de construction (les numéros de version peuvent être modifiés au besoin):
cd /usr/local/src/wget https://downloads.apache.org//httpd/httpd-2.4.43.tar.gztar -xzf httpd-2.4.43.tar.gzls -lcd httpd-2.4.43pwdls
Installation des dépendances de build
La compilation d’Apache HTTPD nécessite l’installation des outils de développement (compilateur C, éditeur de liens, …) et de quelques bibliothèques supplémentaires.
Les bibliothèques requises sont:
- apr
- apr-util
- openssl
- expat
- prce
La plupart des distributions Linux fournissent ces bibliothèques à partir des dépôts principaux. Si le système inclut une ancienne version d’une bibliothèque, son code source peut être téléchargé et compilé séparément. Une section ultérieure présente comment télécharger et construire le code source des bibliothèques apr et apr-util dans le cadre du processus de compilation Apache HTTPD.
Sur les distributions Linux basées sur RPM (Fedora, Centos, Cent), les paquets de développement de bibliothèques peuvent être installés à l’aide des commandes suivantes:
yum group install developmentyum install openssl-devel expat-devel pcre-devel apr-devel apr-util-devel
Sur les distributions Linux basées sur Deb (Debian, Ubuntu, Ubuntu), les paquets de développement de bibliothèques peuvent être installés à l’aide de la commande suivante:
apt install build-essential libssl-dev libexpat-dev libpcre2-dev libapr1-dev libaprutil1-dev
Options de configuration de build
Après le téléchargement du code source d’Apache HTTPD et l’installation des dépendances de build, les options de configuration de build peuvent être définies (options du compilateur, répertoire d’installation, activer/désactiver les modules, …).
Comme Apache HTTPD utilise le système de génération Autoconf, il fournit un script appelé configure pour définir les options de configuration de génération et générer les fichiers Makefile.
Sauf si des ajustements sont nécessaires, les valeurs par défaut peuvent être conservées. La valeur par défaut est de compiler la plupart des modules et de définir le répertoire d’installation sur /usr/local/apache2/.
Pour utiliser les valeurs par défaut, le script configure est appelé sans arguments:
cd /usr/local/src/httpd-2.4.43./configure
Pour lister toutes les options possibles, le script configure est appelé avec l’argument -help:
cd /usr/local/src/httpd-2.4.43./configure --help
Les sections suivantes présentent quelques options de configuration de build utiles.
Répertoire d’installation : – option de préfixe
Le répertoire d’installation est différent du répertoire de construction. C’est là que les fichiers binaires et les fichiers de configuration résultants seront placés une fois la compilation réussie et la commande make install exécutée (présentée dans la section installation).
L’option -prefix est utilisée pour sélectionner un chemin d’installation différent. Cette option est utile si nous devons créer et installer différentes versions d’Apache HTTPD.
L’exemple suivant présente comment définir le répertoire d’installation sur /opt/apache-2.4.43/:
cd /usr/local/src/httpd-2.4.43./configure --prefix=/opt/apache-2.4.43/
Comment activer/désactiver un module: –enable-MODULE /-disable-MODULE
La plupart des modules Apache HTTPD sont construits par défaut en tant que bibliothèques dynamiques. L’option -enable-MODULE peut être utilisée pour activer un module ou changer son type de construction de dynamique à statique. L’option -disable-MODULE est utilisée pour désactiver la construction d’un module. Le module est remplacé par le nom réel du module.
L’exemple suivant montre pour construire la réécriture du module en tant que bibliothèque statique:
cd /usr/local/src/httpd-2.4.43./configure --enable-rewrite=static
Options du compilateur
Si nécessaire, les options du compilateur sont transmises au script de configuration en tant que variables d’environnement.
Les variables sont résumées dans le tableau suivant:
CC | Utilisé pour sélectionner la commande du compilateur C. La valeur par défaut est cc (le compilateur GNU) mais clang est également une option |
CFLAGS | Utilisé pour passer les drapeaux du compilateur C |
LDFLAGS | Utilisé pour passer des indicateurs d’éditeur de liens |
LIBS | Utilisé pour transmettre des bibliothèques à l’éditeur de liens |
CPPFLAGS | Utilisé pour passer des indicateurs de préprocesseur C/C++ (Objectif) |
CPP | Utilisé pour passer les paramètres du préprocesseur C |
L’exemple suivant présente comment passer un indicateur d’optimisation au compilateur C:
cd /usr/local/src/httpd-2.4.43export CFLAGS=-o2./configure
Compilation et installation
Après l’exécution du script configure pour définir les options de configuration de build et générer les fichiers Makefile, le processus de compilation est démarré avec la commande make.
L’exemple suivant présente comment démarrer le processus de compilation:
cd /usr/local/src/httpd-2.4.43./configuremake
Une fois la compilation réussie, l’installation dans le répertoire d’installation peut être démarrée avec la commande suivante:
make install
L’installation place tous les fichiers binaires et de configuration nécessaires dans le répertoire d’installation /usr/local/apache2. Les fichiers exécutables sont placés dans /usr/local/apache2/bin/. Les fichiers de configuration sont placés dans /usr/local/apache2/conf/.
Comment lister les modules compilés
Les modules compilés peuvent être listés à l’aide de la commande suivante:
/usr/local/apache2/bin/httpd -M
Démarrer et arrêter le service
La nouvelle version d’Apache HTTPD peut être démarrée à l’aide de la commande /usr/local/apache2/bin/apachectl.
Pour démarrer le service:
/usr/local/apache2/bin/apachectl start
Pour arrêter le service:
/usr/local/apache2/bin/apachectl stop
Construire apr et apr-util à partir du code source
Les bibliothèques requises pour la compilation d’Apache HTTPD peuvent être installées à partir des référentiels principaux de la distribution Linux, mais dans certaines situations, Apache HTTPD nécessite une version plus récente d’une bibliothèque qui n’est pas disponible à partir de ces référentiels. Dans ce cas, le code source de la bibliothèque peut également être téléchargé et compilé avec Apache HTTPD.
Les bibliothèques apr et apr-util sont deux des bibliothèques principales sur lesquelles Apache HTTPD s’appuie pour son travail interne afin d’assurer la portabilité sur de nombreux systèmes d’exploitation.
Le code source d’Apache HTTPD comprend un sous-répertoire appelé srclib. Il est utilisé pour contenir les bibliothèques qui peuvent être construites et utilisées par le serveur au lieu d’utiliser les bibliothèques système.
Pour intégrer le code source des bibliothèques apr et apr-util dans le processus de compilation d’Apache HTTPD, leur code source est téléchargé et extrait dans le sous-répertoire srclib.
L’exemple suivant présente comment télécharger et extraire le code source des deux bibliothèques apr et apr-util. Lorsque le fichier tar est extrait, le numéro de version doit être supprimé.Ils sont disponibles en téléchargement sur le site officiel: https://apr.apache.org/download.cgi.
cd /usr/local/src/httpd-2.4.43/srclib/wget https://downloads.apache.org/apr/apr-1.7.0.tar.gztar -xzf apr-1.7.0.tar.gzmv apr-1.7.0 aprlswget https://downloads.apache.org/apr/apr-util-1.6.1.tar.gztar -xzf apr-util-1.6.1.tar.gzmv apr-util-1.6.1 apr-utillscd /usr/local/src/httpd-2.4.43./configuremakemake install
Comment mettre à niveau à partir de la version 2.x à 2.y
La mise à jour d’un HTTPD Apache installé à partir du code source est possible. La pratique recommandée consiste à utiliser un répertoire d’installation distinct pour chaque version et à copier le sous-répertoire de configuration de l’ancienne version vers le nouveau répertoire.
L’exemple suivant présente comment mettre à jour une version 2.4.0 déjà installée dans /usr/local/apache-2.4.0, vers une version 2.4.43 plus récente qui sera installée dans /usr/local/apache-2.4.43.
Pour télécharger, compiler et installer la nouvelle version:
cd /usr/local/src/wget https://downloads.apache.org//httpd/httpd-2.4.43.tar.gztar -xzf httpd-2.4.43.tar.gzcd httpd-2.4.43./configure --prefix=/usr/local/apache-2.4.43makemake install
Arrêter le service de l’ancienne version:
/usr/local/apache-2.4.0/bin/apachectl stop
Copiez le répertoire de configuration du répertoire de l’ancienne version vers celui de la nouvelle version:
rm -rf /usr/local/apache-2.4.43/conf/cp -rp /usr/local/apache-2.4.0/conf/ /usr/local/apache-2.4.43/
Démarrez le service à partir de la nouvelle version :
/usr/local/apache-2.4.43/bin/apachectl start