Tutorial

Comment installer le serveur Web Apache sur CentOS 8 [Démarrage rapide]

CentOSApacheQuickstartCentOS 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. Pour une version plus détaillée de ce tutoriel, veuillez vous référer à Comment installer le serveur Web Apache sur 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 :

  • sudo dnf install httpd

Après avoir confirmé l'installation, dnf installera Apache et toutes les dépendances requises.

Étape 2 – Réglage du pare-feu

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.

Étape 3 - 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 :

  • sudo systemctl start httpd

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

  • sudo systemctl status httpd

Le statut deviendra active 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 ...

Accédez à la page d'accueil par défaut d'Apache pour confirmer que le logiciel fonctionne correctement grâce à votre adresse IP :

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

Créez répertoire html pour<p>example.com<^> comme suit, à l'aide de la balise -p pour créer tout répertoire de 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 :

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

  • 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 :

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

  • 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 :

  • 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 :

  • 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 :

  • 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 :

  • 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 :

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 :

  • 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 :

  • 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 :

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

0 Comments

Creative Commons License