Retour au blog

Configuration du serveur web Apache sur un VPS Ubuntu ou Debian

Configuration du serveur web Apache sur un VPS Ubuntu ou Debian

Introduction

Apache est actuellement le serveur web le plus utilisé au monde. Il s'agit d'un logiciel open-source développé il y a plus de vingt ans et maintenu par l'Apache Software Foundation. En septembre 2020, on estimait qu'il desservait 35 % de l'ensemble du trafic des sites web dans le monde.

Les développeurs préfèrent Apache pour sa rapidité, sa sécurité, sa fiabilité, sa robustesse et sa facilité de personnalisation. De plus, Apache est capable de répondre aux besoins de nombreux environnements car il permet l'installation de diverses extensions et modules. Cela est possible grâce à un ensemble de configurations que les développeurs et les administrateurs de serveurs peuvent modifier pour répondre à différents objectifs. Dans ce tutoriel, nous vous guiderons à travers les fichiers de configuration générale et les options qui peuvent affecter différents résultats sur les serveurs Ubuntu et Debian.

Debian et Ubuntu figurent parmi les systèmes d'exploitation de serveur de choix. Les deux présentent de nombreuses similitudes. Par exemple, ils utilisent tous deux le gestionnaire de paquets APT et les paquets DEB pour une installation manuelle. Ils gèrent les paramètres d'Apache et la structure des répertoires de manière similaire. Par conséquent, vous devriez être en mesure de suivre ce tutoriel avec l'un ou l'autre de ces systèmes d'exploitation. Tout d'abord, vous pouvez suivre ce tutoriel pour configurer un serveur Ubuntu en quelques étapes.

Ensuite, connectez-vous en tant qu'utilisateur non-root avec les privilèges sudo, et c'est parti !

Comment installer Apache sur Ubuntu et Debian

Si votre serveur ne dispose pas encore d'Apache, vous pouvez facilement l'installer à l'aide d'une seule commande. Tout d'abord, exécutez la commande de mise à jour :

Ensuite, vous pouvez installer Apache en lançant la commande suivante :

Une fois l'installation terminée, vous pouvez vérifier la version installée à l'aide de la commande :

Au moment de la rédaction de ce tutoriel, la version était :

Apache Web Server

Après cela, visitez l'adresse IP ou le nom de domaine de votre serveur. Vous devriez pouvoir voir la page d'index par défaut d'Apache :

Apache Web Server

La hiérarchie des fichiers Apache dans les distributions Ubuntu et Debian

Les distributions Ubuntu et Debian utilisent toutes deux le gestionnaire de paquets apt. De même, lorsque vous installez un paquet, il crée des hiérarchies de fichiers similaires. Dans notre cas, pour Ubuntu comme pour Debian, Apache conserve ses fichiers de configuration dans le répertoire « /etc/apache2 ». Accédez au répertoire à l'aide de la commande suivante et listez le contenu du répertoire :

Vous pouvez voir le résultat de la commande dans la capture d'écran ci-dessous :

screenshot

Vous pouvez voir un certain nombre de fichiers et de sous-répertoires avec lesquels vous devriez vous familiariser lors de la configuration d'un serveur Apache. Voici leur description :

  • apache2.conf – C'est le fichier de configuration principal d'un serveur Apache. De plus, il contient toutes les configurations par défaut. Bien que presque toutes les configurations puissent être effectuées à partir de ce fichier, il est toujours recommandé d'utiliser des fichiers distincts dédiés par souci de simplicité et pour protéger ce fichier par défaut de toute corruption.
  • conf-available – C'est le répertoire contenant les fichiers de configuration locaux supplémentaires et les fichiers d'autres applications qui ne sont pas encore associés à des modules. Les configurations de ce répertoire ne sont pas actives tant que vous ne les activez pas. La commande a2enconf  permet d'activer un fichier de configuration. Voici le contenu de ce répertoire :

Apache Web Server

  • conf-enabled – C'est le répertoire contenant les configurations locales supplémentaires et les fichiers de configuration d'autres applications associés à leurs modules correspondants. Les fichiers de configuration de ce répertoire sont actifs et affectent le comportement d'Apache. Vous pouvez désactiver un fichier de configuration à l'aide de la commande a2disconf. Voici le contenu de ce répertoire :

conf-enabled

  • envvars – C'est le fichier contenant les variables d'environnement d'Apache2. Les variables de ce fichier n'affectent qu'Apache et ne sont pas liées à votre système Linux. Voici le contenu du fichier :

envvars

  • magic – C'est le fichier contenant les instructions pour déterminer le type MIME d'un fichier. Il aide le serveur à déterminer le type d'un fichier.
  • mods-available – C'est le répertoire contenant les fichiers de configuration pour charger les modules et les configurer. Cependant, ils ne sont pas encore activés. Vous pouvez les activer à l'aide de la commande a2enmod.
  • mods-enabled – C'est le répertoire contenant les fichiers de configuration pour charger les modules et les configurer. Les configurations de ce répertoire sont déjà activées et pointent vers les modules correspondants. Vous pouvez désactiver les modules avec la commande a2dismod. 
  • ports-conf – C'est le fichier spécifiant les ports disponibles pour les hôtes virtuels et les ports TCP sur lesquels Apache écoute.
  • sites-available – C'est le répertoire contenant les fichiers de configuration disponibles pour les hôtes virtuels Apache. Les hôtes virtuels permettent à Apache de servir différents sites web. Les fichiers de ce répertoire ne sont pas encore actifs. Vous pouvez activer un fichier d'hôte virtuel avec la commande a2ensite.
  • sites-enabled – C'est le répertoire contenant les fichiers de configuration des hôtes virtuels activés. Il contient généralement des liens symboliques vers les fichiers du répertoire sites-available. Vous pouvez désactiver un fichier d'hôte virtuel à l'aide de la commande a2dissite.

La conception modulaire des fichiers de configuration d'Apache vous permet de modifier et d'ajouter des fichiers selon vos besoins.

Contenu du fichier Apache2.conf

Le fichier à l'emplacement “/etc/apache2/apache2.conf” contient les principaux fichiers de configuration d'Apache. Plus précisément, il contient les directives de configuration qui donnent ses instructions au serveur. Il se compose de trois sections pour définir les configurations de processus du serveur global, la configuration du serveur par défaut et les configurations des hôtes virtuels .

Dans les systèmes Ubuntu et Debian, la majeure partie du fichier contient les configurations de processus du serveur global. Vers le bas, vous trouverez les configurations du serveur par défaut et des hôtes virtuels en utilisant la directive “Include”. Apache utilise la directive “Include” pour lire d'autres fichiers de configuration puis les inclure dans le fichier de configuration actuel, à partir de l'endroit où la directive apparaît. Cela se produit au démarrage du serveur Apache.

En faisant défiler vers le bas du fichier apache2.conf, vous devriez voir plusieurs directives d'inclusion. Ces directives chargent les définitions des modules dans le répertoire mods-enabled, le fichier ports.conf, les configurations locales dans le répertoire conf-enabled et les configurations des hôtes virtuels dans le répertoire sites-enabled directory.

Section de configuration globale du serveur

La section de configuration globale du serveur contient les paramètres et les instructions qui contrôlent le fonctionnement global d'Apache. Elle présente certaines directives dont vous pouvez modifier les valeurs pour changer le comportement d'Apache. Examinons-en quelques-unes :

  • Timeout – Cette directive spécifie le temps maximum pour que le serveur réponde à une requête. Par défaut, elle est de 300 secondes, ce qui est probablement trop élevé si vous développez une application à réponse plus rapide. Vous pouvez la remplacer par une valeur inférieure si votre serveur dispose de ressources suffisantes.
  • KeepAlive – Spécifie que chaque connexion doit rester ouverte pour gérer plusieurs requêtes du même client. Par défaut, elle est définie sur “On”. Cependant, si elle est définie sur “Off”, chaque requête devra établir une nouvelle connexion, même si elle provient du même client. Cela peut entraîner une surcharge importante du serveur.
  • MaxKeepAliveRequests – Elle contrôle le nombre maximum de requêtes à autoriser lors d'une seule connexion persistante avant qu'elle ne se ferme. Pour autoriser un nombre illimité de connexions, définissez la valeur sur 0. Pour des performances et une efficacité maximales, définissez ce nombre sur la valeur la plus élevée possible.
  • KeepAliveTimeout – Elle détermine le nombre maximum de secondes à attendre pour la requête suivante du même client après la dernière avant que la connexion ne se ferme. Par défaut, elle est de 5 secondes. Si le délai expire, lors de la requête suivante, une nouvelle connexion est établie pour traiter la requête.
  • HostnameLookups – Décide si la recherche DNS doit être activée ou non. Par défaut, elle est désactivée. Si vous l'activez, chaque requête entraînera au moins une recherche auprès du serveur de noms, ce qui aura un impact négatif considérable sur les performances de votre serveur.

Fichier d'hôte virtuel par défaut

Une nouvelle installation du serveur Apache est fournie avec un fichier d'hôte virtuel par défaut appelé 000-default.conf. C'est le fichier qui sert la page index.html par défaut d'Apache. Il se trouve dans le répertoire sites-available. Le contenu de ce fichier vous donnera une idée générale du format des fichiers d'hôte virtuel Apache. Entrez la commande suivante pour ouvrir le fichier :

Voici le contenu du fichier. Nous avons supprimé les commentaires par souci de brièveté :

Comme vous pouvez le voir dans l'en-tête de configuration VirtualHost *:80, par défaut, cet hôte virtuel est configuré pour gérer les requêtes sur le port 80. Il s'agit du port HTTP standard.

Apache est conçu pour utiliser la définition d'hôte virtuel la plus spécifique qui correspond à une requête particulière. Cela signifie que cet hôte virtuel particulier ne gérera pas nécessairement chaque requête adressée au serveur. Au contraire, s'il existait un autre fichier d'hôte virtuel avec une définition plus spécifique, il l'emporterait sur ce fichier.

Voici les descriptions des directives du fichier d'hôte virtuel :

  • ServerAdmin – Spécifie l'adresse e-mail de contact à utiliser en cas de problème avec le serveur. Apache l'affiche généralement sur la page d'erreur qu'il génère. Si vous définissez ServerSignature sur « Email » dans le fichier /etc/apache2/conf-enabled/security.conf , l'adresse e-mail spécifiée ici sera affichée avec un lien mailto
  • DocumentRoot – Cette directive pointe vers le répertoire contenant les fichiers du site web. Vous pouvez trouver la page d'accueil par défaut d'Apache dans le répertoire /var/www/html sous Ubuntu 20.04.
  • ErrorLog – Cette directive détermine l'emplacement du fichier journal des erreurs.
  • CustomLog – Cette directive indique l'emplacement du journal des accès et le format d'affichage du journal.

Directives d'hôte virtuel supplémentaires

  • ServerName – Elle spécifie le nom de domaine ou l'adresse IP que l'hôte virtuel doit gérer. Si nous définissions plusieurs hôtes virtuels pour que notre serveur Apache puisse desservir plusieurs sites web, nous ajouterions une directive ServerName et spécifierions le domaine que chaque hôte virtuel doit desservir.
  • ServerAlias – Cette directive permet d'appliquer un fichier d'hôte virtuel à plusieurs noms, offrant ainsi des domaines alternatifs pour accéder au même contenu. Par exemple, pour que vos utilisateurs accèdent au même contenu s'ils font précéder votre nom de domaine de www. Par exemple, nous pourrions ajouter ce qui suit à l'hôte virtuel pour le domaine example.com :

La directive de définition de répertoire

Dans des cas réels, vous aurez probablement vos fichiers de site web dans plusieurs répertoires. Le fichier d'hôte virtuel par défaut ne contient pas la directive Directory car il ne peut servir qu'un seul fichier index.html. La directive Directory spécifie comment Apache gère les différents répertoires au sein de la racine des documents du site web. C'est également dans cette directive que vous définissez les restrictions d'accès au système de fichiers. Par défaut, Apache n'autorise l'accès Internet qu'aux fichiers situés dans le répertoire /var/www. Dans ce répertoire, vous pouvez créer d'autres répertoires qui contiendront les fichiers de votre site web. De plus, vous pouvez spécifier comment vous souhaitez que l'on accède aux fichiers du répertoire. Un exemple de définition peut ressembler à ceci :

La directive <Directory /var/www/html> spécifie le répertoire auquel ces règles s'appliqueront. Le « AllowOverride” spécifie si un fichier “.htaccess” doit remplacer les paramètres si vous le placez dans le répertoire spécifié. Cela est nécessaire lors du travail avec des frameworks comme Laravel qui fonctionnent avec .htaccess et la réécriture d'URL.

Pour en savoir plus sur les hôtes virtuels, vous pouvez consulter notre tutoriel sur la façon de configurer des hôtes virtuels Apache sur Ubuntu 20.04. Voici un exemple de fichier d'hôte virtuel avec toutes les directives que nous avons définies :

Directives Redirect, Alias et ScriptAlias

Dans certains cas, vous pouvez vouloir accéder à des fichiers ou exécutables de site web qui ne se trouvent pas directement sous le répertoire DocumentRoot. C'est là que ces trois directives interviennent.

La directive Redirect indique aux clients de faire une nouvelle requête avec une URL différente. Généralement, vous l'utiliserez lorsque vous souhaitez diriger les visiteurs de votre site web vers un nom de domaine ou une adresse IP différente. Notez que Redirect est d'abord exécutée avant Alias et ScriptAlias. La directive Alias mappe une URL à un chemin de répertoire. La directive ScriptAlias mappe une URL aux répertoires qui contiendront des scripts exécutables. Pour qu'Alias et ScriptAlias fonctionnent, vous devez définir les permissions du répertoire pour l'utilisateur www-data utilisé par le serveur web.

Comment activer des sites et des modules dans Apache

Les hôtes virtuels et les modules doivent être activés avant de devenir actifs et accessibles au processus Apache. De plus, les hôtes virtuels sont créés à l'intérieur du répertoire sites-available comme expliqué. Si vous avez un fichier d'hôte virtuel nommé example.com.conf, vous pouvez l'activer à l'aide de la commande suivante :

La commande active l'hôte virtuel. Cependant, pour que les modifications prennent effet, vous devez demander à Apache de recharger les fichiers de configuration en saisissant la commande suivante :

Vous pouvez souhaiter désactiver un fichier d'hôte virtuel nommé example.com.conf afin qu'Apache ne l'utilise pas pour répondre aux requêtes. Pour ce faire, saisissez la commande suivante pour désactiver un fichier :

À nouveau, pour que les modifications prennent effet immédiatement, vous devez demander à Apache de recharger les fichiers de configuration en saisissant la commande suivante :

De même, vous pouvez activer et désactiver des modules en utilisant la même syntaxe. La commande pour activer un module est “a2enmod” et la commande pour désactiver un module est “a2dismod.” Par exemple, il existe un module Apache appelé mod_rewrite qui aide à réécrire les URL en fonction des configurations .htaccess. Vous devez activer ce module pour que le fichier .htaccess fonctionne. Vous pouvez le faire en saisissant la commande :

Pour que cette modification prenne effet, vous devez recharger les configurations d'Apache. Vous pouvez également désactiver le module en saisissant la commande :

Après cela, rechargez les configurations d'Apache2 pour que les modifications prennent effet immédiatement.

Enfin, voici d'autres ressources qui vous aideront à vous familiariser avec le serveur web Apache :

Conclusion

Dans ce tutoriel, nous avons défini les fichiers de configuration de base d'Apache sur les systèmes Ubuntu et Debian. Comme nous l'avons démontré, Apache est hautement modulaire, ce qui signifie que vous pouvez installer de nombreux modules pour effectuer différentes tâches.

Vous pouvez facilement activer et désactiver ces modules et modifier d'autres configurations pour obtenir différents résultats. Vous pouvez maintenant modifier les fichiers de configuration locaux qui sont ensuite inclus dans le fichier de configuration principal. Ainsi, vous n'avez pas à vous soucier de corrompre le fichier de configuration global.

Bonne informatique !

author

Manpreet Singh

Auteur · CloudSigma

Preslav Dobrev est un designer créatif chez CloudSigma, axé sur une identité commerciale cohérente à travers des canaux marketing traditionnels et innovants. Il excelle à fusionner la vision artistique avec le marketing stratégique pour créer des récits de marque percutants.

Commentaires

Aucun commentaire pour l'instant. Soyez le premier.