Comment installer Apache avec un hôte virtuel sur CentOS 8
Le serveur Web Apache est un serveur Web HTTP open source et populaire qui continue de jouir d'une part de marché massive dans le secteur de l'hébergement. Il est livré avec de nombreuses fonctionnalités, notamment des améliorations de modules, une prise en charge multiprotocole, 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 d'hôte virtuel. Au moment de la rédaction de ce didacticiel, la dernière version d'Apache est Apache 2.2.43.
Installation du serveur Web Apache
Pour commencer, mettez d'abord à jour votre liste de packages système CentOS 8 ou RHEL 8 à l'aide de 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 un tableau d'informations telles que la version, la date de sortie, la version et l'architecture du package.
Pour démarrer le service Web HTTP Apache, 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
À partir du résultat, l'état « actif » en vert indique que le serveur Web Apache est opérationnel.
Pour dissiper tout doute sur le fonctionnement du serveur Web, demandez une page de test à Apache en parcourant 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é sur le cloud, vous pouvez obtenir l'adresse IP publique en exécutant la commande curl.
curl ifconfig.me
OR
curl -4 icanhazip.com
Lorsque vous parcourez l’adresse IP du serveur, la page Web suivante devrait s’afficher.
Il s'agit d'une confirmation sûre que le serveur Web est en cours d'exécution.
Gestion du serveur Web Apache
Une fois Apache installé et exécuté, 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, exécutez :
sudo systemctl start httpd
Si vous avez apporté des modifications à l'un de ses fichiers de configuration et que vous devez redémarrer pour appliquer les modifications, exécutez la commande :
sudo systemctl restart httpd
Le redémarrage du service entraîne généralement une interruption du service. Une meilleure alternative consiste simplement à recharger sans aucune interruption de la connexion.
sudo systemctl reload httpd
Pour démarrer automatiquement le serveur Web Apache au démarrage ou au redémarrage, exécutez la commande ci-dessous. Cela garantira qu'Apache démarre automatiquement sans votre intervention.
sudo systemctl enable httpd
Si vous choisissez de ne pas démarrer le service automatiquement au démarrage, exécutez :
sudo systemctl disable httpd
Configuration des hôtes virtuels Apache
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 requise. Mais si vous envisagez d'héberger plusieurs domaines sur votre serveur, vous devez alors configurer des hôtes virtuels Apache.
Un hôte virtuel est un fichier distinct contenant des configurations qui vous permettent de configurer un domaine distinct de celui par défaut. Pour ce guide, nous allons mettre en place un hôte virtuel pour le domaine crazytechgeek.info.
L'hôte virtuel par défaut se trouve dans le répertoire /var/www/html
. Cela ne fonctionne que pour un seul site. Pour créer un hôte virtuel distinct pour notre domaine, nous allons créer une autre structure de répertoires dans le répertoire /var/www
comme indiqué.
sudo mkdir -p /var/www/crazytechgeek.info/html
De plus, vous pouvez également créer un répertoire pour stocker les fichiers journaux.
sudo mkdir -p /var/www/crazytechgeek.info/log
Ensuite, modifiez les autorisations du fichier en utilisant la variable d'environnement $USER
comme indiqué.
sudo chown -R $USER:$USER /var/www/crazytechgeek.info/html
Ajustez également les autorisations du répertoire webroot comme indiqué.
sudo chmod -R 755 /var/www
Ensuite, créez un exemple de fichier index.html
comme indiqué.
sudo vim /var/www/crazytechgeek.info/html/index.html
Appuyez sur la lettre 'i'
sur le clavier et collez un exemple de contenu comme indiqué qui sera affiché sur le navigateur Web lors du test de l'hôte virtuel.
<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.
Une fois l’exemple de fichier d’index et le répertoire de site créés, vous pouvez maintenant continuer et créer le fichier hôte virtuel. Le fichier d'hôte virtuel contiendra la configuration du site de votre domaine et indiquera à Apache comment il répondra aux demandes des clients.
Le fichier d'hôte virtuel contiendra la configuration du site de votre domaine et indiquera à Apache comment il répondra aux demandes des clients. Mais pour 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ù localiser l'hôte virtuel dans le répertoire activé pour les sites.
sudo vim /etc/httpd/conf/httpd.conf
Ajoutez la ligne comme indiqué à la toute fin du fichier de configuration.
IncludeOptional sites-enabled/*.conf
Sauvegarder et quitter.
Créez maintenant un fichier 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.
Activez maintenant le fichier 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
Ajustement des autorisations SELinux pour les hôtes virtuels
CentOS 8 et RHEL 8 sont livrés avec SELinux qui est un module de sécurité destiné à renforcer la sécurité du système Linux. Puisque vous avez configuré un répertoire log personnalisé à l'étape précédente, vous devez mettre à jour certaines stratégies SELinux pour demander au serveur Web Apache d'écrire dans le répertoire.
Il existe 2 approches pour ajuster les politiques SELinux Apache : Ajuster les politiques d'ajustement de manière universelle et les politiques sur un répertoire. Ce dernier est préféré parce qu’il est plus préféré.
Ajustement des politiques SELinux sur un répertoire
La modification des autorisations SELinux pour le répertoire des journaux vous donne un contrôle absolu sur les politiques du serveur Web Apache. Cette méthode est assez longue et nécessite que vous configuriez 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 des journaux par SELinux :
sudo ls -dlZ /var/www/crazytechgeek.info/log/
Le résultat devrait être similaire à ce que nous avons ci-dessous.
À partir du résultat, le contexte défini est httpd_sys_content_t. Cela indique que le serveur Web ne peut lire que les fichiers du répertoire des journaux. Vous devez modifier ce contexte en httpd_log_t pour permettre à Apache de générer et d'ajouter des entrées de journal au répertoire.
Par conséquent, exécutez la commande :
sudo semanage fcontext -a -t httpd_log_t "/var/www/crazytechgeek.info/log(/.*)?"
Si vous obtenez l’erreur ci-dessous « semanage : commande introuvable ».
Cela implique que les packages qui fournissent la commande semanage ne sont pas installés. Pour corriger cette erreur, vous devez installer ces packages. Mais d’abord, vérifiez quels packages fournissent la commande semanage en exécutant :
sudo dnf whatprovides /usr/sbin/semanage
Le résultat nous donne le package qui fournit le semanage, qui est policycoreutils-python-utils.
Installez maintenant le package comme indiqué à l'aide du gestionnaire de packages DNF.
sudo dnf install policycoreutils-python-utils
La commande permettant de 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/
Assurez-vous de noter que le type de contexte a été modifié en httpd_log_t
comme indiqué dans le résultat.
Redémarrez Apache pour que les modifications soient appliquées.
sudo systemctl restart httpd
Vous pouvez maintenant confirmer si Apache enregistre les fichiers journaux dans le répertoire des journaux en répertoriant son contenu comme indiqué :
ls -l /var/www/crazytechgeek.info/log/
Vous devriez pouvoir voir deux fichiers journaux comme indiqué : le journal des erreurs et les fichiers journaux des demandes.
Test de l'hôte virtuel Apache
Enfin, vous devez vous assurer que le serveur Web Apache sert votre fichier hôte virtuel. Pour cela, ouvrez votre navigateur et accédez à l’adresse IP ou au nom de domaine de votre serveur :
http://domain-name
Parfait! Cela indique que tout s'est bien passé et que notre hôte virtuel est 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 hôte virtuel pour diffuser 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.