Cet article vous présente les bases du vhost et du bloc de serveur.
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®. Plesk® est une plate-forme graphique pour la gestion de sites Web. Si Plesk est installé, utilisez cet article comme guide pour comprendre les vhosts.
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 |
Dans Plesk, pour vérifier l'état et identifier le serveur Web utilisé, 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'IP ou sur le nom. Les vhosts basés sur IP attribuent une adresse IP différente à un site Web et basé sur le nom Les vhosts 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
) ou HTTPS (443
). - DocumentRoot :Le chemin du répertoire des fichiers du site Web.
- 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.
- Fichiers SSL :Les trois chemins de fichiers SSL nécessaires pour un serveur HTTPS 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 ou un outil comme
vim
,nano
,sed, or
awk`. -
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
-
Vérifiez à nouveau le serveur Web :
# httpd -t; service httpd 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 :
# 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
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.
Il est important d'éviter autant que possible les temps d'arrêt dans un environnement en direct, ce qui signifie qu'après le redémarrage du serveur Web, vous devez effectuer les vérifications le plus rapidement possible. Pour cela, regroupez 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.