Introduction
Apache est l’un des serveurs web les plus populaires sur Internet. Il est utilisé pour servir plus de la moitié de tous les sites web actifs. Bien qu’il existe de nombreux serveurs web viables qui peuvent servir votre contenu, il est utile de comprendre comment fonctionne Apache en raison de son omniprésence.
Cet article examinera certains fichiers de configuration généraux et les options qui peuvent être contrôlées à l’intérieur. Cet article suivra la structure des fichiers Apache sur Ubuntu/Debian, qui est différente de celle des autres distributions pour la construction de la hiérarchie de configuration.
Prérequis
Si vous utilisez Ubuntu version 16.04 ou inférieure, nous vous recommandons de passer à une version plus récente car Ubuntu ne fournit plus de support pour ces versions. Cette collection de guides vous aidera à mettre à niveau votre version d’Ubuntu.
-
Un serveur exécutant Ubuntu, ainsi qu’un utilisateur non root avec des
sudo
privilèges et un pare-feu actif. Pour des instructions sur la façon de les configurer, veuillez choisir votre distribution dans cette liste et suivre notre guide de configuration initiale du serveur. -
Avant de commencer à explorer vos configurations Apache, vous devez avoir Apache installé sur votre serveur. Vous pouvez apprendre comment faire en suivant notre tutoriel « Comment installer le serveur web Apache sur Ubuntu » 22.04 / 20.04 / 18.04 ou le tutoriel Comment installer le serveur web Apache sur Debian 10.
5 Étapes pour Configurer le Serveur Web Apache sur Ubuntu
- La Hiérarchie des Fichiers Apache
- Exploration du Fichier Apache2.conf
- Configurer les Configurations Globales d’Apache
- Configuration du Fichier Hôte Virtuel Apache
- Activer les Sites et les Modules
Étape 1: La Hiérarchie des Fichiers Apache
Apache conserve ses fichiers de configuration principaux dans le dossier /etc/apache2
. L’exécution de la commande suivante listera tous les fichiers présents dans ce dossier :
Outputenvars sites-available . apache2.conf .. sites-enabled mods-available ports.conf magic mods-enabled conf-enabled conf-available
Il y a plusieurs fichiers en texte brut et quelques sous-répertoires dans ce répertoire. Voici quelques emplacements utiles à connaître :
apache2.conf
: Il s’agit du fichier de configuration principal du serveur. Presque toutes les configurations peuvent être effectuées à partir de ce fichier, bien qu’il soit recommandé d’utiliser des fichiers séparés et désignés pour plus de simplicité. Ce fichier configurera les valeurs par défaut et sera le point central d’accès pour que le serveur lise les détails de configuration.ports.conf
: Ce fichier est utilisé pour spécifier les ports sur lesquels les hôtes virtuels doivent écouter. Assurez-vous de vérifier que ce fichier est correct si vous configurez SSL.sites-available/
etsites-enabled/
: Le répertoiresites-available
contient des configurations de fichiers d’hôte virtuel. Les configurations dans ce dossier établiront quel contenu est servi pour quelles requêtes. Cela est activé en liant vers le répertoiresites-enabled
, qui stocke les fichiers de configuration d’hôte virtuel activés. Lorsque Apache démarre ou recharge, il lit les fichiers de configuration et les liens à partir du répertoiresites-enabled
lorsqu’il compile une configuration complète.conf-available/
etconf-enabled/
: Ces répertoires contiennent des fragments de configuration qui ne sont pas attachés aux fichiers de configuration d’hôte virtuel.mods-enabled/
etmods-available/
: Ces répertoires définissent les modules qui peuvent être chargés en option. Les répertoires contiennent deux composants : des fichiers se terminant par.load
, qui contiennent des fragments chargent des modules particuliers, et des fichiers se terminant par.conf
, qui stockent les configurations de ces modules.
La configuration d’Apache ne se fait pas dans un seul fichier monolithique, mais plutôt à travers une conception modulaire où de nouveaux fichiers peuvent être ajoutés et modifiés au besoin.
Étape 2 : Exploration du fichier Apache2.conf
Les détails de configuration principaux pour votre serveur Apache sont détenus dans le fichier /etc/apache2/apache2.conf
.
Ce fichier est divisé en trois sections principales :
- Configuration pour le processus global du serveur Apache
- Configuration pour le serveur par défaut
- Configuration des hôtes virtuels.
Ouvrez ce fichier avec votre éditeur de texte préféré. L’exemple suivant utilise nano
:
Sous Ubuntu et Debian, ce fichier est utilisé pour configurer les définitions globales. La configuration du serveur par défaut et des hôtes virtuels est gérée en utilisant la directive Include
.
La directive Include
permet à Apache de lire d’autres fichiers de configuration dans le fichier actuel à l’emplacement où l’instruction apparaît. Le résultat est qu’Apache génère dynamiquement un fichier de configuration global au démarrage.
À l’intérieur de ce fichier se trouvent plusieurs instructions Include
et IncludeOptional
. Ces directives chargent les définitions de modules, le document ports.conf
, les fichiers de configuration spécifiques dans le répertoire conf-enabled/
, et les définitions de virtual hosts dans le répertoire sites-enabled/
:
…
IncludeOptional mods-enabled/*.load
IncludeOptional mods-enabled/*.conf
…
Include ports.conf
…
IncludeOptional conf-enabled/*.conf
…
IncludeOptional sites-enabled/*.conf
Étape 3 : Configuration des configurations globales d’Apache
Il existe quelques options que vous voudrez peut-être modifier dans la Configuration Globale :
Délai d’attente (Timeout)
Par défaut, ce paramètre est défini sur 300
. Cela signifie que le serveur a un maximum de 300 secondes pour répondre à chaque requête.
Ce paramètre peut être réduit en toute sécurité à quelque chose entre 30
et 60
secondes.
KeepAlive
Cette option, si elle est définie sur On
, permettra à chaque connexion de rester ouverte pour gérer plusieurs demandes du même client.
Si elle est définie sur Off
, chaque demande devra établir une nouvelle connexion, ce qui peut entraîner des frais généraux importants en fonction de votre configuration et de la situation du trafic.
MaxKeepAliveRequests
Cela contrôle le nombre de demandes distinctes que chaque connexion gérera avant de mourir. Garder ce nombre élevé permet à Apache de servir le contenu à chaque client de manière plus efficace.
Le paramètre par défaut est défini sur 100
. Définir cette valeur sur 0
permettra à Apache de servir un nombre illimité de demandes pour chaque connexion.
KeepAliveTimeout
Ce paramètre spécifie combien de temps attendre la prochaine demande après avoir terminé la dernière. Si le seuil de temps d’attente est atteint, alors la connexion se terminera.
Cela signifie que la prochaine fois que le contenu est demandé, le serveur établira une nouvelle connexion pour gérer la demande du contenu qui compose la page que le client visite. La valeur par défaut est définie sur 5
.
Après avoir examiné le contenu de ce fichier de configuration, vous pouvez le fermer en appuyant sur CTRL+X
.
Modules de traitement multi-processus
A Multi-Processing Module (MPM) extends Apache’s modular design. MPMs are responsible for listening, directing, and handling different network requests. You can cross-reference which section your Apache installation was compiled in with using the following command:
OutputCompiled in modules:
core.c
mod_so.c
mod_watchdog.c
http_core.c
mod_log_config.c
mod_logio.c
mod_version.c
mod_unixd.c
Vous pouvez vérifier le type de MPM sur votre serveur avec la commande a2query -M
:
Outputevent
La sortie révèle que le MPM event
est utilisé sur ce serveur. Votre installation peut en avoir plusieurs parmi lesquels choisir, mais un seul peut être sélectionné.
Étape 4 : Mettre à jour le fichier hôte virtuel Apache
La déclaration d’hôte virtuel par défaut se trouve dans un fichier appelé 000-default.conf
dans le répertoire sites-available/
. Vous pouvez vous familiariser avec le format général d’un fichier d’hôte virtuel en examinant ce fichier.
Ouvrez le fichier avec la commande suivante :
<VirtualHost *:80>
…
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
…
ErrorLog ${APACHE LOG DIR}/error.log
CustomLog ${APACHE LOG DIR}/access.log combined
…
L’hôte virtuel par défaut est configuré pour gérer toute demande sur le port 80
, le port HTTP standard. Cela est défini dans l’en-tête de déclaration où il est indiqué *:80
, ce qui signifie le port 80
sur n’importe quelle interface.
Cependant, cela ne signifie pas qu’il gérera nécessairement chaque demande vers le serveur sur ce port. Apache utilise la définition d’hôte virtuel la plus spécifique qui correspond à la demande. S’il y avait une définition plus spécifique, elle pourrait supplanter cette définition. Après avoir examiné le fichier, vous pouvez le fermer en appuyant sur CTRL+X
.
Configuration du Virtual Host Apache
Les options suivantes sont définies dans la définition du virtual host en dehors de toute autre sous-déclaration de niveau inférieur. Elles s’appliquent à l’ensemble du virtual host.
Pour commencer, ouvrez le fichier security.conf
dans le répertoire conf-available/
:
Ce fichier contient la directive Server Signature
, qui vous permet de spécifier une adresse e-mail de contact à utiliser en cas de problèmes serveur. Vous pouvez changer l’option par défaut de On
à EMail
pour révéler l’adresse e-mail de l’administrateur du serveur. Assurez-vous d’être prêt à recevoir le courrier si vous ajustez ce paramètre:
…
ServerSignature EMail
…
Quittez le fichier en appuyant sur CTRL+X
. Après avoir modifié un fichier de configuration, une invite vous demandera de confirmer vos modifications. Appuyez sur Y
pour enregistrer les modifications apportées à votre fichier ou appuyez sur N
pour les annuler.
Dans votre fichier de virtual host, vous pouvez ajouter une directive ServerName
qui spécifie le nom de domaine ou l’adresse IP que cette demande doit gérer. C’est l’option qui ajouterait de la spécificité au virtual host, lui permettant de remplacer la définition par défaut si elle correspond à la valeur de ServerName
.
Exécutez la commande suivante pour ouvrir votre fichier de virtual host, en veillant à remplacer la variable your_domain
par votre nom de domaine réel :
Ajoutez your_domain
à la directive ServerName
:
…
ServerName your_domain
…
De même, vous pouvez également faire en sorte que l’hôte virtuel s’applique à plus d’un nom en utilisant la directive ServerAlias
. Cela fournit des chemins alternatifs pour accéder au même contenu. Un bon exemple d’utilisation est d’ajouter le même domaine, précédé de www
:
…
ServerAlias www.your_domain.com
…
La directive DocumentRoot
spécifie l’emplacement où se trouvera le contenu demandé pour cet hôte virtuel. Sur Ubuntu, l’hôte virtuel par défaut est configuré pour servir du contenu à partir du répertoire /var/www/
:
…
DocumentRoot /var/www/your_domain/public_html
…
Définitions de répertoire
Au sein de la définition de l’hôte virtuel, il existe des définitions pour la manière dont le serveur gère différents répertoires dans le système de fichiers. Apache appliquera toutes ces directives dans l’ordre, du plus court au plus long, il y a donc encore une chance de remplacer les options précédentes.
Ouvrez le fichier apache2.conf
avec cette commande :
…
<Directory />
Options FollowSymLinks
AllowOverride None
Require all denied
</Directory>
<Directory /usr/share>
AllowOverride None
Require all granted
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
…
La première définition de répertoire applique des règles pour le répertoire /
, ou racine. Cela fournira la configuration de base pour votre hôte virtuel, car elle s’applique à tous les fichiers servis sur le système de fichiers. Remarquez les options de configuration de répertoire, ainsi que certains commentaires utiles, contenus dans ce fichier. Cette configuration par défaut interdit l’accès à tout le contenu sauf indication contraire dans les définitions de répertoire ultérieures.
La directive Require
peut restreindre ou ouvrir l’accès à différentes ressources dans votre serveur.
La directive AllowOverride
est utilisée pour décider si un fichier .htaccess
peut remplacer les paramètres s’il est placé dans le répertoire du contenu. Cela n’est pas autorisé par défaut, mais peut être utile à activer dans diverses circonstances.
Après avoir examiné le contenu de ce fichier, vous pouvez le fermer en appuyant sur CTRL+X
.
Déclarations Alias et ScriptAlias
Les définitions de répertoire sont parfois précédées de directives Alias
ou ScriptAlias
.
Ouvrez votre fichier de configuration de l’hôte virtuel avec cette commande et remplacez la variable your_domain
par votre nom de domaine :
La directive Alias
mappe un chemin d’URL vers un chemin de répertoire. Par exemple, dans un hôte virtuel qui gère les demandes à your_domain
, ce qui suit permettrait d’accéder au contenu dans /usr/local/apache/content/
en naviguant vers your_domain.com/content/
:
Alias “/content/” “/usr/local/apache/content/”
La directive ScriptAlias
fonctionne de la même manière, mais est utilisée pour définir les répertoires qui auront des composants exécutables en eux :
ScriptAlias "/cgi-bin/" "/usr/local/apache2/cgi-bin/"
N’oubliez pas de définir le répertoire avec les privilèges d’accès comme discuté dans la section précédente. Après avoir terminé vos modifications sur le fichier, quittez le fichier en appuyant sur CTRL+X
. Si vous avez apporté des modifications à ce fichier, appuyez sur Y
pour enregistrer les modifications apportées à votre fichier ou appuyez sur N
pour laisser le fichier tel qu’il était avant toute modification de la configuration.
Étape 5 : Activation des sites et modules
Une fois que vous avez un fichier de virtual host qui répond à vos besoins, vous pouvez utiliser les outils inclus avec Apache pour le transformer en sites web actifs.
Pour créer un lien symbolique dans le répertoire sites-enabled
vers un fichier existant dans le répertoire sites-available
, exécutez la commande suivante. Assurez-vous de remplacer votre_domaine
par le nom de votre propre fichier de configuration de site de virtual host :
Après avoir activé un site, exécutez la commande suivante pour indiquer à Apache de recharger ses fichiers de configuration, permettant ainsi à la modification de se propager :
Il existe également une commande complémentaire pour désactiver un virtual host. Elle fonctionne en supprimant le lien symbolique du répertoire sites-enabled
. Par exemple, avec votre site de virtual host activé, vous pouvez désactiver le site par défaut 000-default
:
Les modules peuvent être activés ou désactivés en utilisant les commandes a2enmod
et a2dismod
respectivement. Ils fonctionnent de la même manière que les versions a2ensite
et a2dissite
de ces commandes. Par exemple, pour activer le module info
, vous pouvez utiliser la commande suivante :
De même, vous pouvez désactiver un module en utilisant la commande a2dismod
:
N’oubliez pas de redémarrer Apache après avoir modifié les fichiers de configuration et activé ou désactivé les modules.
Conclusion
Apache est polyvalent et très modulaire, donc les besoins en configuration seront différents en fonction de votre configuration.
Après avoir examiné quelques cas d’utilisation généraux ci-dessus, vous devriez avoir une bonne compréhension de l’utilisation principale des fichiers de configuration et de leur interaction. Si vous avez besoin de connaître des options de configuration spécifiques, les fichiers fournis sont bien commentés et Apache fournit une excellente documentation. Espérons que les fichiers de configuration ne seront pas aussi intimidants maintenant et que vous vous sentirez plus à l’aise pour expérimenter et les modifier selon vos besoins.