Tutorial

Comment installer le serveur web Apache sur CentOS 8

Published on May 15, 2020
Français
Comment installer le serveur web Apache sur CentOS 8

Introduction

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.

Conditions préalables

Vous aurez besoin des éléments suivants pour suivre ce guide :

Étape 1 — Installation d’Apache

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 :

  1. 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 :

  1. sudo firewall-cmd --permanent --add-service=https

Ensuite, rechargez le pare-feu pour appliquer ces nouvelles règles :

  1. sudo firewall-cmd --reload

Une fois le pare-feu rechargé, vous êtes prêt à démarrer le service et à vérifier le serveur web.

Étape 2 — Vérification de votre 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 :

  1. sudo systemctl start httpd

Utilisez la commande suivante pour vérifier si le service s’exécute :

  1. 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 :

  1. 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 :

  1. 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 :

Page Apache par défaut pour 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.

Étape 3 — Gestion du processus Apache

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 :

  1. sudo systemctl stop httpd

Pour démarrer le serveur web lorsqu’il est arrêté, tapez :

  1. sudo systemctl start httpd

Pour arrêter puis redémarrer le service, tapez :

  1. 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 :

  1. 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 :

  1. sudo systemctl disable httpd

Pour réactiver le service de lancement automatique au démarrage, tapez :

  1. 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.

Étape 4 — Configuration des hôtes virtuels (recommandé)

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 :

  1. sudo mkdir -p /var/www/example.com/html

Créez un répertoire supplémentaire pour stocker des fichiers journaux du site :

  1. sudo mkdir -p /var/www/example.com/log

Ensuite, attribuez la propriété du répertoire html avec la variable d’environnement $USER :

  1. 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 :

  1. sudo chmod -R 755 /var/www

Ensuite, créez une page index.html à l’aide de vi ou de votre éditeur favori :

  1. 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 :

/var/www/example.com/html/index.html
<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 :

  1. 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 :

  1. 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 :

/etc/httpd/conf/httpd.conf
...
# 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 :

  1. 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 :

/etc/httpd/sites-available/example.com.conf
<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 :

  1. 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.

Étape 5 — Réglage des autorisations SELinux pour les hôtes virtuels (recommandé)

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.

Ajuster des politiques Apache universellement

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 :

  1. 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.

Ajuster des politiques Apache sur un répertoire

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 :

  1. 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 :

Output
drwxr-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 :

  1. 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 :

  1. 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 :

Output
Relabeled /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 :

  1. sudo ls -dlZ /var/www/example.com/log/

Le résultat reflète le type de contexte mis à jour :

Output
drwxr-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.

Étape 6 — Tester l’hôte virtuel (recommandé)

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 :

  1. 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 :

  1. 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 :

Bravo! L'hôte virtuel example.com fonctionne !

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.

Conclusion

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 8​​​1​​​.

Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.

Learn more about our products

About the authors
Default avatar

Senior Manager, DevEd

Open source advocate and lover of education, culture, and community.



Still looking for an answer?

Ask a questionSearch for more help

Was this helpful?
 
Leave a comment


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!

Try DigitalOcean for free

Click below to sign up and get $200 of credit to try our products over 60 days!

Sign up

Join the Tech Talk
Success! Thank you! Please check your email for further details.

Please complete your information!

Become a contributor for community

Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.

DigitalOcean Documentation

Full documentation for every DigitalOcean product.

Resources for startups and SMBs

The Wave has everything you need to know about building a business, from raising funding to marketing your product.

Get our newsletter

Stay up to date by signing up for DigitalOcean’s Infrastructure as a Newsletter.

New accounts only. By submitting your email you agree to our Privacy Policy

The developer cloud

Scale up as you grow — whether you're running one virtual machine or ten thousand.

Get started for free

Sign up and get $200 in credit for your first 60 days with DigitalOcean.*

*This promotional offer applies to new accounts only.