Gentoo Logo

Guide de mise à jour d'Apache

Table des matières :

1.  Mise à jour depuis la version <2.2.6-r4

Les ebuilds Apache ont pendant très longtemps utilisé /etc/apache2/apache2-builtin-mods pour sélectionner les modules intégrés lors la compilation. Cependant, ce comportement a plusieurs désavantages :

  • Il est impossible de sélectionner les modules intégrés lors de l'emerge initial.
  • Portage ne sait pas quels modules ont été installés. Ceci est particulièrement gênant pour les paquets binaires.
  • Portage essaiera d'écraser apache2-builtin-mods à chaque mise à jour.

Afin de rectifier cette situation, /etc/apache2/apache2-builtin-mods est devenu désuet et a été remplacé par la nouvelle variable USE_EXPAND APACHE2_MODULES. Pour convertir votre sélection de modules au nouveau format, utilisez la commande suivante :

Exemple de code 1.1 : Convertir apache2-builtin-mods en APACHE2_MODULES

$ echo APACHE2_MODULES=\"$(sed '/^mod_/s/mod_\(.*\)\s\+\(shared\|static\)/\1/;t n;d;:n' /etc/apache2/apache2-builtin-mods)\" >> /etc/make.conf
# rm /etc/apache2/apache2-builtin-mods

(Vous pouvez maintenant mettre à jour Apache en toute sécurité :)
# emerge -uva '>=www-servers/apache-2.2.6-r4'

En plus de la nouvelle variable APACHE2_MODULES, les options USE locales ont été nettoyées :

  • Toutes les options USE MPM ont été déplacées dans la variable USE_EXPAND APACHE2_MPMS
  • no-suexec est maintenant suexec
  • static-modules est maintenant static

Pour une description détaillée des anciennes et nouvelles options USE correspondantes, lisez plus bas.

2.  Mise à jour depuis la version <2.0.52-r3

Introduction

La situation d'Apache et de ses modules dans Gentoo devenait vraiment insupportable. De nombreux problèmes ont rendu le support et la maintenance très difficiles pour l'équipe responsable d'Apache :

  • La configuration par défaut venant avec Gentoo était vraiment trop différente de la configuration par défaut usuelle à laquelle la plupart des utilisateurs s'attendent.
  • De nombreux modules utilisaient du code similaire, mais tous faisaient les choses à leur manière.
  • La plupart des modules n'étaient pas maintenus correctement - principalement à cause du grand nombre de modules disponibles.
  • Les modules n'avaient pas de standard de configuration.
  • Certains modules fonctionnaient avec les deux versions d'Apache, mais les ebuilds ne savaient pas le gérer.
  • Des options disponibles d'Apache ne l'étaient pas pour les utilisateurs de Gentoo (par exemple les MPM).
  • Les bogues pour Apache s'accumulaient.

Ce document détaille comment effectuer la mise à jour sans casser votre système. Si vous êtes développeur ou voulez savoir ce que nous avons changé ou comment les ebuilds doivent être modifiés pour tirer parti de notre eclass, alors jetez un œil à la Documentation Apache pour les développeurs.

Instructions pour la mise à jour

Il y a eu de nombreux changements dans la manière de fonctionner d'Apache au sein de Gentoo. Chaque paquet qui est directement relié à Apache doit être mis à jour et certaines choses qui fonctionnaient avant ne fonctionneront plus.

D'abord, vous devez déterminer quels paquets vous devez mettre à jour. Vous pouvez faire cela en utilisant l'outil equery, appartenant au paquet app-portage/gentoolkit.

Exemple de code 2.1 : Trouver les paquets à mettre à jour

$ equery depends www-servers/apache
[ Searching for packages depending on www-servers/apache... ]
dev-db/phpmyadmin-2.5.6
dev-php/mod_php-4.3.10
dev-php/phpsysinfo-2.1-r2
net-www/mod_bandwidth-2.0.5
net-www/mod_layout-4.0.1a
net-www/mod_mp3-0.40
net-www/mod_random-2.0
net-www/mod_throttle-3.1.2-r1
www-apache/mod_ldap_userdir-1.1.4
www-apache/mod_loopback-1.04
www-apache/mod_watch-3.18
www-apps/viewcvs-0.9.2_p20030430

Important : Les paquets que vous avez installés peuvent être bien différents de cette liste, donc assurez-vous de bien lancer cette commande sur votre système.

Attention : Certains modules et paquets dépendent d'Apache et n'ont pas encore été mis à jour. Veuillez faire une recherche sur bugzilla pour chaque paquet important que vous utilisez avec Apache.

De nombreuses applications web ne sont pas concernées du fait qu'elles utilisent l'eclass webapp qui s'occupe de les installer correctement. Il est conseillé de vérifier l'existence d'une nouvelle révision.

Comme nous avons ajouté de nouvelles options à la variable USE, il peut être intéressant d'y jeter un œil et d'ajouter ce qui est nécessaire au fichier /etc/portage/package.use. Consultez les options USE d'Apache pour plus d'informations.

Exemple de code 2.2 : Vérifier les options USE et recompiler

(Contrôler les options USE et les mises à jour nécessaires)
# emerge --pretend --verbose --update --newuse --deep apache subversion \
mod_php mod_bandwidth mod_layout mod_ldap_userdir mod_loopback mod_mp3 \
mod_random mod_throttle mod_watch

(Mettre les paquets à jour)
# emerge --verbose --update --newuse --deep apache subversion mod_php \
mod_bandwidth mod_layout mod_ldap_userdir mod_loopback mod_mp3 mod_random \
mod_throttle mod_watch

(Il peut être plus simple de mettre world à jour
plutôt que de faire comme ci-dessus)
# emerge --ask --verbose --update --newuse --deep world

Maintenant, il faut reconfigurer Apache et ses modules. Commencez par utiliser etc-update ou dispatch-conf pour mettre à jour les fichiers de /etc/init.d et /etc/conf.d. Vous remarquerez que les fichiers de configuration d'Apache ne s'affichent pas lors de la mise à jour, car ils ont été déplacés.

Si vous avez apporté des modifications aux anciens apache.conf et commonapache.conf par défaut, il vous faudra les transposer au fichier /etc/apache{|2}/httpd.conf. Les fichiers de configuration des modules et des hôtes virtuels ont aussi été déplacés : ils se trouvent maintenant respectivement dans /etc/apache2/modules.d et /etc/apache2/vhosts.d .

Une fois le transfert de vos modifications vers les nouveaux fichiers de configuration effectué, il vous faudra effacer les anciens fichiers (ou bien les déplacer dans un endroit sûr). Le nouveau script /etc/init.d/apache{|2} vérifie l'existence de ces fichiers et ne vous laisse pas lancer Apache tant qu'ils n'ont pas été enlevés pour signifier que vous avez reconfiguré Apache à l'aide des nouveaux fichiers.

Note : De nombreux modules qui étaient activés par défaut ne le sont plus. Si ce sont des modules internes à Apache, alors décommentez la ligne appropriée dans httpd.conf. Si ce sont des modules externes, recherchez dans le fichier .conf du module la balise IfDefine et ajoutez le nom au fichier /etc/conf.d/apache{|2} pour l'activer.

Vous pouvez maintenant relancer Apache.

Exemple de code 2.3 : Redémarrer Apache

# /etc/init.d/apache stop
# /etc/init.d/apache start

Si vous rencontrez des problèmes, jetez un œil au Apache Troubleshooting Guide et si ça ne résoud pas votre problème, veuillez le rapporter sur le Bugzilla Gentoo. Veuillez préciser les modules activés et, si vous utilisez Apache 2, les options USE MPM que vous avez utilisées lors de la compilation. Vous pouvez aussi vous connecter à #gentoo-apache sur irc.freenode.net pour plus d'assistance.

3.  Options de la variable USE affectant Apache <2.2.6-r4

Des options de la variable USE sont particulières à Apache et ses modules. Apache supporte aussi plusieurs options plus génériques telles que ssl, mais leur effet sur Apache n'est guère différent de celui qu'elles ont sur les autres paquets, elles ne sont donc pas énumérées ici. Lancez emerge --verbose --pretend apache pour voir une liste complète des options supportées.

Option USE Description
apache2 Doit toujours être activée si on utilise Apache 2, et être désactivée dans le cas de l'utilisation d'Apache 1.3. L'eclass s'en sert pour déterminer de quelle version d'Apache on doit dépendre.
debug Active un crochet qui autorise des modules externes à se greffer et faire quelque chose après qu'un processus fils ait planté. Il existe déjà deux modules, mod_whatkilledus and mod_backtrace qui utilisent ce crochet.
doc Installe le manuel Apache et sa configuration.
ldap Installe mod_ldap et mod_auth_ldap/mod_authnz_ldap.
ssl Installe mod_ssl.
mpm-itk Compile le MPM itk.
mpm-leader Compile le MPM leader.
mpm-peruser Compile le MPM peruser.
mpm-prefork Compile le MPM prefork.
mpm-threadpool Compile le MPM threadpool.
mpm-worker Compile le MPM worker.
static-modules Lie statiquement les modules au binaire d'Apache, de manière à ce que LoadModule ne soit pas nécessaire pour charger les modules de base d'Apache.

Note : Bien qu'il y ait beaucoup d'options USE mpm-*, elles sont mutuellement exclusives. Il ne faut donc en activer qu'une seule. (Si aucune n'est activée, mpm-prefork ou mpm-worker sera utilisée, selon que l'option USE threads soit activée ou non).

4.  Options USE affectant Apache 2.2.6-r4 et supérieur

Avec l'arrivée de la variable APACHE2_MODULES, un nettoyage général des options USE fut nécessaire. Le tableau suivant liste les options USE actuellement supportées pour apache-2.2.6-r4 et supérieurs, ainsi que leurs équivalents dans les versions précédentes.

Option USE Ancienne option USE Description
debug debug Active un crochet qui autorise des modules externes à se greffer et faire quelque chose après qu'un fils ait planté. Il existe déjà deux modules, mod_whatkilledus et mod_backtrace, qui utilisent ce crochet.
doc doc Installe le manuel Apache et sa configuration.
ldap ldap Installe mod_ldap et mod_authnz_ldap.
ssl ssl Installe mod_ssl.
static static-modules Lie statiquement les modules au binaire d'Apache, de manière à ce que LoadModule ne soit pas nécessaire pour charger les modules de base d'Apache.
suexec no-suexec Installe mod_suexec et le binaire d'aide suexec.
threads threads Sélectionne le MPM par défaut si aucun n'a été défini dans APACHE2_MPMS.

Le tableau suivant liste les options de la variable APACHE2_MPMS actuellement supportées pour apache-2.2.6-r4 et leur précédente option USE locale correspondante.

Option Ancienne option USE Description
event mpm-event Une variante expérimentale du MPM standard worker.
itk mpm-itk Autorise le lancement de chaque hôte virtuel sous un uid et un gid séparés.
peruser mpm-peruser Peruser est une implémentation fonctionnelle du MPM perchild autorisant le lancement de chaque processus fils Apache avec son propre utilisateur et groupe, chacun gérant son propre ensemble d'hôtes virtuels.
prefork mpm-prefork Implémente un serveur web non multitâche, avec séparation préalable du processus.
worker mpm-worker MPM implémentant un serveur web hybride multitâche et multiprocessus.

Le tableau suivant liste les options de la variable APACHE2_MODULES actuellement supportés pour apache-2.2.6-r4.

Option Description
actions Permet l'exécution de scripts CGI en fonction de leur type de média ou de la méthode de requête.
alias Permet de rendre accessible certaines parties du système de fichiers de l'hôte dans l'arbre de documents, et de rediriger les URL
asis Envoie des fichiers contenant leurs propres entêtes HTTP
auth_basic Authentification simple
auth_digest Authentification d'utilisateurs utilisant une authentification par hachage MD5
authn_alias Fournit la possibilité de créer une authentification étendue basée sur les fournisseurs d'authentification présents
authn_anon Autorise l'accés utilisateur anonyme à des zones authentifiées
authn_dbd Authentification utilisateur utilisant une base de données SQL
authn_dbm Authentification utilisateur utilisant des fichiers DBM
authn_default Module de rétrogradage d'authentification
authn_file Authentification utilisateur utilisant des fichiers texte
authz_dbm Autorisation de groupe utilisant des fichiers DBM
authz_default Module de rétrogradage d'autorisation
authz_groupfile Autorisation de groupe utilisant des fichiers texte
authz_host Autorisation de groupe basée sur l'hôte (nom ou adresse IP)
authz_owner Autorisation basée sur le propriétaire des fichiers
authz_user Autorisation d'utilisateur
autoindex Génère automatiquement les index de répertoire, de façon similaire à la commande Unix ls
cache Mise en cache du contenu associé aux URIs
cern_meta Sémantique des métafichiers httpd du CERN
charset_lite Spécifie le jeu de caractères de traduction ou recodage
dav Fonctionnalité de gestion distribuée de publication et de contrôle de version (WebDAV, Web-based Distributed Authoring and Versioning)
dav_fs Fournit un système de fichiers pour mod_dav
dav_lock Module générique de verrouillage pour mod_dav
dbd Gestion des connexions aux bases de données SQL
deflate Compresse le contenu avant son envoi au client
dir Fournit la redirection de « slash final » et le service des fichiers d'index de répertoire
disk_cache Stockage du cache du contenu associé aux URIs
dumpio Transfert toutes les E/S vers le log d'erreur de la façon désirée
env Modifie l'environnement transmis aux scripts CGI et aux pages SSI
expires Génération des entêtes HTTP Expires et Cache-Control selon les critères spécifiés par l'utilisateur
ext_filter Passe le corps de la réponse à travers un programme externe avant son envoi au client
file_cache Mise en cache mémoire d'une liste statique de fichiers
filter Module de configuration pour le filtre intelligent sensible au contexte
headers Customisation des requêtes HTTP et des entêtes des réponses
ident Vérification ident selon la RFC 1413
imagemap Calcul des imagemap côté serveur
include Documents HTML parcourus par le serveur (Server Side Includes)
info Fournit une vue complète de la configuration du serveur
log_config Log des requêtes faîtes sur le serveur
log_forensic Log forensique des requêtes faîtes sur le serveur
logio Log du nombre d'octets en entrée et sortie pour chaque requête
mem_cache Mise en cache du contenu associé aux URIs
mime Associe les extensions des fichiers demandés avec le comportement du fichier (gestion et filtres) et son contenu (type MIME, langue, jeu de caractères et encodage)
mime_magic Ddétermine le type MIME d'un fichier en regardant quelques octets de son contenu
negotiation Fournit la négociation de contenu
proxy Serveur proxy/passerelle HTTP/1.1
proxy_ajp Module de support AJP pour mod_proxy
proxy_balancer Extension de mod_proxy pour la répartition de charge
proxy_connect Extension de mod_proxy pour la prise en charge des requêtes CONNECT
proxy_ftp Module de support FTP pour mod_proxy
proxy_http Module de support HTTP pour mod_proxy
rewrite Fournit un mécanisme de réécriture basé sur des règles pour réécrire les URLs à la volée
setenvif Autorise la définition de variables d'environnement basée sur les caractéristiques de la requête
speling Tente de corriger les erreurs des URLs que les utilisateurs auraient entré en ignorant la capitalisation et en autorisant au plus une faute
status Fournit des informations à propos de l'activité et des performances du serveur
unique_id Fournit une variable d'environnement avec un identifiant unique pour chaque requête
userdir Répertoires spécifiques aux utilisateurs
usertrack Log de l'activité des utilisateurs sur un site
version Configuration dépendante de la version
vhost_alias Fournit le support pour la configuration dynamique de l'hébergement virtuel de masse


Imprimer

Dernière mise à jour le 11 décembre 2007

Résumé : Ce document décrit la procédure à suivre par les utilisateurs pour mettre à jour sans risque leur installation Apache.

Michael Stewart
Auteur

Benedikt Boehm
Correcteur

Joshua Saddler
Correcteur

Bertrand Coppa
Traducteur

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.