Installation et Configuration Apache HTTPD

Cette section décrit l’installation et la configuration complète d’un serveur web Apache (HTTPD) avec SSL. Elle permet de rendre votre serveur accessible sur le réseau et d’héberger des pages web.

Partie 1 — Installation et Configuration Apache

Installation et configuration du serveur web Apache HTTPD

Installation des packages

Installation du serveur Apache ainsi que du module SSL pour HTTPS :

dnf install httpd mod_ssl -y

Vérifier que l’installation s’est bien déroulée :

rpm -qa | grep httpd


Configuration du serveur

Tout d’abord, il faut paramétrer le nom de la machine ainsi que l’adresse d’écoute du serveur web.

Modifier le fichier :

/etc/httpd/conf/httpd.conf

Chercher les lignes suivantes :

Listen 80
#ServerName www.example.com:80

Instructions :

  • Décommenter la ligne ServerName
  • Adapter le nom en fonction de votre configuration réseau (/etc/sysconfig/network)
  • Définir l’écoute sur toutes les interfaces

Configuration finale :

Listen *:80
ServerName web:80


Démarrage du service HTTPD

Démarrage du service Apache :

systemctl start httpd.service --now

Activation automatique au démarrage du système (création du lien symbolique) :

systemctl enable httpd.service --now


Vérification du service

Vérifier que le service fonctionne correctement :

ss -atnp | grep httpd

Si Apache fonctionne correctement, les ports **80 (HTTP)** et **443 (HTTPS)** doivent apparaître en écoute.


Ouverture des ports dans iptables

Pour rendre votre site accessible depuis le réseau, il est nécessaire d’ouvrir les ports 80 et 443. Sans cette étape, votre navigateur affichera une erreur de connexion refusée.

Modifier :

vi /etc/sysconfig/iptables

Ajouter les règles suivantes :

-I INPUT 2 -p tcp --dport 80 -j ACCEPT
-I INPUT 3 -p tcp --dport 443 -j ACCEPT

Appliquer les changements :

systemctl reload iptables

Vérifier les règles :

iptables -nvL


Résultat attendu

Après vérification, vous devez voir apparaître les règles pour les ports HTTP et HTTPS.

IMPORTANT : les 2 lignes en gras ci-dessous doivent absolument être visibles. Ce sont elles qui autorisent l’accès au serveur web.

pkts bytes target  prot opt in out source      destination
  81  5840 ACCEPT  all  --  *   *   0.0.0.0/0  0.0.0.0/0  state RELATED,ESTABLISHED
   0     0 ACCEPT  tcp  --  *   *   0.0.0.0/0  0.0.0.0/0  tcp dpt:80
   0     0 ACCEPT  tcp  --  *   *   0.0.0.0/0  0.0.0.0/0  tcp dpt:443
   0     0 ACCEPT  icmp --  *   *   0.0.0.0/0  0.0.0.0/0
   0     0 ACCEPT  all  --  lo  *   0.0.0.0/0  0.0.0.0/0
   0     0 ACCEPT  tcp  --  *   *   0.0.0.0/0  0.0.0.0/0  state NEW tcp dpt:22
   0     0 REJECT  all  --  *   *   0.0.0.0/0  0.0.0.0/0  reject-with icmp-host-prohibited

Création de la page d’accueil

Créer la première page de votre site web :

vi /var/www/html/index.html

Exemple de contenu :

cc

Attribuer les droits au dossier pour qu’Apache puisse accéder aux fichiers :

chown apache.apache -R /var/www/html


Vérification finale

Tester l’accès au serveur avec curl :

curl 192.168.10.251

Vous devez voir apparaître le contenu de votre page web.


Important

La procédure doit être répétée sur votre second serveur afin de compléter l’infrastructure.

Partie 2 — Configuration HTTPS (SSL/TLS)

Mise en place du chiffrement SSL/TLS pour sécuriser les communications web.

Principe

HTTPS permet de :

  • Chiffrer les échanges entre client et serveur
  • Garantir l’intégrité des données
  • Authentifier le serveur

Le protocole utilise le port 443.

Création d’un certificat auto-signé

Générer un certificat SSL :

openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /etc/pki/tls/private/apache.key \
-out /etc/pki/tls/certs/apache.crt

Configuration Apache HTTPS

Modifier le fichier :

vi /etc/httpd/conf.d/ssl.conf

Adapter les lignes suivantes :

SSLCertificateFile /etc/pki/tls/certs/apache.crt
SSLCertificateKeyFile /etc/pki/tls/private/apache.key

Redémarrer Apache :

systemctl restart httpd

Vérification

Tester l’accès sécurisé :

curl -k https://IP_SERVEUR


Partie 3 — Load Balancing avec HAProxy

Répartition de charge entre plusieurs serveurs web pour améliorer les performances.

Principe

Le Load Balancing permet :

  • Répartir les requêtes clients sur plusieurs serveurs
  • Améliorer les performances
  • Réduire la charge serveur
  • Augmenter la disponibilité

HAProxy agit comme point d’entrée unique.

Installation HAProxy

dnf install haproxy -y

Configuration

Modifier :

vi /etc/haproxy/haproxy.cfg

Exemple de configuration :

frontend http_front
 bind *:80
 default_backend web_servers

backend web_servers
 balance roundrobin
 server web1 192.168.10.251:80 check
 server web2 192.168.10.252:80 check

Démarrage du service

systemctl enable haproxy --now


Partie 4 — Haute Disponibilité avec Keepalived

Mise en place d’une adresse IP virtuelle pour assurer la continuité de service.

Principe

Keepalived permet :

  • Assurer la continuité du service
  • Basculer automatiquement vers un serveur secondaire
  • Utiliser une IP virtuelle partagée (VIP)

Installation

dnf install keepalived -y

Configuration serveur maître

Modifier :

vi /etc/keepalived/keepalived.conf

Exemple :

vrrp_instance VI_1 {
 state MASTER
 interface eth0
 virtual_router_id 51
 priority 101
 advert_int 1

 authentication {
  auth_type PASS
  auth_pass password
 }

 virtual_ipaddress {
  192.168.10.250
 }
}

Démarrer :

systemctl enable keepalived --now

Serveur esclave

Même configuration avec :

state BACKUP
priority 100


Partie 5 — Synchronisation des serveurs

Synchronisation des fichiers web entre les serveurs pour garantir la cohérence des données.

Principe

La synchronisation permet :

  • Maintenir les mêmes fichiers sur plusieurs serveurs
  • Assurer la cohérence des données
  • Faciliter la haute disponibilité

Installation rsync

dnf install rsync -y

Synchronisation manuelle

Depuis le serveur principal :

rsync -avz /var/www/html/ root@192.168.10.252:/var/www/html/

Automatisation avec cron

Éditer :

crontab -e

Ajouter :

*/5 * * * * rsync -az /var/www/html/ root@192.168.10.252:/var/www/html/

Synchronisation toutes les 5 minutes.