Compilation

De Wiki de Jordan LE NUFF
Sauter à la navigation Sauter à la recherche
Ligne 13 : Ligne 13 :
  
 
{{terminal|text=
 
{{terminal|text=
[root@centos8temp downloads]# wget http://apache.crihan.fr/dist//httpd/httpd-2.4.41.tar.gz
+
[root@myserver downloads]# wget http://apache.crihan.fr/dist//httpd/httpd-2.4.41.tar.gz
 
--2020-01-25 15:55:58--  http://apache.crihan.fr/dist//httpd/httpd-2.4.41.tar.gz
 
--2020-01-25 15:55:58--  http://apache.crihan.fr/dist//httpd/httpd-2.4.41.tar.gz
 
Résolution de apache.crihan.fr (apache.crihan.fr)… 195.221.21.36, 2001:660:7401:211::36
 
Résolution de apache.crihan.fr (apache.crihan.fr)… 195.221.21.36, 2001:660:7401:211::36

Version du 14 mai 2020 à 09:38

Présentation

Cette page a pour objet de décrire comment compiler le serveur web Apache.

Plus d'informations sur le site de l'éditeur :

Téléchargement des sources

Se rendre sur la page de téléchargement d'Apache et aller à la section de téléchargement de la "Stable Release - Latest Version". Copier le lien de téléchargement de la version en cours (2.4.41 à la rédaction de ce document).

Se connecter au serveur, se rendre dans le dossier de téléchargement et télécharger les sources Apache :

wget http://apache.crihan.fr/dist//httpd/httpd-2.4.41.tar.gz
Putty icon.png Console SSH

Décompression de l'archive

Décompresser l'archive dans le dossier cible de compilation :

tar -zxvf httpd-2.4.41.tar.gz -C /local/builds/

Compilation

Options de compilation disponibles

Se rendre dans le dossier de compilation et taper la commande suivante pour afficher les options de compilation disponibles :

./configure --help
Putty icon.png Console SSH

Configuration de la compilation

La commande ./configure lance la configuration de la compilation avec certaines options par défaut. Les valeurs par défaut de certaines de ces options sont indiquées dans la section --help de la commande.

Configuration par défaut

Pour lancer la configuration de la compilation avec les options par défaut, il faut simplement lancer la commande suivante :

./configure

Cette configuration de compilation simple, sans ajout d'option, fournit les modules suivants :

Putty icon.png Console SSH

On peut constater que les modules suivants sont "statiques", c'est-à-dire qu'ils sont intégrés dans le binaire httpd et seront, par conséquent, toujours chargés au démarrage d'Apache :

  • core_module
  • so_module
    • Module permettant de charger dynamiquement des modules non-statiques (partagés). Les modules partagés, à l'inverse de modules statiques, ne nécessitent pas de recompilation et peuvent être chargés lorsqu'Apache est en cours d'exécution. Les performances d'Apache sont meilleures avec des modules statiques qu'avec des modules partagés.
  • http_module
    • Comme indiqué dans l'option --help de la commande ./configure :
"Le module http est un module de base qui permet au serveur de fonctionner comme un serveur HTTP. Il n'est utile de le désactiver que si vous souhaitez utiliser un autre module de protocole à la place. Ne désactivez ce module que si vous êtes vraiment sûr de ce que vous faites. Remarque: Ce module sera toujours lié statiquement."
  • mpm_event_module
    • Selon la documentation Apache, les Modules Multi-Processus, ou MPMs, constituent le coeur du serveur. Un seul MPM doit être actif pour que le serveur puisse fonctionner. Le MPM par défaut dépend du système d'exploitation. Pour savoir quel type de MPM est utilisé par défaut, se référer à la documentation Apache sur les MPMs.

Configuration minimaliste

A des fins de tests uniquement, il est possible de configurer la compilation pour qu'il n'y ait que les modules statiques obligatoires de présents. Pour ce faire, il faut désactiver tous les modules activés par défaut avec la commande suivante :

./configure \
--disable-access_compat \
--disable-alias \
--disable-auth_basic \
--disable-authn_core \
--disable-authn_file \
--disable-authz_core \
--disable-authz_groupfile \
--disable-authz_host \
--disable-authz_user \
--disable-autoindex \
--disable-dir \
--disable-env \
--disable-filter \
--disable-headers \
--disable-log_config \
--disable-mime \
--disable-reqtimeout \
--disable-setenvif \
--disable-status \
--disable-unixd \
--disable-version

Cela aura pour effet, à la fin de la compilation, de ne disposer que des modules suivants :

Putty icon.png Console SSH

Configuration personnalisée

C'est ici tout l'intérêt de compiler soi-même Apache (ou tout autre programme) : pouvoir construire un binaire Apache optimisé à son besoin.

Voici un exemple de configuration personnalisée de compilation :

./configure --prefix=/local/httpd/current \
--enable-ssl \
--enable-ssl-staticlib-deps \
--enable-socache-shmcb \
--enable-proxy \
--enable-proxy-http \
--enable-proxy-wstunnel \
--enable-proxy-fcgi \
--disable-proxy-connect \
--disable-proxy-ftp \
--disable-proxy-scgi \
--disable-proxy-uwsgi \
--disable-proxy-fdpass \
--disable-proxy-ajp \
--disable-proxy-balancer \
--disable-proxy-express \
--disable-proxy-hcheck \
--enable-rewrite \
--enable-mods-static="ssl socache-shmcb proxy rewrite authz_core log_config alias dir unixd" \
--enable-static-rotatelogs \
--disable-access_compat \
--disable-auth_basic \
--disable-authn_core \
--disable-authn_file \
--disable-authz_groupfile \
--disable-authz_host \
--disable-authz_user \
--disable-autoindex \
--disable-env \
--disable-filter \
--disable-headers \
--disable-mime \
--disable-reqtimeout \
--disable-setenvif \
--disable-status \
--disable-version