Le serveur web Apache est un serveur web HTTP open source et populaire qui continue de bénéficier d’une énorme part de marché dans l’industrie de l’hébergement. Il est livré avec de nombreuses fonctionnalités, notamment des améliorations de modules, une prise en charge multi-protocole, une configuration simplifiée et une prise en charge multilingue, pour n’en citer que quelques-unes.
Lire aussi: Comment installer Nginx sur CentOS 8
Dans ce guide, nous vous guiderons dans l’installation du serveur web Apache sur CentOS 8 et RHEL 8 avec un environnement de virtual hosts. Au moment de la rédaction de ce tutoriel, la dernière version d’Apache est Apache 2.2.43.
Installation du serveur web Apache
Pour commencer, mettez à jour la liste des packages de votre système CentOS 8 ou RHEL 8 en utilisant la commande dnf suivante.
$ sudo dnf update
Une fois la mise à jour terminée, installez le serveur web Apache en exécutant la commande suivante.
$ sudo dnf install httpd
Une fois installé, vous pouvez vérifier la version d’Apache en exécutant la commande rpm.
$ rpm -qi httpd

La commande imprime une série d’informations telles que la version, la date de publication, la construction et l’architecture du package.
Pour démarrer le service web Apache HTTP, exécutez la commande systemctl.
$ sudo systemctl start httpd
Pour confirmer si le service est en cours d’exécution, exécutez.
$ sudo systemctl status httpd

D’après la sortie, le statut ‘actif‘ en vert indique que le serveur web Apache est opérationnel.
Pour dissiper tout doute quant au fonctionnement du serveur web, demandez une page de test à Apache en naviguant vers l’adresse IP ou le nom de domaine de votre serveur comme indiqué.
http://server-ip
Vous pouvez obtenir l’adresse IP de votre serveur en exécutant la commande ifconfig. Si votre serveur est hébergé dans le cloud, vous pouvez obtenir l’IP publique en exécutant la commande curl.
$ curl ifconfig.me OR $ curl -4 icanhazip.com

Lorsque vous naviguez vers l’adresse IP du serveur, vous devriez obtenir la page web suivante affichée.

C’est une confirmation sûre que le serveur web est en cours d’exécution.
Gestion du serveur web Apache
Avec Apache installé et en cours d’exécution, vous pouvez utiliser l’outil d’inspection systemctl pour gérer Apache.
Par exemple, pour arrêter Apache, exécutez la commande :
$ sudo systemctl stop httpd
Pour redémarrer le service une fois de plus, exécutez :
$ sudo systemctl start httpd
Redémarrer le service entraîne généralement une interruption de service. Une meilleure alternative est de simplement recharger sans aucune interruption de la connexion.
$ sudo systemctl restart httpd
Pour démarrer automatiquement le serveur web Apache lors du démarrage ou du redémarrage, exécutez la commande ci-dessous. Cela garantira que Apache démarre automatiquement sans votre intervention.
$ sudo systemctl reload httpd
Si vous choisissez de ne pas démarrer le service automatiquement au démarrage, exécutez :
$ sudo systemctl enable httpd
Configuration des hôtes virtuels Apache
$ sudo systemctl disable httpd
Par défaut, le serveur web Apache est configuré pour servir ou héberger un seul site web. Si vous souhaitez héberger un seul site web, cette étape n’est pas nécessaire. Mais si vous prévoyez d’héberger plusieurs domaines sur votre serveur, vous devez alors configurer les hôtes virtuels Apache.
L’hôte virtuel par défaut est situé dans le répertoire /var/www/html
. Cela fonctionne uniquement pour un seul site. Pour créer un hôte virtuel séparé pour notre domaine, nous allons créer une autre structure de répertoire dans le répertoire /var/www
comme indiqué.
A virtual host is a separate file that contains configurations that allow you to set up a separate domain from the default one. For this guide, we will set up a virtual host for the domain crazytechgeek.info.
De plus, vous pouvez également créer un répertoire pour stocker les fichiers journaux.
$ sudo mkdir -p /var/www/crazytechgeek.info/html
Ensuite, modifiez les autorisations de fichier en utilisant la variable d’environnement $USER
comme indiqué.
$ sudo mkdir -p /var/www/crazytechgeek.info/log
Ajustez également les autorisations du répertoire racine du site Web comme indiqué.
$ sudo chown -R $USER:$USER /var/www/crazytechgeek.info/html
Ensuite, créez un fichier index.html
exemple comme indiqué.
$ sudo chmod -R 755 /var/www
Appuyez sur la lettre 'i'
sur le clavier et collez un contenu d’exemple comme indiqué qui sera affiché sur le navigateur Web lors du test de l’hôte virtuel.
$ sudo vim /var/www/crazytechgeek.info/html/index.html
Enregistrez et quittez le fichier de configuration.
<html> <head> <title>Welcome to crazytechgeek.info!</title> </head> <body> <h1>Success! The crazytechgeek.info virtual host is up and perfectly working!</h1> </body> </html>
Enregistrez et quittez le fichier de configuration.
Avec le fichier d’index d’échantillon et le répertoire du site créés, vous pouvez maintenant procéder et créer le fichier de l’hôte virtuel. Le fichier de l’hôte virtuel contiendra la configuration du site de votre domaine et indiquera à Apache comment il répondra aux demandes des clients.
Le fichier de l’hôte virtuel contiendra la configuration du site de votre domaine et indiquera à Apache comment il répondra aux demandes des clients. Mais avant de continuer, vous devez créer 2 répertoires : les répertoires sites-available
et sites-enabled
.
Le fichier de l’hôte virtuel sera stocké dans le répertoire sites-available
tandis que le répertoire sites-enabled
contiendra le lien symbolique vers l’hôte virtuel.
Créez les deux répertoires comme indiqué.
$ sudo mkdir /etc/httpd/sites-available $ sudo mkdir /etc/httpd/sites-enabled
Ensuite, modifiez le fichier de configuration principal du serveur web Apache et indiquez à Apache où se trouve l’hôte virtuel dans le répertoire sites-enabled.
$ sudo vim /etc/httpd/conf/httpd.conf
Ajoutez la ligne comme indiqué à la toute fin du fichier de configuration.
IncludeOptional sites-enabled/*.conf
Enregistrez et quittez.
Maintenant, créez un fichier d’hôte virtuel comme indiqué :
$ sudo vim /etc/httpd/sites-available/crazytechgeek.info
Collez le contenu ci-dessous et remplacez crazytechgeek.info
par votre propre nom de domaine.
<VirtualHost *:80> ServerName www.crazytechgeek.info ServerAlias crazytechgeek.info DocumentRoot /var/www/crazytechgeek.info/html ErrorLog /var/www/crazytechgeek.info/log/error.log CustomLog /var/www/crazytechgeek.info/log/requests.log combined </VirtualHost>
Enregistrez et quittez le fichier.
Maintenant, activez le fichier d’hôte virtuel en créant un lien symbolique dans le répertoire sites-enabled
.
$ sudo ln -s /etc/httpd/sites-available/crazytechgeek.info.conf /etc/httpd/sites-enabled/crazytechgeek.info.conf
Réglage des autorisations SELinux pour les hôtes virtuels
CentOS 8 et RHEL 8 sont livrés avec SELinux, un module de sécurité pour renforcer la sécurité du système Linux. Puisque vous avez configuré un répertoire de logs personnalisé à l’étape précédente, vous devez mettre à jour certaines politiques SELinux pour instruire le serveur web Apache d’écrire dans le répertoire.
Il existe 2 approches pour ajuster les politiques Apache SELinux : Ajuster les politiques universellement & les politiques sur un répertoire. La dernière est préférée car elle est plus spécifique.
Ajustement des politiques SELinux sur un répertoire
Modifier les permissions SELinux pour le répertoire de logs vous donne un contrôle absolu sur les politiques du serveur web Apache. Cette méthode est assez longue et vous oblige à configurer manuellement le type de contexte pour les répertoires supplémentaires spécifiés dans le fichier de configuration de l’hôte virtuel.
Avant de commencer, confirmez d’abord le type de contexte attribué au répertoire de logs par SELinux :
$ sudo ls -dlZ /var/www/crazytechgeek.info/log/
La sortie devrait être similaire à ce que nous avons ci-dessous.

D’après la sortie, le contexte défini est httpd_sys_content_t. Cela indique que le serveur web ne peut que lire les fichiers dans le répertoire de logs. Vous devez changer ce contexte en httpd_log_t pour permettre à Apache de générer et d’ajouter des entrées de logs dans le répertoire.
Par conséquent, exécutez la commande :
$ sudo semanage fcontext -a -t httpd_log_t "/var/www/crazytechgeek.info/log(/.*)?"
Si vous rencontrez l’erreur suivante : « semanage: command not found« .
Cela signifie que les paquets qui fournissent la commande semanage ne sont pas installés. Pour corriger cette erreur, vous devez installer ces paquets. Mais d’abord, vérifiez quels paquets fournissent la commande semanage en exécutant :
$ sudo dnf whatprovides /usr/sbin/semanage
La sortie nous donne le paquet qui fournit la commande semanage, qui est policycoreutils-python-utils.
Installez maintenant le paquet comme indiqué en utilisant le gestionnaire de paquets DNF.
$ sudo dnf install policycoreutils-python-utils
La commande pour changer le contexte devrait maintenant fonctionner.
$ sudo semanage fcontext -a -t httpd_log_t "/var/www/crazytechgeek.info/log(/.*)?"
Pour enregistrer les modifications et les rendre persistantes, exécutez la commande restorecon comme indiqué :
$ sudo restorecon -R -v /var/www/crazytechgeek.info/log
Vous pouvez confirmer les modifications en exécutant à nouveau la commande :
$ sudo ls -dlZ /var/www/crazytechgeek.info/log/

Notez bien que le type de contexte a changé en httpd_log_t
comme on le voit dans la sortie.
Redémarrez Apache pour appliquer les modifications.
$ sudo systemctl restart httpd
Vous pouvez maintenant vérifier si Apache enregistre les fichiers journaux dans le répertoire de logs en listant son contenu comme indiqué :
$ ls -l /var/www/crazytechgeek.info/log/
Vous devriez être en mesure de voir deux fichiers journaux comme indiqué : fichier journaux d’erreurs et fichier journaux de requêtes.

Test d’hôte virtuel Apache
Enfin, vous devez vous assurer que le serveur web Apache sert votre fichier d’hôte virtuel. Pour ce faire, ouvrez votre navigateur et allez à l’adresse IP de votre serveur ou nom de domaine :
http://domain-name

Parfait! Cela indique que tout s’est bien passé et que notre hôte virtuel est bien servi comme prévu.
Conclusion
Dans ce guide, nous avons appris comment installer le serveur web Apache sur CentOS 8 et RHEL 8 et également comment configurer un fichier d’hôte virtuel pour servir du contenu pour un domaine supplémentaire. N’hésitez pas à configurer plusieurs fichiers d’hôte virtuel comme bon vous semble pour accueillir des domaines supplémentaires.
Si vous souhaitez mettre en place une pile d’hébergement complète, je vous recommande d’installer une pile LAMP sur CentOS 8.
Source:
https://www.tecmint.com/install-apache-with-virtual-host-on-centos-8/