Comment installer le serveur Web Apache sur CentOS 7

Introduction

Le serveur HTTP Apache est le serveur Web le plus utilisé au monde. Il fournit de nombreuses fonctionnalités puissantes, notamment des modules chargeables dynamiquement, une prise en charge robuste des supports et une intégration étendue avec d’autres logiciels populaires.

Dans ce guide, vous allez installer un serveur web Apache avec des hôtes virtuels sur votre serveur CentOS 7.

Prérequis

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

  • Un utilisateur non root avec des privilèges sudo configurés sur votre serveur, configurés en suivant le guide de configuration initiale du serveur pour CentOS 7.
  • Un pare-feu de base configuré en suivant les Étapes supplémentaires recommandées pour le guide des nouveaux serveurs CentOS 7.

Étape 1 — Installation d’Apache

Apache est disponible dans les dépôts logiciels par défaut de CentOS, ce qui signifie que vous pouvez l’installer avec le gestionnaire de paquets yum.

En tant qu’utilisateur sudo non root configuré dans les conditions préalables, mettez à jour l’index de paquets Apache local httpd pour refléter les dernières modifications en amont :

  • sudo yum update httpd

Une fois les paquets mis à jour, installez le paquet Apache :

  • sudo yum install httpd

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

Si vous avez terminé les Étapes supplémentaires recommandées pour le guide des nouveaux serveurs CentOS 7 mentionnées dans la section prérequis, vous aurez installé firewalld sur votre serveur et vous devrez ouvrir le port 80 pour permettre à Apache de servir des requêtes via HTTP. Si vous ne l’avez pas déjà fait, vous pouvez le faire en activant le service firewalld du http avec la commande suivante:

  • sudo firewall-cmd --permanent --add-service=http

Si vous prévoyez de configurer Apache pour diffuser du contenu via HTTPS, vous voudrez également ouvrir le port 443 en activant le service https :

  • sudo firewall-cmd --permanent --add-service=https

Ensuite, rechargez le pare-feu pour mettre en vigueur 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 2 – Vérification de votre serveur Web

Apache ne démarre pas automatiquement sur CentOS une fois l’installation terminée. Vous devrez démarrer le processus Apache manuellement :

  • sudo systemctl start httpd

Vérifiez que le service est en cours d’exécution avec la commande suivante :

  • sudo systemctl status httpd

Vous verrez un activestatut lorsque le service est en cours d’exécution :

Output
Redirecting to /bin/systemctl status httpd.service● httpd.service - The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled) Active: active (running) since Wed 2019-02-20 01:29:08 UTC; 5s ago Docs: man:httpd(8) man:apachectl(8) Main PID: 1290 (httpd) Status: "Processing requests..." CGroup: /system.slice/httpd.service ├─1290 /usr/sbin/httpd -DFOREGROUND ├─1291 /usr/sbin/httpd -DFOREGROUND ├─1292 /usr/sbin/httpd -DFOREGROUND ├─1293 /usr/sbin/httpd -DFOREGROUND ├─1294 /usr/sbin/httpd -DFOREGROUND └─1295 /usr/sbin/httpd -DFOREGROUND...

Comme vous pouvez le voir sur cette sortie, le service semble avoir démarré avec succès. Cependant, la meilleure façon de tester cela est de demander une page à Apache.

Vous pouvez accéder à la page de destination Apache par défaut pour confirmer que le logiciel fonctionne correctement via votre adresse IP. Si vous ne connaissez pas l’adresse IP de votre serveur, vous pouvez l’obtenir de différentes manières à partir de la ligne de commande.

Tapez ceci à l’invite de commande de votre serveur :

  • 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 les essayer dans votre navigateur Web pour voir si elles fonctionnent.

Alternativement, vous pouvez utiliser curl pour demander votre adresse IP à icanhazip.com, qui vous donnera votre adresse IPv4 publique vue d’un autre emplacement sur Internet:

  • curl -4 icanhazip.com

Lorsque vous avez l’adresse IP de votre serveur, entrez-la dans la barre d’adresse de votre navigateur :

http://your_server_ip

Vous verrez la page Web CentOS 7 Apache par défaut :

Page Apache par défaut pour CentOS 7

Cette page indique qu’Apache fonctionne correctement. Il comprend également des informations de base sur les fichiers et les emplacements de répertoires Apache importants. Maintenant que le service est installé et en cours d’exécution, vous pouvez maintenant utiliser différentes commandes systemctl pour gérer le service.

Étape 3 – Gestion du processus Apache

Maintenant que votre serveur Web est opérationnel, passons en revue quelques commandes de gestion de base.

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 souhaitez arrêter le service, tapez :

  • sudo systemctl restart httpd

Si vous faites simplement des modifications de configuration, Apache peut souvent recharger sans abandonner les connexions. Pour ce faire, utilisez cette commande:

  • sudo systemctl reload httpd

Par défaut, Apache est configuré pour démarrer automatiquement au démarrage du serveur. Si ce n’est pas ce que vous voulez, désactivez ce comportement en tapant :

  • sudo systemctl disable httpd

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

  • sudo systemctl enable httpd

Apache démarre automatiquement lorsque le serveur redémarre.

La configuration par défaut d’Apache permettra à votre serveur d’héberger un seul site Web. Si vous prévoyez d’héberger plusieurs domaines sur votre serveur, vous devrez configurer des hôtes virtuels sur votre serveur Web Apache.

Étape 4 – Configuration des hôtes virtuels (Recommandée)

Lorsque vous utilisez le serveur Web Apache, vous pouvez utiliser des hôtes virtuels (similaires aux blocs de serveur dans Nginx) pour encapsuler les détails de configuration et héberger plus d’un domaine à partir d’un seul serveur. Dans cette étape, vous allez configurer un domaine appelé example.com, mais vous devez le remplacer par votre propre nom de domaine. Pour en savoir plus sur la configuration d’un nom de domaine avec DigitalOcean, consultez notre Introduction au DNS DigitalOcean.

Apache sur CentOS 7 a un bloc de serveur activé par défaut qui est configuré pour servir des documents à partir du répertoire /var/www/html. Bien que cela fonctionne bien pour un seul site, cela peut devenir lourd si vous hébergez plusieurs sites. Au lieu de modifier /var/www/html, vous allez créer une structure de répertoires dans /var/www pour le site example.com, en laissant /var/www/html en place comme répertoire par défaut à servir si une demande client ne correspond à aucun autre site.

Créez le répertoire html pour example.com comme suit, en utilisant l’indicateur -p pour créer tous les répertoires parents nécessaires :

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

Créez un répertoire supplémentaire à stocker fichiers journaux pour le 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 votre racine Web a la valeur par défaut ensemble d’autorisations:

  • sudo chmod -R 755 /var/www

Next, create a sample index.html page using vi or your favorite editor:

  • sudo vi /var/www/example.com/html/index.html

Press i to switch to INSERT mode and add the following sample HTML to the file:

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

Save and close the file by pressing ESC, typing :wq, and pressing ENTER.

Avec votre répertoire de site et votre exemple de fichier d’index en place, vous êtes presque prêt à créer les fichiers d’hôte virtuel. Les fichiers d’hôte virtuel spécifient la configuration de vos sites distincts et indiquent au serveur Web Apache comment répondre aux différentes demandes de domaine.

Avant de créer vos hôtes virtuels, vous devrez créer un répertoire sites-available dans lequel les stocker. Vous allez également créer le répertoire sites-enabled qui indique à Apache qu’un hôte virtuel est prêt à servir aux visiteurs. Le répertoire sites-enabled contiendra des liens symboliques vers des 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 direz à Apache de rechercher des hôtes virtuels dans le répertoire sites-enabled. Pour ce faire, éditez le fichier de configuration principal d’Apache et ajoutez une ligne déclarant un répertoire optionnel pour les fichiers de configuration supplémentaires :

  • sudo vi /etc/httpd/conf/httpd.conf

Ajoutez cette ligne à la fin du fichier:

IncludeOptional sites-enabled/*.conf

Enregistrez et fermez le fichier lorsque vous avez terminé d’ajouter cette ligne. Maintenant que vous avez vos répertoires d’hôtes virtuels en place, vous allez 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 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>

Cela indiquera à Apache où trouver directement la racine qui contient les documents Web accessibles au public. Il indique également à Apache où stocker les journaux d’erreurs et de demandes pour ce site particulier.

Enregistrez et fermez le fichier lorsque vous avez terminé.

Maintenant que vous avez créé les fichiers d’hôte virtuel, vous allez les activer pour qu’Apache sache les servir aux visiteurs. Pour ce faire, créez un lien 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 à diffuser du contenu. Avant de redémarrer le service Apache, nous allons nous assurer que SELinux a les bonnes stratégies en place pour vos hôtes virtuels.

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

SELinux est configuré pour fonctionner avec la configuration Apache par défaut. Puisque vous configurez un répertoire de journal personnalisé dans le fichier de configuration des hôtes virtuels, vous recevrez une erreur si vous tentez de démarrer le service Apache. Pour résoudre ce problème, vous devez mettre à jour les stratégies SELinux pour permettre à Apache d’écrire dans les fichiers nécessaires. SELinux apporte une sécurité accrue à votre environnement CentOS 7, il n’est donc pas recommandé de désactiver complètement le module du noyau.

Il existe différentes façons de définir des stratégies en fonction des besoins de votre environnement, car SELinux vous permet de personnaliser votre niveau de sécurité. Cette étape couvrira deux méthodes d’ajustement des stratégies Apache : universellement et sur un répertoire spécifique. L’ajustement des stratégies sur les répertoires est plus sécurisé et constitue donc l’approche recommandée.

Ajuster les stratégies Apache Universellement

Définir la stratégie Apache universellement indiquera à 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, elle ne vous donnera pas le même niveau de contrôle qu’une approche axée sur une stratégie de fichier ou de répertoire.

Exécutez la commande suivante pour définir une stratégie Apache universelle :

  • sudo setsebool -P httpd_unified 1

La commande setsebool modifie les valeurs booléennes SELinux. L’indicateur -P mettra à jour la valeur du temps de démarrage, ce qui fera que cette modification persistera lors des redémarrages. httpd_unified est le booléen qui dira à SELinux de traiter tous les processus Apache comme le même type, donc vous l’avez activé avec une valeur de 1.

Ajuster les stratégies Apache sur un répertoire

Définir individuellement les autorisations SELinux pour le répertoire /var/www/example.com/log vous donnera plus de contrôle sur vos stratégies Apache, mais peut également nécessiter plus de maintenance. Étant donné que cette option ne définit pas de stratégies universelles, vous devrez définir manuellement le type de contexte pour tous les nouveaux répertoires de journaux spécifiés 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 -dZ /var/www/example.com/log/

Cette commande répertorie et imprime le contexte SELinux du répertoire. Vous verrez une sortie similaire à ce qui suit:

Output
drwxr-xr-x. root root unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/example.com/log/

Le contexte actuel est httpd_sys_content_t, ce qui indique à SELinux que le processus Apache ne peut lire que les fichiers créés dans ce répertoire. Dans ce tutoriel, vous allez changer le type de contexte du répertoire /var/www/example.com/log en httpd_log_t. Ce type permettra à Apache de générer et d’ajouter des fichiers journaux d’applications 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 faire persister 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’elle mettra à jour tous les fichiers existants pour utiliser le nouveau contexte. L’indicateur -v affichera les modifications de contexte de la commande effectuée. Vous verrez la sortie suivante confirmant les modifications :

Output
restorecon reset /var/www/example.com/log context unconfined_u:object_r:httpd_sys_content_t:s0->unconfined_u:object_r:httpd_log_t:s0

Vous pouvez lister les contextes une fois de plus pour voir les modifications :

  • sudo ls -dZ /var/www/example.com/log/

La sortie reflète le type de contexte mis à jour:

Output
drwxr-xr-x. root root unconfined_u:object_r:httpd_log_t:s0 /var/www/example.com/log

Maintenant que le répertoire /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 – Test de l’hôte virtuel (Recommandé)

Une fois que le contexte SELinux a été mis à jour avec l’une ou l’autre méthode, Apache pourra écrire dans le répertoire /var/www/example.com/log. Vous pouvez maintenant redémarrer le service Apache avec succès :

  • sudo systemctl restart httpd

Listez 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 verrez qu’Apache a été capable de 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 0 Feb 26 22:54 error.log-rw-r--r--. 1 root root 0 Feb 26 22:54 requests.log

Maintenant que vous après la configuration de votre hôte virtuel et la mise à jour des autorisations SELinux, Apache servira désormais votre nom de domaine. Vous pouvez tester cela en naviguant vers http://example.com, où vous devriez voir quelque chose comme ceci:

Succès! Le example.com l'hôte virtuel fonctionne!

Cela confirme que votre hôte virtuel est correctement configuré et diffuse du 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 pouvez diffuser et les technologies que vous pouvez utiliser pour créer une expérience plus riche.

Si vous souhaitez créer une pile d’applications plus complète, vous pouvez consulter cet article sur la configuration d’une pile de LAMPES sur CentOS 7.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *