Cet article vous présente les bases de vhost et de serveur Web. Un serveur Web exécute un logiciel pour traiter les pages Web. Une fois que le trafic Web a atteint le serveur, il suit les étapes pour atteindre le bon site Web. Si un serveur diffuse du contenu Web, vous devez installer un serveur Web.
Vérifier l'état du serveur Web
Les serveurs Web les plus courants qui s'exécutent sous Linux® sont Apache® (httpd ou apache2 ) et NGINX®. Vous pouvez également disposer de Plesk®. Vous pouvez utiliser Plesk pour gérer vos sites Web dans un style Windows® plus pointer-cliquer. Si vous installez Plesk, utilisez le reste de cet article une vue d'ensemble des vhosts car vous devez utiliser Plesk au lieu de la ligne de commande Linux pour effectuer les tâches décrites ici.
Par défaut, les serveurs Web autorisent le trafic HTTP via le port 80
et le trafic HTTPS (sécurisé) via le port 443
.
Pour trouver le serveur Web qui s'exécute sur les ports 80
et 443
, saisissez la commande suivante :
# netstat -plnt | awk '$4 ~ /:(80|443)$/'
tcp6 0 0 :::80 :::* LISTEN 2549/httpd
tcp6 0 0 :::443 :::* LISTEN 2549/httpd
Pour vérifier l'état d'un serveur Web, exécutez l'une des commandes indiquées dans le tableau suivant :
Type de serveur Web | Commande |
---|---|
httpd | service httpd status |
ou | |
systemctl status httpd | |
apache2 | service apache2 status |
ou | |
systemctl status apache2 | |
nginx | service nginx status |
ou | |
systemctl status nginx | |
Plesk | service psa status |
ou | |
systemctl status psa |
Pour rechercher Plesk et voir quel serveur Web est en cours d'exécution, saisissez la commande suivante :
# service psa status; netstat -plnt | awk '$4 ~ /:(80|443)$/'
Vérifier la configuration des vhosts
Un serveur Web (ou un pool de serveurs Web) peut héberger plusieurs sites Web en utilisant des hôtes virtuels (vhosts). Les Vhosts permettent à plusieurs sites Web de partager des ressources à partir d'un serveur physique.
Les Vhosts peuvent être basés sur l'adresse IP ou sur le nom. Les vhosts basés sur l'adresse IP attribuent une adresse IP différente à un site Web, et les vhosts basés sur le nom attribuent plusieurs noms d'hôte à une seule adresse IP. Les Vhosts gardent une trace des sites Web dans un serveur Web, en spécifiant la configuration de chaque site Web.
Pour vérifier la configuration des vhosts dans Apache, saisissez l'une des commandes suivantes :
# httpd -S
ou
# apache2ctl -S
*:80 example.com (/etc/httpd/vhost.d/example.com.conf:1)
Pour lire le contenu d'un fichier de configuration vhost, saisissez la commande suivante :
# cat /etc/httpd/vhost.d/example.com.conf
Les entrées du fichier de configuration vhosts incluent :
- :80 ou : 443 :Ces entrées précisent si le site Web utilise HTTP (
80
) ouHTTPS (443
). - DocumentRoot :Le chemin du répertoire des fichiers du site Web. Il s'agit le plus souvent de l'emplacement auquel les développeurs ont besoin d'accéder pour télécharger des fichiers.
- Nom du serveur :Le nom de domaine du site Web.
- Alias du serveur :Tout autre nom de domaine de site Web que vous souhaitez rediriger vers le ServerName domaine. Vous utilisez généralement des domaines du type www.domain , mais vous pouvez également utiliser d'autres domaines ou sous-domaines.
- Journal des erreurs :Le chemin d'accès au répertoire et le nom des journaux d'erreurs.
- Port 443 :La configuration SSL. Commentez cette section si le site Web ne dispose pas d'un certificat SSL valide.
- Site HTTPS sécurisé :Les trois chemins de fichier SSL nécessaires pour un chiffrement complet afin de le transformer en un site HTTPS plus sécurisé.
L'exemple suivant montre un fichier de configuration vhosts :
<VirtualHost *:80>
DocumentRoot "/var/www/vhosts/example.com/httpdocs"
ServerName "example.com"
ServerAlias "www.example.com"
<Directory /var/www/vhosts/example.com/httpdocs>
AllowOverride All
Options +FollowSymlinks
</Directory>
DirectoryIndex index.html index.php index.htm
# Logging
CustomLog /var/log/httpd/example.com-access_log combined
ErrorLog /var/log/httpd/example.com-error_log
</VirtualHost>
#<VirtualHost *:443>
# DocumentRoot "/var/www/vhosts/example.com/httpdocs"
# ServerName "example.com"
# ServerAlias "www.example.com"
# <Directory /var/www/vhosts/example.com/httpdocs>
# AllowOverride All
# Options +FollowSymlinks
# </Directory>
# DirectoryIndex index.html index.php index.htm
# # SSL Configuration
# SSLEngine On
# SSLCertificateFile /etc/httpd/conf/ssl.crt/2021-example.com.crt
# SSLCACertificateFile /etc/httpd/conf/ssl.crt/2021-example.com.ca
# SSLCertificateKeyFile /etc/httpd/conf/ssl.key/2021-example.com.key
#
# # Logging
# CustomLog /var/log/httpd/example.com-ssl_access_log combined
# ErrorLog /var/log/httpd/example.com-ssl_error_log
#</VirtualHost>
Pour copier le fichier de configuration d'un vhost existant pour en créer un nouveau, saisissez la commande suivante :
# cat /OLD_DOMAIN.conf | sed 's/OLD_DOMAIN/NEW_DOMAIN/ig' >> /NEW_DOMAIN.conf
Modifiez le nouveau fichier de configuration vhost si nécessaire. Par exemple, vous devrez peut-être commenter les paramètres qui rendent le port 443
actif.
Pour trouver l'emplacement de DocumentRoot dans un fichier de configuration vhost, saisissez la commande suivante :
# grep Doc /etc/httpd/vhost.d/example.com.conf
DocumentRoot /var/www/vhosts/example.com
Créer un nouveau vhost
Utilisez les instructions suivantes pour créer un nouveau vhost :
-
Si possible, copiez un vhost existant pour conserver des paramètres cohérents. Utilisez un éditeur de texte, tel que
vim
,nano
,sed
, ouawk
, si vous avez besoin de le modifier.# cat /OLD_DOMAIN.conf | sed 's/OLD_DOMAIN/NEW_DOMAIN/ig' >> /NEW_DOMAIN.conf
-
Créer un nouveau DocumentRoot annuaire. Le système crée automatiquement les journaux personnalisés et d'erreurs. Exécutez la commande suivante :
# mkdir -p /docroot
-
Vérifiez que le serveur Web n'envoie aucune erreur :
# httpd -t
-
Effectuez un redémarrage en douceur sur le serveur Web pour intégrer les modifications avec un minimum de perturbations dans votre environnement en direct :
# service httpd graceful
-
Le moindre changement dans un vhost peut interrompre l'ensemble de votre serveur Web et l'empêcher de desservir tous vos sites Web. Pour cette raison, utilisez l'une des commandes suivantes pour revérifier le serveur Web :
Type de serveur Web Commande httpd # httpd -t; service httpd status
apache2 # apache2ctl -t; service apache2 status
nginx # nginx -t; service nginx status
Vérifier et dépanner les modifications apportées à la configuration du vhost
Pour vérifier les erreurs dans Apache, utilisez l'une des commandes suivantes :
# httpd -t
ou
# apache2ctl -t
AH00558: httpd: Could not reliably determine the server's fully qualified
domain name, using 127.0.0.1. Set the 'ServerName' directive globally to
suppress this message
Syntax OK
Pour vérifier les erreurs dans NGINX, utilisez la commande suivante :
# nginx -t
AH00558: httpd: Could not reliably determine the server's fully qualified
domain name, using 127.0.0.1. Set the 'ServerName' directive globally to
suppress this message
Syntax OK
Remarque :La clause Impossible de déterminer de manière fiable est commun, et cela ne signifie pas une erreur. Vous pouvez généralement l'ignorer.
L'exemple suivant montre un exemple d'erreur :
# httpd -t
AH00112: Warning: DocumentRoot [/var/www/vhosts/example.com] does not exist
AH00558: httpd: Could not reliably determine the server's fully qualified
domain name, using 127.0.0.1. Set the 'ServerName' directive globally to
suppress this message
Syntax OK
Corrigez cette erreur en créant un DocumentRoot répertoire :
# mkdir -p /var/www/vhosts/example.com
Autre exemple d'erreur :
# httpd -t
AH00526: Syntax error on line 5 of /etc/httpd/vhost.d/example.com.conf:
Invalid command 'oops', perhaps misspelled or defined by a module not
included in the server configuration
Le mot oups est dans le fichier vhost et Apache ne sait pas comment l'interpréter. Vous pouvez utiliser vim , nano , ou un autre éditeur de texte pour corriger l'erreur.
Redémarrer un serveur Web
Le serveur Web reconnaît les modifications apportées à la configuration des vhosts après un redémarrage. Les threads en cours peuvent se terminer avant le redémarrage avec le graceful option.
Pour effectuer un redémarrage en douceur sur Apache, saisissez l'une des commandes suivantes :
# service httpd graceful
ou
# service apache2 graceful
Parfois, le moindre changement dans un vhost peut interrompre l'ensemble de votre serveur Web et l'empêcher de servir tous vos sites Web. Sauvegardez donc votre travail et, après avoir effectué un redémarrage gracieux pour reconnaître les modifications, assurez-vous que votre serveur Web fonctionne toujours sans erreur.
Voici les meilleures pratiques pour éviter les interruptions de service après la modification de la configuration des vhosts :
- Sauvegarder le serveur Web.
- Effectuez les modifications.
- Effectuez un redémarrage progressif.
- Assurez-vous que le serveur Web fonctionne sans erreur.
Dans un environnement en direct, la clé est d'éviter autant de temps d'arrêt que possible, ce qui signifie que vous devez effectuer un redémarrage progressif sur le serveur Web et exécuter vos vérifications aussi rapidement que possible afin de pouvoir annuler vos modifications si nécessaire. Pour cela, vous pouvez regrouper toutes les commandes sur une seule ligne.
Pour effectuer un redémarrage progressif sur Apache et vérifier les erreurs, saisissez l'une des commandes suivantes :
# service httpd graceful; httpd -t; service httpd status | grep running
ou
# service apache2 graceful; apache2ctl -t; service apache2 status | grep running
AH00558: httpd: Could not reliably determine the server's fully qualified domain
name, using 127.0.0.1. Set the 'ServerName' directive globally to suppress this message
Syntax OK
Redirecting to /bin/systemctl status httpd.service
Active: active (running) (Result: exit-code) since Mon 2021-01-18 12:53:06 GMT; 2 months 19 days ago
Pour redémarrer NGINX et vérifier qu'il est en cours d'exécution, saisissez les commandes suivantes :
# nginx -s reload; nginx -t; service nginx status
Utilisez l'onglet Commentaires pour faire des commentaires ou poser des questions. Vous pouvez également démarrer une conversation avec nous.