GNU/Linux >> Tutoriels Linux >  >> Linux

Les bases des Vhosts

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 :

  1. Si possible, copiez un vhost existant pour conserver des paramètres cohérents. Utilisez un éditeur de texte, tel que vim , nano , sed , ou awk , si vous avez besoin de le modifier.

       # cat /OLD_DOMAIN.conf | sed 's/OLD_DOMAIN/NEW_DOMAIN/ig' >> /NEW_DOMAIN.conf
    
  2. 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
    
  3. Vérifiez que le serveur Web n'envoie aucune erreur :

    # httpd -t
    
  4. 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
    
  5. 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.


Linux
  1. Comment configurer un serveur Web Apache

  2. Réglage du serveur Web Apache Keepalive

  3. Qu'est-ce qu'un serveur Web et comment fonctionne un serveur Web ?

  4. Comment installer le serveur Web Nginx sur Linux

  5. Configurer le serveur Web Ubuntu ?

Comment installer le serveur Web Nginx sur Alpine Linux

Meilleures pratiques pour sécuriser votre serveur Web Apache

Serveur Web sur Ubuntu 16.04 ??

Comment installer le serveur Web Lighttpd sur Ubuntu 18.04

Comment configurer un serveur domestique

Bases de l'hébergement Web et choix d'un fournisseur