Le serveur HTTP Apache est le serveur web le plus utilisé au monde. Il offre de nombreuses fonctionnalités puissantes, notamment des modules à chargement dynamique, une prise en charge robuste des médias et une intégration poussée avec d’autres logiciels populaires.
En suivant ce guide, vous allez installer un serveur web Apache avec des hôtes virtuels sur votre serveur CentOS 8.
Vous aurez besoin des éléments suivants pour suivre ce guide :
Apache est disponible dans les référentiels de logiciels par défaut de CentOS, ce qui signifie que vous pouvez l’installer avec le gestionnaire de paquets dnf
.
En tant qu’utilisateur non root sudo configuré dans les conditions préalables, installez le package Apache :
- sudo dnf install httpd
Après avoir confirmé l’installation, dnf
installera Apache et toutes les dépendances requises.
En réalisant l’étape 4 du guide Configuration initiale du serveur avec CentOS 8 mentionné dans la section conditions préalables, vous auvez déjà installé firewalld
sur votre serveur pour répondre aux demandes sur HTTP.
Si vous prévoyez également configurer Apache pour présenter du contenu sur HTTPS, vous devez également ouvrir le port 443
en activant le service https
:
- sudo firewall-cmd --permanent --add-service=https
Ensuite, rechargez le pare-feu pour appliquer ces nouvelles règles :
- sudo firewall-cmd --reload
Une fois le pare-feu rechargé, vous êtes prêt à démarrer le service et à vérifier le serveur web.
Une fois l’installation terminée, Apache ne démarre pas automatiquement sur CentOS. Par conséquent, vous devez démarrer le processus Apache manuellement :
- sudo systemctl start httpd
Utilisez la commande suivante pour vérifier si le service s’exécute :
- sudo systemctl status httpd
Le statut deviendra actif
une fois que le service sera en cours d’exécution :
Output● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disa>
Active: active (running) since Thu 2020-04-23 22:25:33 UTC; 11s ago
Docs: man:httpd.service(8)
Main PID: 14219 (httpd)
Status: "Running, listening on: port 80"
Tasks: 213 (limit: 5059)
Memory: 24.9M
CGroup: /system.slice/httpd.service
├─14219 /usr/sbin/httpd -DFOREGROUND
├─14220 /usr/sbin/httpd -DFOREGROUND
├─14221 /usr/sbin/httpd -DFOREGROUND
├─14222 /usr/sbin/httpd -DFOREGROUND
└─14223 /usr/sbin/httpd -DFOREGROUND
...
Comme l’indique ce résultat, le démarrage du service s’est fait avec succès. Cependant, la meilleure façon de le tester consiste à demander une page à Apache.
Vous pouvez accéder à la page d’accueil par défaut d’Apache pour confirmer que le logiciel fonctionne correctement grâce à votre adresse IP. Si vous ne connaissez pas l’adresse IP de votre serveur, vous pouvez l’obtenir de plusieurs façons différentes à partir de la ligne de commande.
Saisissez q
pour revenir à l’invite de commandes, puis tapez :
- hostname -I
Cette commande affichera toutes les adresses réseau de l’hôte. Vous récupérerez donc quelques adresses IP séparées par des espaces. Vous pouvez essayer chacune d’elles dans votre navigateur web pour déterminer si elles fonctionnent bien.
Sinon, vous pouvez utiliser curl
pour demander votre IP à partir icanhazip.com
, qui vous donnera votre adresse IPv4 publique lue à partir d’un autre emplacement sur Internet :
- curl -4 icanhazip.com
Une fois que vous avez l’adresse IP de votre serveur, saisissez-la dans la barre d’adresse de votre navigateur :
http://your_server_ip
Vous verrez la page web Apache par défaut CentOS 8 :
Cette page indique qu’Apache fonctionne correctement. Elle contient également des informations de base sur les fichiers Apache et les emplacements de répertoires importants.
Maintenant que le service est installé et fonctionne correctement, vous pouvez utiliser différentes commandes systemctl pour gérer le service.
Pour arrêter votre serveur Web, tapez :
- sudo systemctl stop httpd
Pour démarrer le serveur web lorsqu’il est arrêté, tapez :
- sudo systemctl start httpd
Pour arrêter puis redémarrer le service, tapez :
- sudo systemctl restart httpd
Si vous procédez uniquement à des modifications de configuration, il se peut qu’Apache recharge souvent sans interrompre les connexions. Pour ce faire, utilisez cette commande :
- sudo systemctl reload httpd
Par défaut, Apache est configuré pour un lancement automatique au démarrage du serveur. Si ce n’est pas ce que vous souhaitez, désactivez ce comportement en tapant :
- sudo systemctl disable httpd
Pour réactiver le service de lancement automatique au démarrage, tapez :
- sudo systemctl enable httpd
Désormais, Apache démarrera automatiquement au redémarrage du serveur.
La configuration par défaut d’Apache permettra à votre serveur d’accueillir un seul site Web. Si vous prévoyez d’accueillir plusieurs domaines sur votre serveur, vous devez configurer des hôtes virtuels sur votre serveur web Apache.
Lorsque vous utilisez le serveur Web Apache, vous pouvez utiliser des hôtes virtuels (si vous êtes plus habitué à utiliser Nginx, ils sont similaires aux blocs de serveur) pour encapsuler les détails de configuration et héberger plusieurs domaines à partir d’un seul serveur. Au cours de cette étape, nous allons configurer un domaine que l’on nommera example.com
, mais vous devez le remplacer par votre propre nom de domaine. Si vous configurez un nom de domaine avec DigitalOcean, veuillez consulter notre Documentation de mise en réseau.
Apache sur CentOS est doté d’un hôte virtuel activé par défaut qui est configuré pour servir des documents à partir du répertoire /var/www/html
. Même si cela fonctionne bien pour un seul site, cela peut devenir ingérable si vous hébergez plusieurs sites. Au lieu de modifier /var/www/html
, vous allez créer une structure de répertoire au sein de /var/www
pour le site example.com
, en laissant/var/www/html
en place comme répertoire par défaut à servir si une demande du client ne correspond à aucun autre site.
Créez le répertoire html
de example.com
de la manière suivante, en utilisant l’indicateur -p
pour créer tout répertoire parent nécessaire :
- sudo mkdir -p /var/www/example.com/html
Créez un répertoire supplémentaire pour stocker des fichiers journaux du site :
- sudo mkdir -p /var/www/example.com/log
Ensuite, attribuez la propriété du répertoire html
avec la variable d’environnement $USER
:
- sudo chown -R $USER:$USER /var/www/example.com/html
Assurez-vous que les autorisations par défaut de votre racine Web sont bien configurées :
- sudo chmod -R 755 /var/www
Ensuite, créez une page index.html
à l’aide de vi
ou de votre éditeur favori :
- sudo vi /var/www/example.com/html/index.html
Appuyez sur i
pour passer en mode INSERT
et ajoutez l’exemple de HTML suivant au fichier :
<html>
<head>
<title>Welcome to Example.com!</title>
</head>
<body>
<h1>Success! The example.com virtual host is working!</h1>
</body>
</html>
Sauvegardez et fermez le fichier en appuyant sur ESC
, en saisissant :wq
et en appuyant sur ENTRÉE
.
Maintenant que le répertoire de votre site et l’exemple de fichier d’index sont en place, vous êtes pratiquement prêt à créer les fichiers d’hôte virtuel. Les fichiers d’hôtes virtuels spécifient la configuration de vos autres sites et indiquent au serveur web Apache comment répondre aux diverses demandes de domaine.
Avant de créer vos hôtes virtuels, vous devez créer un répertoire sites-available
dans lequel les stocker. Vous devez également créer le répertoire sites-enabled
, qui indique à Apache qu’un hôte virtuel est prêt à servir votre audience. Le répertoire sites-enabled
contiendra des liens symboliques aux hôtes virtuels que nous voulons publier. Créez les deux répertoires avec la commande suivante :
- sudo mkdir /etc/httpd/sites-available /etc/httpd/sites-enabled
Ensuite, vous devez demander à Apache de rechercher des hôtes virtuels dans le répertoire sites-enabled
. Pour ce faire, modifiez le fichier de configuration principal d’Apache à l’aide de vi ou de votre éditeur de texte favori, puis ajoutez une ligne indiquant un répertoire facultatif pour les fichiers de configuration supplémentaires :
- sudo vi /etc/httpd/conf/httpd.conf
Appuyez sur G
majuscule pour aller à la fin du fichier. Appuyez ensuite sur i
pour passer en mode INSERT
et ajoutez la ligne suivante à la fin du fichier :
...
# Supplemental configuration
#
# Load config files in the "/etc/httpd/conf.d" directory, if any.
IncludeOptional conf.d/*.conf
IncludeOptional sites-enabled/*.conf
Sauvegardez et fermez le fichier une fois que vous avez ajouté cette ligne. Maintenant que vos répertoires d’hôte virtuel sont prêts, vous devez créer votre fichier d’hôte virtuel.
Commencez par créer un nouveau fichier dans le répertoire sites-available
:
- sudo vi /etc/httpd/sites-available/example.com.conf
Ajoutez-y le bloc de configuration suivant, et remplacez le domaine example.com
par votre nom de domaine :
<VirtualHost *:80>
ServerName www.example.com
ServerAlias example.com
DocumentRoot /var/www/example.com/html
ErrorLog /var/www/example.com/log/error.log
CustomLog /var/www/example.com/log/requests.log combined
</VirtualHost>
Cette opération indiquera directement à Apache où trouver la racine qui contient les documents Web accessibles au public. Elle indique également à quel endroit Apache doit stocker les journaux d’erreurs et de demandes pour le site en question.
Enregistrez et fermez le fichier lorsque vous avez terminé.
Maintenant que vous avez créé les fichiers hôtes virtuels, vous devez les activer pour qu’Apache puisse les présenter à votre audience. Pour ce faire, créez une liaison symbolique pour chaque hôte virtuel dans le répertoire sites-enabled
:
- sudo ln -s /etc/httpd/sites-available/example.com.conf /etc/httpd/sites-enabled/example.com.conf
Votre hôte virtuel est maintenant configuré et prêt à fournir du contenu. Avant de redémarrer le service Apache, assurez-vous que SELinux a les bonnes politiques en place pour vos hôtes virtuels.
SELinux est un module de sécurité du noyau Linux qui apporte une sécurité renforcée aux systèmes Linux. CentOS 8 est équipé de SELinux configuré pour fonctionner avec la configuration Apache par défaut. Puisque vous avez modifié la configuration par défaut en configurant un répertoire de journaux personnalisé dans le fichier de configuration des hôtes virtuels, une erreur apparaîtra si vous essayez de démarrer le service Apache. Pour résoudre ce problème, vous devez mettre à jour les politiques SELinux pour permettre à Apache d’écrire dans les fichiers nécessaires.
Il existe différentes façons de définir des politiques en fonction des besoins de votre environnement, car SELinux vous permet de personnaliser votre niveau de sécurité. Cette étape couvrira les deux méthodes d’ajustement des politiques Apache : universellement et sur un répertoire spécifique. L’ajustement de politiques sur des répertoires est plus sûr et nous vous recommandons donc d’utiliser cette approche.
La configuration universelle de politique Apache demandera à SELinux de traiter tous les processus Apache de manière identique en utilisant le booléen httpd_unified
. Bien que cette approche soit plus pratique, vous n’aurez pas le même niveau de contrôle qu’une approche qui se concentre sur une politique de fichier ou de répertoire.
Exécutez la commande suivante pour définir une politique Apache universelle :
- sudo setsebool -P httpd_unified 1
La commande setsebool
modifie les valeurs booléennes de SELinux. L’indicateur -P
mettra à jour la valeur de démarrage, ce qui rend cette modification persistante lors des redémarrages. httpd_unified
est la valeur booléenne qui indiquera à SELinux de traiter tous les processus Apache comme un seul et même type. Vous l’avez donc activé avec une valeur de 1
.
La configuration individuelle des autorisations SELinux pour le répertoire /var/www/example.com/log
vous donnera plus de contrôle sur vos politiques Apache. Cependant, cela nécessitera éventuellement plus de maintenance. Étant donné que cette option ne définit pas universellement les stratégies, vous devrez définir manuellement le type de contexte pour tout nouveau répertoire de journaux spécifié dans vos configurations d’hôte virtuel.
Tout d’abord, vérifiez le type de contexte que SELinux a donné au répertoire /var/www/example.com/log
:
- sudo ls -dlZ /var/www/example.com/log/
Cette commande répertorie et imprime le contexte SELinux du répertoire. Vous recevrez un résultat similaire à celui qui suit :
Outputdrwxr-xr-x. 2 root root unconfined_u:object_r:httpd_sys_content_t:s0 6 Apr 23 23:51 /var/www/example.com/log/
Le contexte actuel est httpd_sys_content_t
, qui indique à SELinux que le processus Apache peut uniquement lire les fichiers créés dans ce répertoire. Dans ce tutoriel, vous allez remplacer le type de contexte du répertoire /var/www/example.com/log
par httpd_log_t
. Ce type permettra à Apache de générer et d’ajouter des fichiers journaux d’application Web :
- sudo semanage fcontext -a -t httpd_log_t "/var/www/example.com/log(/.*)?"
Ensuite, utilisez la commande restorecon
pour appliquer ces modifications et les conserver lors des redémarrages :
- sudo restorecon -R -v /var/www/example.com/log
L’indicateur -R
exécute cette commande récursivement, ce qui signifie qu’il mettra à jour tous les fichiers existants pour qu’ils utilisent le nouveau contexte. L’indicateur -v
affichera les changements de contexte que la commande a effectué. Vous recevrez le résultat suivant, qui confirmera les modifications :
OutputRelabeled /var/www/example.com/log from unconfined_u:object_r:httpd_sys_content_t:s0 to unconfined_u:object_r:httpd_log_t:s0
Vous pouvez lister les contextes une fois de plus pour voir les changements :
- sudo ls -dlZ /var/www/example.com/log/
Le résultat reflète le type de contexte mis à jour :
Outputdrwxr-xr-x. 2 root root unconfined_u:object_r:httpd_log_t:s0 6 Apr 23 23:51 /var/www/example.com/log/
Maintenant que le réportoire /var/www/example.com/log
utilise le type httpd_log_t
, vous êtes prêt à tester la configuration de votre hôte virtuel.
Une fois le contexte SELinux mis à jour avec l’une des méthodes, Apache pourra écrire dans le répertoire /var/www/example.com/log
. Vous pouvez maintenant redémarrer le service Apache :
- sudo systemctl restart httpd
Répertoriez le contenu du répertoire /var/www/example.com/log
pour voir si Apache a créé les fichiers journaux :
- ls -lZ /var/www/example.com/log
Vous recevrez une confirmation qu’Apache a pu créer les fichiers error.log
et requests.log
spécifiés dans la configuration de l’hôte virtuel :
Output-rw-r--r--. 1 root root system_u:object_r:httpd_log_t:s0 0 Apr 24 00:06 error.log
-rw-r--r--. 1 root root system_u:object_r:httpd_log_t:s0 0 Apr 24 00:06 requests.log
Maintenant que vous avez configuré votre hôte virtuel et mis à jour les autorisations SELinux, Apache présentera désormais votre nom de domaine. Vous pouvez le vérifer en allant sur http://example.com
où vous devriez voir quelque chose similaire à ceci :
Cela confirme que votre hôte virtuel est correctement configuré et présente le contenu. Répétez les étapes 4 et 5 pour créer de nouveaux hôtes virtuels avec des autorisations SELinux pour des domaines supplémentaires.
Dans ce tutoriel, vous avez installé et géré le serveur web Apache. Maintenant que votre serveur Web est installé, vous disposez de nombreuses options pour le type de contenu que vous voulez présenter et les technologies que vous souhaitez utiliser pour créer une expérience plus riche.
Si vous souhaitez construire une pile d’applications plus complète, consultez cet article sur la manière de configurer une pile LAMP sur on CentOS 81.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!
Sign up for Infrastructure as a Newsletter.
Working on improving health and education, reducing inequality, and spurring economic growth? We'd like to help.
Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.