Aller au contenu

Apache HTTP Server

Mise à jour :

logo apache http server

Apache HTTP Server est un serveur web open-source très populaire utilisé par des millions de sites web à travers le monde. Sa flexibilité, sa robustesse et sa capacité à gérer une grande variété de tâches en font un choix privilégié pour les administrateurs systèmes. Dans ce guide, je vais vous guider à travers l’installation, la configuration et la gestion d’apache. Vous apprendrez à mettre en place un serveur web performant et sécurisé, à utiliser les fonctionnalités avancées d’apache et à résoudre les problèmes courants que vous pourriez rencontrer. Que vous soyez débutant ou administrateur expérimenté, ce guide est conçu pour vous fournir les connaissances nécessaires pour maîtriser apache.

Historique

Apache, souvent appelé Apache HTTP Server, est un serveur web open-source développé par la fondation Apache Software Foundation. Le projet a débuté en 1995 et a rapidement gagné en popularité grâce à sa flexibilité et à ses performances. Apache a été conçu pour être un serveur web multi-plateforme, capable de fonctionner sur la majorité des systèmes d’exploitation, dont Unix, Linux et Windows. Son architecture modulaire permet aux administrateurs de personnaliser et d’étendre ses fonctionnalités en ajoutant ou en supprimant des modules en fonction des besoins spécifiques.

Au fil des années, Apache a joué un important important dans l’expansion du Web, devenant le serveur web le plus utilisé. Il a su évoluer avec les technologies et les besoins des utilisateurs, intégrant des fonctionnalités avancées comme le support SSL/TLS, les virtual hosts et un puissant moteur de réécriture d’URL. Apache continue d’être activement maintenu et développé, avec une communauté large et engagée qui contribue à son développement et à sa documentation.

Fonctionnalités

Virtual Hosts

Les Virtual Hosts permettent de configurer Apache pour qu’il héberge plusieurs sites web sur une seule instance du serveur. Cela est particulièrement utile pour les environnements où plusieurs domaines ou sous-domaines doivent être gérés à partir du même serveur.

Support HTTP/2

Depuis la version 2.4.17, Apache supporte le protocole HTTP/2, offrant des améliorations significatives en termes de performances et d’efficacité par rapport à HTTP/1.1. HTTP/2 permet la multiplexation des requêtes, la compression des en-têtes et une meilleure gestion des connexions, ce qui se traduit par des temps de chargement plus rapides pour les utilisateurs.

Modules dynamiques

Apache permet d’étendre ses capacités en ajoutant des modules dynamiques. Ces modules peuvent être activés ou désactivés selon les besoins. Par exemple, vous pouvez activer des modules pour gérer la réécriture d’URL, la compression des fichiers, ou encore l’authentification.

Support SSL/TLS

Apache offre un support SSL/TLS complet pour sécuriser les communications web. Grâce au module mod_ssl, vous pouvez configurer Apache pour utiliser des certificats SSL/TLS, assurant ainsi que les données échangées entre le serveur et les clients sont cryptées et sécurisées.

Moteur de réécriture d’URL

Le module mod_rewrite d’Apache fournit un moteur de réécriture d’URL puissant qui permet de manipuler les URL de manière flexible. Cela peut être utilisé pour rediriger les utilisateurs, masquer des structures complexes d’URL, ou améliorer le SEO des sites web.

Support des fichiers .htaccess

Apache permet l’utilisation des fichiers .htaccess pour la configuration à l’échelle des répertoires. Ces fichiers permettent aux administrateurs et aux développeurs de définir des règles spécifiques pour des répertoires individuels sans avoir à modifier la configuration principale du serveur.

Compression des fichiers

Pour améliorer les performances, Apache supporte la compression des fichiers grâce à des modules comme mod_deflate et mod_brotli. La compression des réponses HTTP réduit la taille des données transférées, ce qui accélère le chargement des pages web pour les utilisateurs finaux.

Mise en cache

Apache inclut des capacités de mise en cache via des modules tels que mod_cache et mod_cache_disk. La mise en cache des réponses HTTP peut considérablement réduire la charge du serveur et améliorer les temps de réponse pour les utilisateurs.

Concepts de base

Pour bien administrer Apache, il est essentiel de comprendre quelques concepts de base qui sont fondamentaux pour son fonctionnement et sa configuration. Voici les principaux concepts que vous devez connaître :

Document Root

Le Document Root est le répertoire principal où sont stockés les fichiers que le serveur web Apache servira aux visiteurs. Par défaut, sur une installation standard d’Apache, ce répertoire est souvent situé à /var/www/html sur les systèmes basés sur Debian et Ubuntu et à /var/www sur les systèmes basés sur Red Hat et CentOS. Vous pouvez changer ce répertoire en modifiant la configuration du Virtual Host correspondant.

Virtual Host

Les Virtual Hosts permettent à Apache de gérer plusieurs sites web sur une seule instance du serveur. Chaque Virtual Host peut avoir sa propre configuration, son propre Document Root et ses propres directives spécifiques. Il existe deux types de Virtual Hosts :

  • Name-based Virtual Hosts : Permet de servir différents sites web basés sur le nom de domaine demandé par le client.
  • IP-based Virtual Hosts : Permet de servir différents sites web basés sur l’adresse IP du serveur.

Exemple de configuration d’un Name-based Virtual Host :

<VirtualHost *:80>
ServerAdmin webmaster@exemple.com
ServerName www.exemple.com
DocumentRoot /var/www/exemple
<Directory /var/www/exemple>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Modules

Les modules dans Apache sont des extensions qui ajoutent des fonctionnalités spécifiques au serveur web. Par exemple, le module mod_ssl permet de gérer les connexions sécurisées via SSL/TLS, tandis que le module mod_rewrite permet de réécrire les URL pour des raisons de SEO ou de sécurité. Les modules peuvent être activés ou désactivés selon les besoins de votre serveur.

Pour activer un module sur Debian/Ubuntu :

Terminal window
sudo a2enmod nom_du_module
sudo systemctl restart apache2

Pour désactiver un module :

Terminal window
sudo a2dismod nom_du_module
sudo systemctl restart apache2

Fichiers de configuration

Les fichiers de configuration principaux d’Apache se trouvent généralement dans le répertoire /etc/apache2 sur Debian/Ubuntu et /etc/httpd sur Red Hat/CentOS. Le fichier de configuration principal est souvent nommé apache2.conf ou httpd.conf. D’autres fichiers de configuration importants incluent les fichiers de configuration des Virtual Hosts (sites-available et sites-enabled sur Debian/Ubuntu) et les fichiers de configuration des modules.

.htaccess

Le fichier .htaccess permet de définir des configurations spécifiques pour un répertoire donné sans avoir à modifier les fichiers de configuration principaux d’Apache. Il est couramment utilisé pour des configurations telles que les redirections, les règles de réécriture d’URL et les contrôles d’accès. Voici un exemple de fichier .htaccess pour rediriger toutes les requêtes HTTP vers HTTPS :

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R=301,L]

Logs

Apache génère plusieurs fichiers de logs pour surveiller et diagnostiquer le fonctionnement du serveur. Les principaux fichiers de logs incluent :

  • Access log : Contient les informations sur toutes les requêtes HTTP reçues par le serveur. (/var/log/apache2/access.log ou /var/log/httpd/access_log)
  • Error log : Contient les messages d’erreur générés par le serveur. (/var/log/apache2/error.log ou /var/log/httpd/error_log)

Environnements de développement et de production

Il est important de distinguer entre les environnements de développement et de production lors de la configuration d’Apache. En développement, vous pouvez activer des fonctionnalités de débogage et des configurations plus permissives. En production, vous devez vous concentrer sur la sécurité et la performance, en désactivant les fonctionnalités inutiles et en appliquant des configurations de sécurité strictes.

Installation d’Apache

Installation sur Debian/Ubuntu

Pour installer Apache sur une distribution Debian ou Ubuntu, vous pouvez utiliser la commande apt pour télécharger et installer les paquets nécessaires. Voici les étapes à suivre :

  1. Mettez à jour votre liste de paquets :
Terminal window
sudo apt update
  1. Installez Apache :
Terminal window
sudo apt install apache2
  1. Vérifiez que le service Apache est en cours d’exécution :
Terminal window
sudo systemctl status apache2

Installation sur CentOS/RHEL

Pour installer Apache sur CentOS ou Red Hat Enterprise Linux (RHEL), vous pouvez utiliser la commande yum ou dnf. Voici les étapes à suivre :

  1. Mettez à jour votre liste de paquets :
    Terminal window
    sudo yum update # Pour CentOS 7 ou plus ancien
    sudo dnf update # Pour CentOS 8 et plus récent
  2. Installez Apache :
    Terminal window
    sudo yum install httpd # Pour CentOS 7 ou plus ancien
    sudo dnf install httpd # Pour CentOS 8 et plus récent
  3. Démarrez le service Apache et assurez-vous qu’il démarre automatiquement au démarrage du système :
    Terminal window
    sudo systemctl start httpd
    sudo systemctl enable httpd
  4. Vérifiez que le service Apache est en cours d’exécution :
    Terminal window
    sudo systemctl status httpd

Configuration initiale après installation

Une fois Apache installé, il est recommandé de vérifier la configuration initiale pour assurer son bon fonctionnement et sa sécurité.

Configuration du pare-feu

Assurez-vous que votre pare-feu autorise le trafic HTTP et HTTPS. Sur Debian/Ubuntu, utilisez ufw :

Terminal window
sudo ufw allow 'Apache Full'

Sur CentOS/RHEL, utilisez firewalld :

Terminal window
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload

Vérification du fichier de configuration

Il est important de vérifier que ‘Apache est correctement configuré. Sur Debian/Ubuntu, le fichier principal est situé à /etc/apache2/apache2.conf et sur CentOS/RHEL à /etc/httpd/conf/httpd.conf.

Pour tester la configuration, utilisez la commande suivante :

Terminal window
sudo apache2ctl configtest # Sur Debian/Ubuntu
sudo httpd -t # Sur CentOS/RHEL

Si tout est correct, vous devriez voir un message indiquant que la syntaxe est correcte.

Accès au serveur web

Après l’installation et la configuration initiale, vous pouvez accéder à votre serveur web en ouvrant un navigateur et en allant à l’adresse http://localhost ou http://<votre_adresse_ip>. Vous devriez voir la page par défaut d’Apache, indiquant que le serveur fonctionne correctement.

Configuration de base d’Apache

Modification du Document Root

Le Document Root par défaut d’Apache est généralement situé à /var/www/html. Cependant, vous pouvez le modifier pour utiliser un autre répertoire selon vos besoins. Pour ce faire, il faut modifier le fichier de configuration du Virtual Host.

Par exemple, pour changer le Document Root d’un Virtual Host sur Debian/Ubuntu :

<VirtualHost *:80>
ServerAdmin webmaster@exemple.com
ServerName www.exemple.com
DocumentRoot /home/user/public_html
<Directory /home/user/public_html>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

N’oubliez pas de redémarrer Apache après avoir fait des modifications :

Terminal window
sudo systemctl restart apache2 # Sur Debian/Ubuntu
sudo systemctl restart httpd # Sur CentOS/RHEL

Configuration des Virtual Hosts

Les Virtual Hosts permettent de gérer plusieurs sites web sur une seule instance d’Apache. Chaque site peut avoir sa propre configuration. Voici comment configurer un nouveau Virtual Host.

  1. Créez un fichier de configuration pour le nouveau site :

    Terminal window
    sudo nano /etc/apache2/sites-available/exemple.com.conf # Sur Debian/Ubuntu
    sudo nano /etc/httpd/conf.d/exemple.com.conf # Sur CentOS/RHEL
  2. Ajoutez la configuration du Virtual Host :

    Terminal window
    <VirtualHost *:80>
    ServerAdmin webmaster@exemple.com
    ServerName www.exemple.com
    DocumentRoot /var/www/exemple.com
    <Directory /var/www/exemple.com>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
    </Directory>
    ErrorLog ${APACHE_LOG_DIR}/exemple.com_error.log
    CustomLog ${APACHE_LOG_DIR}/exemple.com_access.log combined
    </VirtualHost>
  3. Activez le nouveau site et désactivez le site par défaut (Debian/Ubuntu uniquement) :

    Terminal window
    sudo a2ensite exemple.com.conf
    sudo a2dissite 000-default.conf
    sudo systemctl reload apache2

Configuration des fichiers .htaccess

Les fichiers .htaccess permettent de définir des règles de configuration pour des répertoires spécifiques. Ils sont souvent utilisés pour des redirections, des règles de réécriture d’URL et des contrôles d’accès.

Voici un exemple de fichier .htaccess pour rediriger toutes les requêtes HTTP vers HTTPS :

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R=301,L]

Pour permettre l’utilisation des fichiers .htaccess, vous devez définir la directive AllowOverride dans le fichier de configuration du Virtual Host :

<Directory /var/www/exemple.com>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>

N’oubliez pas de redémarrer Apache après avoir fait des modifications :

Terminal window
sudo systemctl restart apache2 # Sur Debian/Ubuntu
sudo systemctl restart httpd # Sur CentOS/RHEL

Configuration des logs

Apache génère des logs pour aider au diagnostic et au suivi des requêtes. Les principaux fichiers de logs sont :

  • Access log : Enregistre toutes les requêtes reçues par le serveur.
  • Error log : Enregistre les erreurs et les messages diagnostiques.

Vous pouvez personnaliser l’emplacement et le format des logs dans le fichier de configuration du Virtual Host :

<VirtualHost *:80>
ServerAdmin webmaster@exemple.com
ServerName www.exemple.com
DocumentRoot /var/www/exemple.com
ErrorLog ${APACHE_LOG_DIR}/exemple.com_error.log
CustomLog ${APACHE_LOG_DIR}/exemple.com_access.log combined
</VirtualHost>

Ces configurations de base vous permettront de mettre en place un serveur Apache fonctionnel et adapté à vos besoins spécifiques. Pour plus de détails et des exemples supplémentaires, vous pouvez consulter la documentation officielle d’Apache HTTP Server.

Gestion des modules

Apache permet d’étendre ses fonctionnalités via des modules qui peuvent être activés ou désactivés selon les besoins. Voici comment gérer les modules sur les différentes distributions Linux.

Activer un module

Sur Debian/Ubuntu

Pour activer un module sur Debian ou Ubuntu, vous pouvez utiliser la commande a2enmod suivie du nom du module :

Terminal window
sudo a2enmod rewrite
sudo systemctl restart apache2

Dans cet exemple, le module mod_rewrite est activé. Après avoir activé un module, il est important de redémarrer Apache pour que les modifications prennent effet.

Sur CentOS/RHEL

Sur CentOS ou RHEL, l’activation d’un module se fait en modifiant le fichier de configuration principal ou en incluant le fichier de configuration du module dans le répertoire conf.modules.d. Par exemple, pour activer mod_rewrite :

Terminal window
sudo nano /etc/httpd/conf.modules.d/00-base.conf
# Ajoutez ou décommentez la ligne suivante :
LoadModule rewrite_module modules/mod_rewrite.so
sudo systemctl restart httpd

Désactiver un module

Sur Debian/Ubuntu

Pour désactiver un module sur Debian ou Ubuntu, utilisez la commande a2dismod suivie du nom du module :

Terminal window
sudo a2dismod rewrite
sudo systemctl restart apache2

Sur CentOS/RHEL

Sur CentOS ou RHEL, la désactivation d’un module se fait en commentant ou en supprimant la ligne de chargement du module dans le fichier de configuration correspondant :

Terminal window
sudo nano /etc/httpd/conf.modules.d/00-base.conf
# Commentez la ligne suivante :
# LoadModule rewrite_module modules/mod_rewrite.so
sudo systemctl restart httpd

Modules courants et leur utilisation

Voici quelques modules couramment utilisés et leur utilité :

  • mod_rewrite : Permet la réécriture d’URL pour des redirections ou des améliorations SEO.
  • mod_ssl : Ajoute le support SSL/TLS pour sécuriser les connexions HTTP.
  • mod_headers : Permet de modifier les en-têtes HTTP des réponses.
  • mod_deflate : Permet la compression des réponses HTTP pour améliorer les temps de chargement des pages.

Vérification des modules activés

Vous pouvez vérifier les modules actuellement activés en utilisant les commandes suivantes :

Sur Debian/Ubuntu

Terminal window
apache2ctl -M

Sur CentOS/RHEL

Terminal window
httpd -M

Ces commandes listent tous les modules activés sur votre serveur Apache.

La gestion des modules est une partie essentielle de l’administration d’Apache, car elle permet de personnaliser et d’optimiser le serveur selon les besoins spécifiques. Pour plus de détails sur les modules et leur utilisation, vous pouvez consulter la documentation officielle des modules Apache.

Sécurisation d’Apache

Sécuriser votre serveur Apache est indispensable pour protéger vos sites web et les données des utilisateurs contre les attaques et les vulnérabilités. Voici quelques étapes essentielles pour améliorer la sécurité de votre installation Apache.

Activer SSL/TLS

Pour sécuriser les communications entre le serveur et les clients, vous devez activer SSL/TLS. Voici comment procéder sur Debian/Ubuntu et CentOS/RHEL :

Sur Debian/Ubuntu

  1. Installez le module SSL :

    Terminal window
    sudo a2enmod ssl
  2. Activez le site par défaut sécurisé (si nécessaire) :

    Terminal window
    sudo a2ensite default-ssl
  3. Redémarrez Apache pour appliquer les modifications :

    Terminal window
    sudo systemctl restart apache2

Sur CentOS/RHEL

  1. Installez le module SSL (généralement inclus par défaut) :

    Terminal window
    sudo yum install mod_ssl # CentOS 7 ou plus ancien
    sudo dnf install mod_ssl # CentOS 8 et plus récent
  2. Redémarrez Apache pour appliquer les modifications :

    Terminal window
    sudo systemctl restart httpd

Configurer les certificats SSL

Pour utiliser SSL/TLS, vous devez obtenir un certificat SSL d’une autorité de certification (CA) ou générer un certificat auto-signé pour les tests. Voici un exemple de configuration pour un Virtual Host sécurisé :

<VirtualHost *:443>
ServerName www.exemple.com
DocumentRoot /var/www/exemple.com
SSLEngine On
SSLCertificateFile /etc/ssl/certs/your_cert.pem
SSLCertificateKeyFile /etc/ssl/private/your_key.pem
<Directory /var/www/exemple.com>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/exemple.com_error.log
CustomLog ${APACHE_LOG_DIR}/exemple.com_access.log combined
</VirtualHost>

Désactivation des modules inutilisés

Pour réduire la surface d’attaque, désactivez les modules Apache que vous n’utilisez pas. Par exemple, pour désactiver mod_autoindex :

Sur Debian/Ubuntu

Terminal window
sudo a2dismod autoindex
sudo systemctl restart apache2

Sur CentOS/RHEL

Terminal window
sudo nano /etc/httpd/conf.modules.d/00-base.conf
# Commentez ou supprimez la ligne suivante :
# LoadModule autoindex_module modules/mod_autoindex.so
sudo systemctl restart httpd

Configuration des permissions des fichiers

Assurez-vous que les permissions des fichiers et des répertoires sont correctement configurées pour empêcher l’accès non autorisé. Par exemple, définissez les permissions pour le répertoire racine du serveur web :

Terminal window
sudo chown -R www-data:www-data /var/www
sudo chmod -R 755 /var/www

Configuration de la sécurité au niveau des en-têtes HTTP

Utilisez le module mod_headers pour ajouter des en-têtes de sécurité HTTP. Voici quelques exemples d’en-têtes que vous pouvez ajouter pour améliorer la sécurité :

<IfModule mod_headers.c>
Header always set X-Content-Type-Options "nosniff"
Header always set X-Frame-Options "DENY"
Header always set X-XSS-Protection "1; mode=block"
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
</IfModule>

Désactivation de la signature du serveur

Pour masquer la version d’Apache et des modules installés, désactivez la signature du serveur en ajoutant les lignes suivantes dans votre fichier de configuration principal (apache2.conf ou httpd.conf) :

ServerTokens Prod
ServerSignature Off

Utilisation de ModSecurity

ModSecurity est un pare-feu applicatif web (WAF) qui peut aider à protéger votre serveur Apache contre diverses attaques. Pour installer et configurer ModSecurity, suivez les étapes suivantes :

Sur Debian/Ubuntu

Terminal window
sudo apt install libapache2-mod-security2
sudo a2enmod security2
sudo systemctl restart apache2

Sur CentOS/RHEL

Terminal window
sudo yum install mod_security
sudo systemctl restart httpd

Une fois installé, vous pouvez personnaliser les règles de ModSecurity selon vos besoins.

Optimisation des performances

Pour assurer un fonctionnement rapide et efficace de votre serveur Apache, il est important d’optimiser ses performances. Voici quelques techniques et configurations pour améliorer la performance de votre serveur.

Compression des fichiers

La compression des fichiers peut réduire la taille des données transférées entre le serveur et le client, accélérant ainsi le chargement des pages. Apache utilise le module mod_deflate pour compresser les fichiers.

Activer la compression

Sur Debian/Ubuntu, le module mod_deflate est généralement activé par défaut. Sinon, vous pouvez l’activer avec la commande suivante :

Terminal window
sudo a2enmod deflate
sudo systemctl restart apache2

Sur CentOS/RHEL, ajoutez ou décommentez la ligne suivante dans le fichier de configuration principal ou dans un fichier de configuration spécifique au module :

LoadModule deflate_module modules/mod_deflate.so
sudo systemctl restart httpd

Configurer la compression

Ajoutez les lignes suivantes pour configurer la compression des fichiers dans votre fichier de configuration principal ou dans le fichier de configuration d’un Virtual Host :

<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/javascript
</IfModule>

Mise en cache

La mise en cache des contenus statiques peut réduire la charge du serveur et accélérer le temps de réponse pour les utilisateurs. Apache utilise les modules mod_cache et mod_cache_disk pour la mise en cache.

Activer la mise en cache

Sur Debian/Ubuntu, activez les modules de cache avec les commandes suivantes :

Terminal window
sudo a2enmod cache
sudo a2enmod cache_disk
sudo systemctl restart apache2

Sur CentOS/RHEL, ajoutez ou décommentez les lignes suivantes dans le fichier de configuration principal ou dans un fichier de configuration spécifique au module :

LoadModule cache_module modules/mod_cache.so
LoadModule cache_disk_module modules/mod_cache_disk.so
sudo systemctl restart httpd

Configurer la mise en cache

Ajoutez les lignes suivantes pour configurer la mise en cache dans votre fichier de configuration principal ou dans le fichier de configuration d’un Virtual Host :

<IfModule mod_cache.c>
<IfModule mod_cache_disk.c>
CacheRoot "/var/cache/apache2/mod_cache_disk"
CacheEnable disk /
CacheDirLevels 2
CacheDirLength 1
</IfModule>
</IfModule>

Utilisation des Multi-Processing Modules (MPM)

Apache utilise les Multi-Processing Modules (MPM) pour gérer les processus de traitement des requêtes. Il existe plusieurs types de MPM, chacun ayant ses propres avantages. Les MPM les plus couramment utilisés sont mpm_prefork, mpm_worker et mpm_event.

Choisir et configurer un MPM

Sur Debian/Ubuntu, vous pouvez activer un MPM avec la commande a2enmod et désactiver les autres avec a2dismod :

Terminal window
sudo a2enmod mpm_worker
sudo a2dismod mpm_prefork
sudo systemctl restart apache2

Sur CentOS/RHEL, modifiez le fichier de configuration principal pour charger le module MPM souhaité :

# Commenter les autres MPM
# LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
LoadModule mpm_worker_module modules/mod_mpm_worker.so
sudo systemctl restart httpd

Configuration du MPM Worker

Voici un exemple de configuration pour le MPM worker :

<IfModule mpm_worker_module>
StartServers 2
MinSpareThreads 25
MaxSpareThreads 75
ThreadLimit 64
ThreadsPerChild 25
MaxRequestWorkers 150
MaxConnectionsPerChild 0
</IfModule>

Optimisation des paramètres du système

Optimisez les paramètres du système d’exploitation pour améliorer les performances d’Apache. Voici quelques réglages recommandés :

Augmenter la taille des fichiers ouverts

Terminal window
echo "fs.file-max = 100000" >> /etc/sysctl.conf
sysctl -p

Augmenter les limites de l’utilisateur www-data

Ajoutez les lignes suivantes dans /etc/security/limits.conf :

apache soft nofile 100000
apache hard nofile 100000

Surveillance et dépannage

Pour assurer le bon fonctionnement de votre serveur Apache, il est important de surveiller ses performances et de résoudre rapidement les problèmes qui peuvent survenir. Voici quelques techniques et outils pour vous aider dans cette tâche.

Les fichiers de logs

Apache génère plusieurs fichiers de logs qui sont essentiels pour la surveillance et le dépannage. Les principaux fichiers de logs sont les suivants :

  • Access log : Enregistre toutes les requêtes HTTP reçues par le serveur.
  • Error log : Enregistre les erreurs et les messages diagnostiques.

Emplacement des fichiers de logs

  • Sur Debian/Ubuntu :
    • Access log : /var/log/apache2/access.log
    • Error log : /var/log/apache2/error.log
  • Sur CentOS/RHEL :
    • Access log : /var/log/httpd/access_log
    • Error log : /var/log/httpd/error_log

Exemple de configuration des logs

Vous pouvez personnaliser les fichiers de logs dans le fichier de configuration du Virtual Host :

<VirtualHost *:80>
ServerAdmin webmaster@exemple.com
ServerName www.exemple.com
DocumentRoot /var/www/exemple.com
ErrorLog ${APACHE_LOG_DIR}/exemple.com_error.log
CustomLog ${APACHE_LOG_DIR}/exemple.com_access.log combined
</VirtualHost>

Surveillance en temps réel

Utilisez des outils de surveillance en temps réel pour suivre l’activité de votre serveur Apache et détecter les problèmes potentiels.

Apachetop

Apachetop est un outil de ligne de commande qui affiche les requêtes HTTP en temps réel :

Terminal window
sudo apt install apachetop # Sur Debian/Ubuntu
sudo yum install apachetop # Sur CentOS/RHEL
apachetop -f /var/log/apache2/access.log # Spécifiez le chemin vers le fichier de logs

htop

htop est un outil de surveillance système interactif qui affiche l’utilisation des ressources du serveur :

Terminal window
sudo apt install htop # Sur Debian/Ubuntu
sudo yum install htop # Sur CentOS/RHEL
htop

iftop

iftop est un outil qui affiche l’utilisation de la bande passante réseau en temps réel :

Terminal window
sudo apt install iftop # Sur Debian/Ubuntu
sudo yum install iftop # Sur CentOS/RHEL
sudo iftop

Conclusion

Grâce à sa flexibilité, sa robustesse et sa vaste communauté de développeurs, Apache est capable de répondre aux besoins variés des administrateurs systèmes, des développeurs web et des entreprises de toutes tailles. Ce guide a couvert les aspects essentiels de l’administration d’Apache, allant de l’installation et la configuration de base à la sécurisation, l’optimisation des performances et la surveillance.

L’administration d’un serveur Apache ne se termine pas avec son installation et sa configuration initiale. Une maintenance continue est essentielle pour assurer la sécurité et les performances optimales du serveur. Cela inclut la mise à jour régulière des logiciels, la surveillance des logs, l’ajustement des configurations en fonction des besoins changeants et la réponse rapide aux incidents.

Plus d’infos

Pour approfondir vos connaissances et rester à jour avec les dernières pratiques et mises à jour, voici quelques ressources essentielles :

En exploitant ces ressources et en suivant les bonnes pratiques décrites dans ce guide, vous serez bien équipé pour administrer un serveur Apache performant et sécurisé.