Un serveur web stocke, traite et distribue des pages web aux visiteurs d'un site web. Il existe pas mal d'options de serveur web Open Source logicielles, mais le serveur HTTP Apache est considéré comme le serveur web le plus utilisé au monde. En effet, outre le fait qu'il soit open-source, son architecture modulaire permet d'étendre ses fonctionnalités en ajoutant des modules pour répondre à différents besoins. Par conséquent, le serveur web est extrêmement robuste.
Si vous cherchez à installer Apache sur un système CentOS 7, ce tutoriel est pour vous. De plus, vous apprendrez à créer des hôtes virtuels afin de pouvoir héberger plusieurs sites web sur un seul serveur HTTP Apache fonctionnant sous CentOS.
Il s'agit d'un tutoriel détaillé axé uniquement sur l'installation d'Apache. Si vous cherchiez le tutoriel sous forme de liste à puces sur la pile LAMP, nous proposons ce guide sur Comment installer Linux, Apache, MySQL, PHP (LAMP) sur CentOS 7 que vous pouvez consulter. Maintenant, commençons !
Prérequis
Comme il s'agit d'un tutoriel pratique, vous devez disposer des éléments suivants :
- Un serveur fonctionnant sous CentOS 7, vous pouvez en créer un sur CloudSigma en quelques étapes simples en suivant ce lien.
- Configurez un utilisateur non-root avec des privilèges sudo sur votre serveur. Ensuite, connectez-vous avec cet utilisateur.
- Configurez un pare-feu de base en suivant les étapes de notre tutoriel sur Configuration d'un pare-feu avec FirewallD sur CentOS 7.
Étape 1 : Installation du serveur HTTP Apache
Vous pouvez trouver Apache dans les dépôts par défaut de CentOS. Par conséquent, l'installation est simple en utilisant le gestionnaire de paquets yum . Depuis la section des prérequis, vous devez être connecté avec l'utilisateur non-root. Exécutez la commande suivante dans votre terminal pour mettre à jour l'index local des paquets Apache httpd :
|
1 |
sudo yum update httpd |
Une fois les paquets mis à jour, saisissez la commande suivante pour installer Apache :
|
1 |
sudo yum install httpd |
Confirmez l'installation et attendez que yum installe Apache et ses dépendances requises.
Si vous avez suivi les étapes du tutoriel sur la Configuration d'un pare-feu avec FirewallD sur CentOS 7 et activé le pare-feu pour le port 80, alors vous êtes prêt. Firewalld est le gestionnaire de pare-feu pour CentOS. Sinon, vous pouvez activer le service http (port 80) de firewalld en saisissant la commande suivante :
|
1 |
sudo firewall-cmd --permanent --add-service=http |
Si vous prévoyez de distribuer du trafic via HTTPS sécurisé, vous pouvez activer le service https (port 443) de firewalld en saisissant la commande suivante :
|
1 |
sudo firewall-cmd --permanent --add-service=https |
Enfin, vous devez recharger firewalld pour que les modifications prennent effet. Voici la commande pour recharger :
|
1 |
sudo firewall-cmd –reload |
À ce stade, vous avez installé et configuré Apache pour distribuer du trafic via HTTP, ou HTTPS selon que vous avez exécuté les commandes ci-dessus.
Étape 2 : Confirmation du fonctionnement du serveur web Apache
Sous CentOS, le processus Apache ne démarre pas automatiquement après l'installation. Pour démarrer manuellement Apache, saisissez la commande suivante :
|
1 |
sudo systemctl start httpd |
Pour vérifier que le service a démarré avec succès, vérifiez le statut en saisissant la commande suivante :
|
1 |
sudo systemctl status httpd |
Si le service est en cours d'exécution, vous devriez voir une sortie similaire à la capture d'écran ci-dessous. Notez le statut actif :

La sortie indique que le service a été démarré avec succès et qu'il est en cours d'exécution. Ensuite, nous devons également tester qu'Apache peut distribuer une page aux internautes. Apache est fourni avec une page par défaut que vous pouvez utiliser pour tester si votre serveur est accessible via Internet.
Vous devrez trouver l'adresse IP publique de votre serveur si vous ne l'avez pas déjà. C'est cette adresse IP que vous utiliserez dans la barre d'adresse de votre navigateur pour demander la page web par défaut d'Apache. Vous pouvez afficher les adresses réseau de l'hôte en saisissant la commande suivante :
|
1 |
hostname –I |
Dans la liste d'adresses que vous obtenez, vous pouvez essayer chacune d'elles dans votre navigateur pour confirmer qu'elles fonctionnent. En option, vous pouvez utiliser curl pour obtenir votre adresse IP à partir de icanhazip.com. La commande ci-dessous affiche votre adresse IP publique telle qu'elle est vue depuis un ordinateur situé sur un autre emplacement Internet :
|
1 |
curl -4 icanhazip.com |
Une fois que vous avez l'adresse IP publique de votre serveur, copiez-la et collez-la dans la barre d'adresse de votre navigateur :
|
1 |
http://your_server_public_ip |
Votre navigateur devrait charger la page web Apache par défaut de CentOS 7 :

Si vous avez pu charger la page web Apache par défaut, cela signifie que votre serveur fonctionne correctement. Si vous faites défiler vers le bas, vous pouvez voir quelques informations de base sur les fichiers Apache et les emplacements des répertoires. Une fois le service installé et fonctionnant correctement, vous devriez pouvoir utiliser les différentes systemctl commandes pour gérer le service.
Étape 3 : Gestion du service Apache
Dans cette section, nous allons vous montrer quelques commandes de base pour la gestion d'Apache. Voici la commande qui arrête le serveur web :
|
1 |
sudo systemctl stop httpd |
Voici la commande pour démarrer le serveur web :
|
1 |
sudo systemctl start httpd |
Ensuite, voici la commande pour redémarrer le serveur web (arrêt et démarrage) :
|
1 |
sudo systemctl restart httpd |
Après cela, nous vous montrerons la commande pour recharger le service Apache. Cette commande est nécessaire lorsque vous effectuez simplement des modifications de configuration. En rechargeant, le processus Apache prendra en compte les modifications de configuration sans couper les connexions, comme cela aurait été le cas si vous aviez redémarré :
|
1 |
sudo systemctl reload httpd |
Selon les configurations par défaut, Apache démarre automatiquement au démarrage du serveur. Si vous souhaitez modifier ce comportement, voici la commande pour désactiver le démarrage du service au démarrage :
|
1 |
sudo systemctl disable httpd |
Pour réactiver le démarrage du service au démarrage, saisissez la commande suivante :
|
1 |
sudo systemctl enable httpd |
Étape 4 : Configuration des hôtes virtuels Apache
Par défaut, Apache is configuré pour héberger et servir un seul site web. Dans la plupart des cas, vous voudrez que votre serveur web serve et héberge plusieurs sites web. Par exemple, vous pouvez avoir des sous-domaines ou vous pouvez vouloir configurer une page de blog pour le site web principal de votre entreprise/organisation. C'est là que les hôtes virtuels Apache entrent en jeu. Les hôtes virtuels Apache vous permettent de configurer votre serveur web pour servir plusieurs sites web. Les hôtes virtuels Apache sont l'équivalent des blocs de serveur dans le serveur Nginx.
Pour ce tutoriel, nous allons vous montrer comment créer un hôte virtuel en utilisant example.com comme domaine. Bien sûr, le domaine example.com ne fonctionnera pas sur Internet, vous devez donc le remplacer par votre domaine réel – les étapes sont les mêmes.
Lorsque vous installez Apache sur CentOS, il installe un hôte virtuel configuré pour servir du contenu à partir du répertoire /var/www/html. Cette conception fonctionne bien si vous hébergez un seul site. Cependant, nous voulons pouvoir héberger plusieurs sites. Nous laisserons le répertoire par défaut /var/www/html et créerons à la place un autre répertoire pour le domaine example.com dans l'emplacement /var/www. La raison pour laquelle nous laissons le répertoire par défaut est qu'il soit servi lorsque les requêtes des clients ne correspondent à aucun autre site que vous avez configuré avec des hôtes virtuels. De plus, si vous souhaitez désactiver les hôtes virtuels que vous avez créés, le répertoire par défaut continuera à servir le trafic.
Tout d'abord, créez un répertoire à l'intérieur de /var/www pour votre nom de domaine. Vous êtes libre de choisir le nom de votre choix. Cependant, il est recommandé de choisir un nom similaire à votre domaine pour vous en souvenir facilement lorsque vous créerez le fichier conf de l'hôte virtuel. Saisissez la commande suivante pour créer le répertoire d'exemple :
|
1 |
sudo mkdir -p /var/www/example |
Saisissez la commande suivante pour créer un dossier supplémentaire qui contiendra les fichiers journaux du site :
|
1 |
sudo mkdir -p /var/www/example/log |
Avec vos répertoires de site web en place, attribuez la propriété du répertoire avec la variable d'environnement $USER en utilisant la commande suivante :
|
1 |
sudo chown -R $USER:$USER /var/www/example |
Exécutez la commande suivante pour vous assurer que la racine de votre site web dispose des autorisations par défaut :
|
1 |
sudo chmod -R 755 /var/www |
Maintenant, créez une page index.html simple à l'aide de nano dans le répertoire example en saisissant la commande suivante :
|
1 |
sudo nano /var/www/example/index.html |
Dans l'éditeur nano, ajoutez l'extrait de code HTML suivant :
|
1 2 3 4 5 6 7 8 |
<html> <head> <title>Bienvenue sur Example.com!</title> </head> <body> <h1>Si vous pouvez voir ce message, cela signifie <em>example.com</em> virtuel hôte est opérationnel!</h1> </body> </html> |
Une fois terminé, enregistrez le fichier en appuyant sur Ctrl O puis appuyez sur ENTRÉE. Vous pouvez maintenant fermer l'éditeur en appuyant sur Ctrl X.
Jusqu'à présent, nous disposons du répertoire de votre site et d'une page web de base pour tester l'hôte virtuel. Ensuite, nous voulons créer les fichiers de configuration de l'hôte virtuel. Les fichiers d'hôte virtuel spécifient les configurations des différents sites que vous souhaitez héberger sur un seul serveur Apache. Ils dirigent les requêtes de nom de domaine définies vers son répertoire spécifique.
Les fichiers d'hôte virtuel sont stockés dans le répertoire /etc/httpd/sites-available. Les fichiers d'hôte virtuel activés sont liés par un lien symbolique depuis le répertoire /etc/httpd/sites-available vers le répertoire /etc/httpd/sites-enabled . Ces deux répertoires ne sont pas créés par défaut dans CentOS, vous devez donc les créer vous-même. Saisissez la commande suivante pour créer les répertoires :
|
1 |
sudo mkdir /etc/httpd/sites-available /etc/httpd/sites-enabled |
Une fois les répertoires en place, demandez à Apache de rechercher les hôtes virtuels dans le répertoire sites-enabled. Vous ferez cela en modifiant le fichier de configuration principal d'Apache. Saisissez la commande suivante pour ouvrir le fichier dans l'éditeur nano :
|
1 |
sudo nano /etc/httpd/conf/httpd.conf |
Nous voulons ajouter une ligne qui demandera à Apache de rechercher des fichiers de configuration supplémentaires dans un répertoire facultatif. Faites défiler jusqu'au bas du fichier et ajoutez la ligne suivante à la fin :
|
1 |
IncludeOptional sites-enabled/*.conf |
Enregistrez le fichier en appuyant sur Ctrl O puis appuyez sur ENTRÉE. Vous pouvez maintenant fermer l'éditeur en appuyant sur Ctrl X. L'étape suivante consiste à créer le fichier d'hôte virtuel dans le répertoire sites-available. Saisissez la commande suivante pour créer et ouvrir le nouveau fichier avec l'éditeur nano :
|
1 |
sudo nano /etc/httpd/sites-available/example.conf |
Dans le fichier ouvert, ajoutez le bloc de configuration suivant. N'oubliez pas de remplacer notre example.com par votre nom de domaine réel, et si vous avez utilisé un nom de répertoire différent dans /var/www/example, mettez-le également à jour de manière appropriée :
|
1 2 3 4 5 6 7 |
<VirtualHost *:80> ServerName www.example.com ServerAlias example.com DocumentRoot /var/www/example ErrorLog /var/www/example/log/error.log CustomLog /var/www/example/log/requests.log combined </VirtualHost> |
Comme vous pouvez le voir, nous avons spécifié le nom de domaine et la racine du document où se trouveront les fichiers à servir pour ce domaine. Nous avons également spécifié l'emplacement du journal des erreurs – cela vous aidera lors du dépannage du serveur.
Une fois que nous avons notre fichier d'hôte virtuel dans le répertoire sites-available, l'étape suivante consiste à activer le fichier en créant un lien symbolique vers le répertoire sites-enabled. Saisissez la commande suivante pour créer le lien symbolique :
|
1 |
sudo ln -s /etc/httpd/sites-available/example.conf /etc/httpd/sites-enabled/example.conf |
Si vous avez suivi les étapes jusqu'à présent, votre hôte virtuel devrait maintenant être prêt à diffuser le contenu de votre site web. Cependant, il reste une vérification supplémentaire à configurer avant que les hôtes virtuels ne commencent à fonctionner. Nous aborderons cela ensuite.
Étape 5 : Ajuster les permissions SELinux pour autoriser les hôtes virtuels
Les distributions Linux, y compris Fedora, RHEL et CentOS sont livrées avec SELinux par défaut. SELinux (Security Enhanced Linux) est une architecture de sécurité pour les systèmes Linux qui restreint et définit la manière dont un serveur doit traiter les requêtes, et comment les utilisateurs doivent interagir avec les sockets, les ports réseau et les répertoires essentiels.
Par défaut, SELinux fonctionne avec la configuration Apache standard. Cependant, avec l'hôte virtuel personnalisé que vous avez créé, y compris un répertoire de journaux personnalisé, une erreur de service sera générée lorsque vous tenterez de redémarrer le service Apache. La solution consiste à modifier les politiques SELinux pour permettre au service Apache d'écrire dans les fichiers nécessaires.
SELinux fait de CentOS un serveur hautement sécurisé. Par conséquent, nous ne recommandons pas de le désactiver complètement. Étant donné que SELinux vous permet de personnaliser votre niveau de sécurité de différentes manières, il est recommandé de ne mettre à jour ou de ne définir des politiques qu'en fonction des besoins de votre environnement.
Vous avez deux options pour mettre à jour les politiques Apache : soit Universellement ou par Répertoire spécifique. La mise à jour des politiques spécifiques à un répertoire est plus sécurisée. C'est donc l'option recommandée.
-
Mise à jour globale des politiques Apache
Vous pouvez modifier la politique Apache de manière universelle, ce qui indiquera à SELinux de traiter tous les processus Apache de manière identique en utilisant le httpd_unified booléen. Gardez à l'esprit que la modification globale des politiques Apache ne vous offrira pas le même niveau de contrôle que si vous le faisiez pour chaque répertoire de manière spécifique. Cependant, cela est plus pratique en matière de maintenance. Exécutez la commande suivante pour mettre à jour les politiques Apache de manière universelle :
|
1 |
sudo setsebool -P httpd_unified 1 |
Définissons ce que font les valeurs de cette commande :
- setsebool – met à jour les valeurs booléennes de SELinux.
- -P tag – met à jour la valeur au démarrage afin que ce changement persiste après les redémarrages.
- httpd_unified – la valeur booléenne qui indiquera à SELinux de traiter tous les processus Apache comme étant du même type. L'utilisation de la valeur 1 l'active.
-
Ajustement des politiques Apache sur un répertoire
Si vous souhaitez un meilleur contrôle sur les répertoires, l'ajustement des politiques Apache par répertoire est la bonne solution. Cependant, cela implique une charge de maintenance supplémentaire. En effet, la politique n'est pas globale. Par conséquent, vous devrez définir manuellement le type de contexte pour tous les nouveaux répertoires de journaux que vous spécifiez dans vos fichiers de configuration d'hôte virtuel.
Avant de mettre à jour la politique, vérifiez d'abord le type de contexte que SELinux a attribué au répertoire /var/www/example/log à l'aide de la commande suivante :
|
1 |
sudo ls -dZ /var/www/example/log/ |
La commande affichera quelque chose comme ce qui suit, ce qui correspond essentiellement au contexte SELinux du répertoire :
|
1 |
drwxr-xr-x. root root unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/example/log/ |
httpd_sys_content_t est le contexte actuel, indiquant à SELinux que le processus Apache est uniquement autorisé à lire les fichiers créés dans ce répertoire. Étant donné que, d'après nos configurations d'hôte virtuel, nous voulons qu'Apache écrive dans les fichiers de journaux du répertoire /var/www/example/log, nous allons modifier cette politique pour permettre à Apache de générer et d'ajouter des données aux fichiers de journaux de l'application web. Le contexte qui permet cela est httpd_log_t. Voici la commande pour mettre à jour le contexte :
|
1 |
sudo semanage fcontext -a -t httpd_log_t "/var/www/example/log(/.*)?" |
Pour appliquer les modifications de la commande ci-dessus et faire en sorte qu'elles persistent après les redémarrages, exécutez la commande suivante :
|
1 |
sudo restorecon -R -v /var/www/example/log |
Définissons ce que fait la commande :
- restorecon – applique les modifications et s'assure qu'elles persistent après les redémarrages.
- option -R – exécutera la commande de manière récursive, mettant à jour tous les fichiers existants pour utiliser le nouveau contexte.
- option -v – affiche les modifications de contexte après l'exécution de la commande. Elle produira quelque chose comme ceci :
|
1 2 |
Sortie: restorecon reset /var/www/example/log context unconfined_u:object_r:httpd_sys_content_t:s0->unconfined_u:object_r:httpd_log_t:s0 |
|
1 |
sudo ls -dZ /var/www/example/log/ |
|
1 |
drwxr-xr-x. root root unconfined_u:object_r:httpd_log_t:s0 /var/www/example.com/log |
Étape 6 : Tester la configuration de l'hôte virtuel
Avant de pouvoir tester l'hôte virtuel, vous devrez redémarrer les services Apache. Voici la commande pour cela :
|
1 |
sudo systemctl restart httpd |
Ensuite, listez le contenu du répertoire de journaux à l'aide de la commande suivante :
|
1 |
ls -lZ /var/www/example/log |
Elle devrait afficher quelque chose comme ceci, montrant qu'Apache a créé les fichiers de journaux :

Si vous avez suivi les étapes jusqu'ici, Apache devrait maintenant être en mesure de servir la page HTML d'exemple lorsque vous visitez votre nom de domaine tel que défini dans votre fichier d'hôte virtuel. Si vous le souhaitez, vous pouvez répéter les étapes 4 et 5 pour configurer des domaines supplémentaires et mettre à jour leurs autorisations SELinux de manière appropriée.
Conclusion
Dans ce tutoriel, nous avons installé Apache, appris à mettre à jour les politiques SELinux pour permettre à Apache d'écrire dans des fichiers de journaux personnalisés, et enfin testé notre configuration pour confirmer qu'elle fonctionne correctement. Grâce à ces bases, vous devriez être en mesure de progresser et de proposer de meilleures applications offrant des expériences plus riches.
Si vous souhaitez explorer une pile Web complète, consultez notre tutoriel sur comment installer la pile LAMP sur CentOS 7.
Bonne informatique !
Commentaires
Aucun commentaire pour l'instant. Soyez le premier.