GNU/Linux >> Tutoriels Linux >  >> Linux

Configurer des hôtes virtuels Apache sur le système d'exploitation Ubuntu

Maintenant qu'Apache est installé et en cours d'exécution, vous pouvez le configurer pour servir plusieurs domaines en utilisant des hôtes virtuels .

Créer la mise en page

Cet exemple utilise deux domaines :domaine1.com et domaine2.com.

  1. Dans votre répertoire personnel, créez un dossier public_html :

    cd ~
    mkdir public_html
    
  2. Pour chaque domaine que vous souhaitez héberger, créez un dossier avec un ensemble standard de sous-dossiers. Les commandes suivantes créent les dossiers public, private, log, cgi-bin et backup pour domaine1.com et domaine2.com :

    mkdir -p public_html/domain1.com/{public,private,log,cgi-bin,backup}
    mkdir -p public_html/domain2.com/{public,private,log,cgi-bin,backup}
    

Créer index.html

Le contenu du dossier public dépend de vous, mais cet exemple utilise un fichier HTML très simple afin que vous puissiez vérifier le travail de l'hôte virtuel.

  1. Pour chaque domaine, créez un fichier index.html :

    nano public_html/domain1.com/public/index.html
    
  2. Ajoutez le code suivant au fichier index.html :

    <html>
      <head>
        <title>domain1.com</title>
      </head>
      <body>
    
        <h1>domain1.com</h1>
      </body>
    </html>
    
  3. Répétez le processus afin d'avoir un fichier similaire pour domaine2.com.Remplacez toutes les instances de domain1.com avec domain2.com .

Définir les hôtes virtuels

Maintenant que vous avez une structure de base pour vos deux domaines, vous pouvez définir deux hôtes virtuels.

Revoir NameVirtualHost

Avec les hôtes virtuels, le paramètre NameVirtualHost prête souvent à confusion.

Chaque interface et port sur lequel Apache est configuré pour écouter nécessite une directive NameVirtualHost. Vous ne pouvez définir la directive qu'une seule fois par port.

Dans la disposition Apache pour le système d'exploitation Ubuntu, il existe une directive NameVirtualHost par défaut dans le ports.conf fichier.

Exécutez la commande suivante pour consulter le contenu de ports.conf :

cat /etc/apache2/ports.conf

Vous devriez obtenir le résultat suivant (sauf si vous avez déjà modifié le fichier) :

# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default

NameVirtualHost *:80
Listen 80

<IfModule mod_ssl.c>
    # SSL name based virtual hosts are not yet supported, therefore no
    # NameVirtualHost statement here
    Listen 443
</IfModule>

Le paramètre par défaut de NameVirtualHost satisfait les exigences actuelles - Apache appliquera une logique et des paramètres d'hôte virtuel basés sur le nom pour les requêtes HTTP effectuées sur toute interface disponible (*) sur le port 80.

Remarque :Le placement de la directive NameVirtualHost par défaut dans « ports.conf » est nouveau dans la disposition Apache du système d'exploitation Ubuntu ; les versions précédentes plaçaient un paramètre similaire dans le vhost par défaut.

Définir des hôtes virtuels personnalisés

Vous êtes maintenant prêt à ajouter vos propres hôtes virtuels afin de pouvoir commencer à servir vos domaines.

Créez le fichier vhost pour le domaine 1 :

sudo nano /etc/apache2/sites-available/domain1.com.conf

Le contenu se présente comme suit :

# Place any notes or comments you have here
# It will make any customisation easier to understand in the weeks to come

# domain: domain1.com
# public: /home/demo/public_html/domain1.com/

<VirtualHost *:80>

  # Admin email, Server Name (domain name) and any aliases
  ServerAdmin [email protected]
  ServerName  domain1.com
  ServerAlias www.domain1.com


  # Index file and Document Root (where the public files are located)
  DirectoryIndex index.html
  DocumentRoot /home/demo/public_html/domain1.com/public


  # Custom log file locations
  LogLevel warn
  ErrorLog /var/log/apache2/error-mydomainname.com.log
  CustomLog /var/log/apache2/access-mydomainname.com.log combined

</VirtualHost>

Activer le site

Activez le site comme suit :

sudo a2ensite domain1.com

Le résultat de la commande est le suivant :

Site domain1.com installed; run /etc/init.d/apache2 reload to enable.

Exécutez la commande recommandée :

sudo /etc/init.d/apache2 reload

Pour tester le domaine sans créer de zone DNS et d'enregistrements sur certains serveurs de noms Internet, vous pouvez modifier le fichier '/etc/hosts' sur votre ordinateur local pour inclure certaines entrées mappant 'domaine1.com','domaine2.com' et le reste à l'adresse IP publique du serveur cloud de démonstration :

127.0.0.1    localhost
...

# entries related to the demo Cloud Server
123.45.67.890   domain1.com
123.45.67.890   www.domain1.com
123.45.67.890   domain2.com
...

L'emplacement du fichier "hosts" varie en fonction du système d'exploitation chargé sur votre ordinateur local.

Remarque  : les entrées du fichier "hôtes" doivent être supprimées avant de tester et d'utiliser les zones DNS actives et les enregistrements créés sur les serveurs de noms Internet. Si vous ne les supprimez pas, vous risquez de prêter à confusion et de tester de manière inexacte les enregistrements DNS publics nouveaux ou modifiés.

Avec ces modifications apportées à des fins de test, vous pouvez accéder à votre site dans un navigateur Web sur votre ordinateur local et le contenu du fichier public/index.html est affiché.

Utiliser le ServerAlias

Notez que dans le fichier vhost, vous définissez un ServerAlias. Si vous avez correctement configuré le DNS, vous pouvez également utiliser cette adresse.

Nous parlerons de forcer une adresse ou l'autre dans un article ultérieur sur les règles de réécriture.

Répéter le processus pour l'autre domaine

Pour créer et activer domain2.com, répétez le processus comme suit :

  1. Créez le fichier vhost :

    sudo nano /etc/apache2/sites-available/domain2.com
    ...
    # Enter the details for domain2.com as per the example shown above
    
  2. Activez le site et redémarrez Apache :

    sudo a2ensite domain2.com
    ...
    sudo /etc/init.d/apache2 reload
    
  3. Accédez au deuxième domaine :

    https://domain2.com
    or
    https://www.domain2.com
    

Vous devriez voir le fichier d'index "domain2.com".

Afficher les fichiers journaux

Comme défini dans le fichier vhosts, chaque domaine a ses propres fichiers journaux.

Répertoriez les journaux de vos domaines :

ls /var/log/apache2/error-mydomainname.com.log

Le résultat est exactement comme prévu :

access.log  error.log

Fichier vhost par défaut

Bien que vous ayez modifié l'hôte virtuel par défaut, vous l'avez laissé en place.

Si quelqu'un entre l'adresse IP du serveur cloud, il reçoit le contenu de ce fichier vhosts par défaut (si vous n'avez pas configuré de vhost distinct pour l'adresse IP).

Pourquoi sont-ils servis à partir de ce fichier vhost ?

Apache recherche les fichiers vhost activés par ordre alphabétique et s'il n'en trouve pas pour l'adresse IP ou le nom de domaine demandé, il sert le premier (par ordre alphabétique).

Si vous aviez désactivé ou supprimé le fichier vhost par défaut, alors le contenu de domaine1.com serait affiché (avant domaine2.com par ordre alphabétique).

C'est quelque chose à considérer lors de la planification de vos sites Web. Voulez-vous que le domaine particulier soit la valeur par défaut ? Souhaitez-vous que l'adresse IP ait un contenu complètement différent ?

Définir l'adresse e-mail de l'administrateur

Définissez l'adresse e-mail de l'administrateur du serveur. Cette adresse est utilisée si vous configurez le serveur pour qu'il vous contacte lorsque des erreurs se produisent. Il est également affiché dans ServerSignature si sa valeur est définie sur Email. (Voir la section Définir les pieds de page Apache .

ServerAdmin [email protected]

Définir le nom de domaine

Définissez le nom de domaine (ServerName) pour l'hôte virtuel. Vous pouvez avoir autant d'alias (ServerAlias) que nécessaire. Par exemple, vous pouvez faire pointer domaine.com et domaine.net vers le même contenu.

ServerName domain.com
ServerAlias www.domain.com

Remarque  :Il ne s'agit pas d'une règle de réécriture, mais les domaines définis ici serviront le même contenu (en supposant que vous avez configuré le DNS pour qu'il pointe vers l'adresse IP de votre serveur cloud).

Définir le fichier d'index

Définissez le fichier d'index (la page d'accueil qui s'affiche lorsque l'adresse de domaine est saisie). Ceci est utile si vous souhaitez que l'utilisateur soit redirigé vers une autre page ou vers une page d'accueil non standard.

DirectoryIndex index.html

Remarque  :Ce n'est pas une bonne méthode pour rediriger les utilisateurs car ils peuvent accéder directement à une page non spécifiée, telle que domaine.com/index.php, tandis que la valeur DirectoryIndex ne fonctionne que pour ceux qui entrent dans domaine.com.

Définir le chemin des documents

Définissez l'emplacement des fichiers publics du domaine. Utilisez un chemin d'accès absolu.

DocumentRoot /home/demo/public_html/domain.com/public

Définir les fichiers journaux

Définissez les niveaux de journalisation et l'emplacement des fichiers journaux des hôtes virtuels.

LogLevel warn
ErrorLog  /var/log/apache2/error-mydomainname.com.log
CustomLog /var/log/apache2/access-mydomainname.com.log combined

Définir les documents d'erreur

Définissez le ErrorDocument, qui est utilisé pour tous les messages d'erreur standard.

ErrorDocument 404 /errors/404.html
ErrorDocument 403 /errors/403.html

Dans cet exemple, il existe un dossier « errors » dans le répertoire public. Chaque document d'erreur a été créé et placé dans le dossier des erreurs. Les chemins affichés sont relatifs au dossier DocumentRoot défini précédemment.

Si les messages d'erreur ne sont pas définis, Apache génère ses propres pages d'erreur. Les pages d'erreur personnalisées sont plus conviviales et peuvent être personnalisées autant ou aussi peu que vous le souhaitez.

Définir les pieds de page Apache

Définissez ServerSignature pour spécifier si les détails du serveur sont affichés dans les pages d'erreur ou les listes d'index générées par le serveur. Les options sont Activé, Désactivé et E-mail.

ServerSignature On

Le niveau de détail de la signature est configuré via ServerTokens, qui ne peut pas être défini dans le fichier Virtual Hosts. Pour Apachelayout du système d'exploitation Ubuntu, ceci est correctement défini dans "/etc/apache2/conf.d/security". Voir l'article Apache configuration #2 NEED LINK pour plus de détails.

Si ServerSignature est défini sur Email , l'e-mail ServerAdmin s'affichera.

Activer cgi-bin

Activez l'emplacement cgi-bin tel que défini par la disposition personnalisée des hôtes virtuels. Vous pouvez laisser cgi-bin à l'emplacement DocumentRoot si vous le souhaitez.

ScriptAlias /cgi-bin/ /home/demo/public_html/domain.com/cgi-bin/
<Location /cgi-bin>
  Options +ExecCGI
</Location>

Définir les options du répertoire

Définissez les options pour le répertoire spécifié. L'exemple suivant active l'option FollowSymLinks pour le répertoire public du domaine.com.

  Options FollowSymLinks

Voici d'autres options que vous pouvez définir :

Option de navigation dans les répertoires

Pour désactiver la navigation dans les répertoires, utilisez -Indexes. Pour activer la navigation dans les répertoires, utilisez +Index.

Options -Indexes

Option SSI

Activez ou désactivez les inclusions côté serveur. L'exemple suivant disablesit.

Options -Includes

Activez ou désactivez l'option pour suivre les liens symboliques. Soyez prudent avec cette option car elle peut entraîner des risques de sécurité (liaison par inadvertance aux dossiers de configuration).

Options -FollowSymLinks

Vous pouvez envisager d'utiliser la directive SymLinksIfOwnerMatch au lieu deFollowSymLinks. La directive SymLinksIfOwnerMatch permet de suivre les liens symboliques uniquement si le propriétaire du lien est identique au propriétaire du fichier ou du répertoire cible (en termes de propriété/permissions du système de fichiers Linux). Cela évite de nombreux risques de sécurité qu'une simple directive FollowSymlinks peut créer.

option .htaccess

Définissez AllowOverride sur None pour désactiver la prise en charge de .htaccess. Définissez-le sur Tous pour autoriser l'assistance.

AllowOverride None

Vous pouvez également spécifier les fonctionnalités .htaccess à activer, telles que :

AllowOverride AuthConfig Indexes

Les documentations Apachehtaccess et AllowOverride contiennent plus d'informations sur les différentes fonctionnalités.

N'oubliez pas de protéger spécifiquement votre fichier .htaccess. Vous pouvez le faire en le renommant en quelque chose d'obscur et en refusant l'accès au fichier à partir de sources externes :

AccessFileName .myobscurefilename
<Files ~ "^\.my">
    <SatisfyAll>
    Require all denied
    </SatisfyAll>
</Files>

Remarque :L'exemple précédent est formaté pour Apache 2.4. Si vous utilisez 2.2, remplacez ** Exiger que tout soit refusé ** par Order Allow,Deny | Refuser de tous | Satisfaisant .

Aucune option

Spécifiez Aucun pour désactiver toutes les options disponibles.

Options None

Hiérarchie des options

Les directives d'options peuvent être définies par répertoire, comme illustré dans l'exemple suivant :

  AllowOverride None
  Options None

AllowOverride All

Le premier paramètre de répertoire désactiverait toutes les options et désactiverait la prise en charge de.htaccess pour tous les répertoires.

Cependant, le deuxième paramètre de répertoire remplacerait le premier et la prise en charge de allow.htaccess pour le répertoire domain.com/public.

Résumé

Le fichier d'hôtes virtuels est un outil facile à utiliser mais très puissant. Nous vous recommandons d'entrer un paramètre, puis de le tester. Entrez ensuite le paramètre suivant et testez, et ainsi de suite.

Après vous être familiarisé avec lui, vous verrez que vous avez un contrôle précis sur tous vos dossiers et fichiers Web.


Linux
  1. Comment configurer des hôtes virtuels Apache sur CentOS

  2. Modifier le port SSH dans le système d'exploitation Linux Ubuntu

  3. Configurer Apache sur le système d'exploitation Ubuntu

  4. Configurer le serveur MySQL sur le système d'exploitation Ubuntu

  5. Créer des hôtes virtuels CentOS NGINX

Comment configurer des hôtes virtuels Apache sur CentOS 8

Comment configurer les hôtes virtuels Apache sur Ubuntu 18.10

Comment installer Apache Server et configurer des hôtes virtuels sur Ubuntu 22.04

Comment configurer les hôtes virtuels Apache sur Debian 11

Comment configurer les hôtes virtuels Apache sur Ubuntu 18.04

Comment configurer des hôtes virtuels Apache sur Ubuntu 20.04