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, un support multimédia robuste et une intégration poussée à d’autres logiciels populaires.

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

Conditions préalables

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

Étape 1 - Installer 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 + yum +.

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

sudo yum update httpd

Une fois les packages mis à jour, installez le package Apache:

sudo yum install httpd

Après confirmation de l’installation, + yum + installera Apache et toutes les dépendances requises. Une fois l’installation terminée, vous êtes prêt à démarrer le service.

É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 statut + actif + lorsque le service est en cours d’exécution:

OutputRedirecting 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:  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 constater à partir de cette sortie, le service semble avoir démarré correctement. Cependant, le meilleur moyen de tester cela consiste à demander une page à Apache.

Vous pouvez accéder à la page de destination Apache par défaut pour vérifier 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 affiche toutes les adresses réseau de l’hôte, vous permettant ainsi de récupérer quelques adresses IP séparées par des espaces. Vous pouvez essayer chacun dans votre navigateur Web pour voir s’ils fonctionnent.

Alternativement, vous pouvez utiliser + curl pour demander votre adresse IP à` + icanhazip.com + `, ce qui vous donnera votre adresse IPv4 publique telle que vue depuis 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://

La page Web par défaut de Apache CentOS 7:

image: https: //assets.digitalocean.com/articles/CART-65406/apache_default_page.png [Page Apache par défaut pour CentOS 7]

Cette page indique qu’Apache fonctionne correctement. Il contient également des informations de base sur les fichiers Apache importants et les emplacements de répertoires. 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, examinons quelques commandes de gestion de base.

Pour arrêter votre serveur Web, tapez:

sudo systemctl stop httpd

Pour démarrer le serveur Web quand il est arrêté, tapez:

sudo systemctl start httpd

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

sudo systemctl restart httpd

Si vous effectuez simplement des modifications de configuration, Apache peut souvent recharger sans perdre de 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 pour qu’il démarre au démarrage, tapez:

sudo systemctl enable httpd

Apache va maintenant démarrer automatiquement quand le serveur redémarrera.

La configuration par défaut pour Apache permettra à votre serveur d’héberger un seul site Web. Si vous envisagez 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é)

Lorsque vous utilisez le serveur Web Apache, vous pouvez utiliser virtual hosts (similaire aux blocs de serveur dans Nginx) pour encapsuler les détails de la configuration et héberger plusieurs domaines à 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 to DigitalOcean DNS.

Apache sur CentOS 7 possède un bloc de serveur activé par défaut, configuré pour servir les 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 créerez une structure de répertoires dans + / var / www + pour le site + example.com +, en laissant + / var / www / html + le 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 les répertoires parents nécessaires:

sudo mkdir -p /var/www//html

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

sudo mkdir -p /var/www//log

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

sudo chown -R $USER:$USER /var/www//html

Assurez-vous que les autorisations par défaut sont définies dans votre racine Web:

sudo chmod -R 755 /var/www

Créez ensuite un exemple de page + index.html en utilisant` + vi` ou votre éditeur favori:

sudo vi /var/www//html/index.html

Appuyez sur + i + pour passer en mode + INSERT + et ajoutez l’exemple HTML suivant au fichier:

/var/www/example.com/html/index.html

<html>
 <head>
   <title>Welcome to !</title>
 </head>
 <body>
   <h1>Success! The  virtual host is working!</h1>
 </body>
</html>

Enregistrez et fermez le fichier en appuyant sur + ESC, en tapant` +: w + et en appuyant sur + ENTER`.

Avec votre répertoire de site et votre exemple de fichier d’index, vous êtes presque prêt à créer les fichiers de l’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 devez créer un répertoire + sites-available + pour les stocker. Vous créerez également le répertoire + sites-enabled + qui indique à Apache qu’un hôte virtuel est prêt à être utilisé par les visiteurs. Le répertoire + sites-enabled contient des liens symboliques vers les 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 + + +. Pour ce faire, éditez le fichier de configuration principal d’Apache et ajoutez une ligne déclarant un répertoire facultatif 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 vos répertoires d’hôte virtuel sont 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/.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.
   ServerAlias
   DocumentRoot /var/www//html
   ErrorLog /var/www//log/error.log
   CustomLog /var/www//log/requests.log combined
</VirtualHost>

Cela indiquera à Apache où trouver directement la racine contenant 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 de l’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/.conf /etc/httpd/sites-enabled/.conf

Votre hôte virtuel est maintenant configuré et prêt à servir du contenu. Avant de redémarrer le service Apache, vérifions que SELinux a mis en place les stratégies appropriées 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. Étant donné que vous avez configuré 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 afin de permettre à Apache d’écrire dans les fichiers nécessaires. SELinux apporte une sécurité accrue à votre environnement CentOS 7, il est donc déconseillé 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 politiques sur les annuaires est plus sécurisé et constitue donc l’approche recommandée.

Ajustement universel des stratégies Apache

La définition de la stratégie Apache de manière universelle indiquera à SELinux de traiter tous les processus Apache de manière identique à l’aide du 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 centré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 au moment du démarrage, rendant cette modification persistante lors des réinitialisations. + httpd_unified + est le booléen qui indiquera à SELinux de traiter tous les processus Apache avec le même type. Vous l’avez donc activé avec la valeur + 1 +.

Ajustement des stratégies Apache sur un répertoire

La définition individuelle des autorisations SELinux pour le répertoire + / var / www // log + vous permettra de mieux contrôler vos stratégies Apache, mais peut également nécessiter davantage de maintenance. Étant donné que cette option ne définit pas les stratégies de manière universelle, vous devez définir manuellement le type de contexte pour tous les nouveaux répertoires de journal spécifiés dans vos configurations d’hôte virtuel.

Tout d’abord, vérifiez le type de contexte que SELinux a attribué au répertoire + / var / www // log +:

sudo ls -dZ /var/www//log/

Cette commande répertorie et affiche le contexte SELinux du répertoire. Vous verrez une sortie semblable à celle-ci:

Outputdrwxr-xr-x. root root unconfined_u:object_r::s0 /var/www//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 // log + en + httpd_log_t +. Ce type permettra à Apache de générer et d’ajouter aux fichiers journaux des applications Web:

sudo semanage fcontext -a -t  "/var/www//log(/.*)?"

Ensuite, utilisez la commande + restorecon + pour appliquer ces modifications et les conserver lors du redémarrage:

sudo restorecon -R -v /var/www//log

L’indicateur + -R + exécute cette commande de manière récursive, ce qui signifie qu’il mettra à jour tous les fichiers existants pour utiliser le nouveau contexte. L’indicateur + -v + affiche le contexte et modifie la commande. Vous verrez la sortie suivante confirmant les modifications:

Outputrestorecon reset /var/www/example.com/log context unconfined_u:object_r::s0->unconfined_u:object_r::s0

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

sudo ls -dZ /var/www//log/

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

Outputdrwxr-xr-x. root root unconfined_u:object_r::s0 /var/www//log

Maintenant que le répertoire + / var / www // 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 le contexte SELinux mis à jour avec l’une ou l’autre méthode, Apache pourra écrire dans le répertoire + / var / www // log +. Vous pouvez maintenant redémarrer avec succès le service Apache:

sudo systemctl restart httpd

Répertoriez le contenu du répertoire + / var / www // log + pour voir si Apache avait créé les fichiers journaux:

ls -lZ /var/www//log

Vous verrez 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 0 Feb 26 22:54 error.log
-rw-r--r--. 1 root root 0 Feb 26 22:54 requests.log

Maintenant que vous avez configuré votre hôte virtuel et mis à jour les autorisations SELinux, Apache va maintenant servir votre nom de domaine. Vous pouvez tester cela en naviguant dans + http: // +, où vous devriez voir quelque chose comme ceci:

image: https: //assets.digitalocean.com/articles/CART-65406/virtual_host_success.png [Succès! L’hôte virtuel example.com fonctionne!]

Cela confirme que votre hôte virtuel est correctement configuré et que le contenu est servi. 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 servir 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 pour savoir comment configurer une https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql -php-lampe-pile-sur-centos-7 # étape-quatre-% E2% 80% 94-test-traitement-php-sur-votre-serveur Web [pile LAMP sur CentOS 7].