Agence web » Actualités du digital » Comment héberger plusieurs sites Web avec un serveur Apache

Comment héberger plusieurs sites Web avec un serveur Apache

Les hôtes virtuels Apache sont une fonctionnalité qui vous permet d’héberger plusieurs sites Web indépendants à partir d’une seule installation Apache. Chaque site a son propre répertoire de système de fichiers et son propre nom de domaine. Vous pouvez proposer différents sites à différents visiteurs en fonction du domaine qu’ils utilisent.

Les hôtes virtuels sont créés à l’aide du <VirtualHost> directive dans les fichiers de configuration Apache. Ils sont normalement stockés dans le sites-available répertoire dans l’emplacement d’installation d’Apache. Sur les systèmes Debian, c’est généralement /etc/apache2; d’autres distributions peuvent utiliser /etc/httpd.

Nous supposerons que vous avez déjà Apache opérationnel. Nous allons créer deux hôtes virtuels séparés, a.example.com et b.example.com. Il n’y a pas de limite au nombre d’hôtes virtuels que vous pouvez utiliser – si vous avez besoin d’une douzaine de sites sur un serveur, Apache vous obligera.

Configurer les sites

Chaque site a besoin de son propre répertoire de système de fichiers. Vous placerez les fichiers du site Web, tels que HTML, CSS et JavaScript, dans ce répertoire. Il s’appelle le DocumentRoot par Apache, car c’est la racine à partir de laquelle les documents sont servis.

Vous pouvez localiser vos sites n’importe où sur votre système. Vous verrez souvent des hôtes virtuels stockés dans /var/www, chaque site ayant son propre dossier:

sudo mkdir -p /var/www/a.example.com
sudo mkdir -p /var/www/b.example.com

/var/www appartient normalement à root, donc nous utilisons sudo pour créer les sous-répertoires. Ensuite, modifiez la propriété des racines du document à votre propre utilisateur et définissez les autorisations appropriées. Cela permettra à Apache de lire les fichiers tout en vous donnant un accès en écriture afin que vous puissiez ajouter votre contenu.

sudo chown -R $USER:$USER /var/www/a.example.com
sudo chown -R $USER:$USER /var/www/b.example.com
sudo chmod -R 755 /var/www

Copiez les fichiers de votre site Web dans les répertoires. Nous utiliserons deux simples index.html des dossiers:

a.example.com/index.html

<html>
    <body>
        <h1>a.example.com</h1>
    </body>
</html>

b.example.com/index.html

<html>
    <body>
        <h1>b.example.com</h1>
    </body>
</html>

Configurer Apache

Vous êtes maintenant prêt à configurer vos hôtes virtuels. Créez un nouveau fichier d’hôte virtuel pour chacun des sites. Peu importe le nom que vous donnez au fichier; par convention, il correspond généralement au nom d’hôte de votre site.

Au minimum, chaque hôte virtuel doit déclarer deux propriétés:

  • ServerName – Le nom d’hôte (domaine) à partir duquel le site sera servi.
  • DocumentRoot – L’emplacement du système de fichiers à servir pour cet hôte virtuel.

Voici un exemple de configuration pour nos deux sites:

/etc/apache2/sites-available/a.example.com.conf

<VirtualHost *:80>
    ServerName a.example.com
    DocumentRoot /var/www/a.example.com
</VirtualHost>

/etc/apache2/sites-available/b.example.com.conf

<VirtualHost *:80>
    ServerName b.example.com
    DocumentRoot /var/www/b.example.com
</VirtualHost>

Cette configuration de base suffit pour faire vivre les deux sites! le *:80 signifie qu’Apache envisagera d’utiliser cet hôte virtuel pour toute demande arrivant sur le port 80. Ils seront dissipés plus tard par le ServerName déclarations.

Activation des hôtes virtuels

Ajout d’un hôte virtuel à sites-available le fait disponible mais pas actif. Vous devez activer manuellement chaque site que vous souhaitez utiliser. Les configurations d’hôte virtuel à activer doivent être liées par un lien symbolique dans /etc/apache2/sites-enabled (ou alors /etc/httpd/sites-enabled).

Sur les systèmes Debian, vous pouvez utiliser le a2ensite commande pour simplifier cette étape:

a2ensite a.example.com
a2ensite b.example.com

Sur les autres distributions, utilisez le ln commande pour créer un lien symbolique manuellement.

sudo ln -s /etc/httpd/sites-available/a.example.com.conf /etc/httpd/sites-enabled/a.example.com.conf
sudo ln -s /etc/httpd/sites-available/a.example.com.conf /etc/httpd/sites-enabled/b.example.com.conf

Enfin, redémarrez Apache pour appliquer votre nouvelle configuration. Les modifications d’hôte virtuel nécessitent un redémarrage du serveur après les avoir ajoutées à sites-enabled.

sudo apache2ctl restart

Vous devriez maintenant pouvoir voir Apache servir vos deux sites différents. Si vous n’avez pas de résolution DNS sur votre serveur, vous pouvez modifier /etc/hosts fichier pour tester votre configuration.

Ajoutez les lignes suivantes à /etc/hosts:

127.0.0.1 a.example.com
127.0.0.1 b.example.com

Cela forcera les deux domaines à revenir à votre propre système. Vous pourrez maintenant les visiter dans votre navigateur pour voir les deux pages différentes de l’hôte virtuel.

Alias ​​de site

Si vous souhaitez servir le même site sur plusieurs domaines, utilisez le ServerAlias directive dans votre hôte virtuel. Chaque alias sera pris en compte lorsque Apache fera correspondre votre hôte virtuel aux demandes entrantes. L’hôte virtuel sera utilisé si la demande Host l’en-tête correspond à un ServerAlias ou la ServerName.

<VirtualHost *:80>
    ServerName a.example.com
    ServerAlias example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/a.example.com
</VirtualHost>

Cet exemple servirait le a site sur trois domaines, sans avoir à répéter les détails de configuration. Toi doit utiliser ServerAlias pour définir plusieurs domaines – répétition ServerName est possible mais il remplacera les utilisations précédentes.

Autres options de configuration

De nombreuses options de configuration de serveur Apache peuvent être utilisées avec des hôtes virtuels. Ils remplaceront les paramètres globaux du serveur lorsqu’Apache traite une demande à l’aide de l’hôte virtuel.

<VirtualHost *:80>
    ServerName a.example.com
    DocumentRoot /var/www/a.example.com
    DirectoryIndex my-index.html

    <Directory /var/www/a.example.com>
        AllowOverride All
        Options -Indexes
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Cet hôte virtuel applique de nombreux autres paramètres. my-index.html est servi par défaut, au lieu de index.htmlet des emplacements de journalisation personnalisés sont utilisés. En outre, des paramètres supplémentaires sont appliqués à la racine du document elle-même, à l’aide de la Directory bloquer. .htaccess les remplacements sont autorisés (AllowOverride All) et les pages de liste de répertoires par défaut d’Apache sont désactivées (Options -Indexes).

Hôtes d’adresses IP

Apache prend également en charge les hôtes basés sur IP en plus des hôtes basés sur les noms que nous avons vus jusqu’à présent. Les hôtes basés sur IP sont idéaux lorsque votre serveur dispose de plusieurs interfaces réseau, telles qu’un réseau d’entreprise interne et l’Internet public. Vous pouvez desservir un site différent en fonction de l’interface réseau utilisée.

<VirtualHost 172.17.0.1>
    ServerName a.example.com
    DocumentRoot /var/www/a
</VirtualHost>

<VirtualHost 172.17.0.1>
    ServerName b.example.com
    DocumentRoot /var/www/b
</VirtualHost>

<VirtualHost 192.168.0.1>
    ServerName a.example.com
    DocumentRoot /var/www/a2
</VirtualHost

Dans cet exemple, les demandes adressées à a.example.com via l’interface avec IP 192.168.0.1 recevraient un contenu différent de ceux envoyés via 172.17.0.1. De plus, les utilisateurs de cette dernière adresse IP pourraient accéder b.example.com. Ce site n’est pas exposé aux utilisateurs se connectant via 192.168.0.1.

Cette approche vous permet d’utiliser un serveur pour votre intranet d’entreprise et votre site Web public. Liez les sites internes à l’adresse IP LAN de votre serveur; exécutez les hôtes publics sur son adresse WAN.

Correspondance d’hôte virtuel

La routine de résolution de l’hôte virtuel d’Apache est bien documentée et assez simple.

En général, Apache essaie de faire correspondre le Host en-tête de demande contre un ServerName ou alors ServerAlias dans une configuration d’hôte virtuel. S’il y a plusieurs correspondances, Apache utilisera le premier correspondant à l’hôte virtuel qu’il a trouvé.

Les hôtes virtuels sont triés par ordre de nom de fichier. Si tu besoin un site à faire correspondre avant un autre, renommez son fichier de configuration pour qu’il trie avant le site cible. Vous pouvez ajouter un préfixe numérique tel que 000-a.example.com.conf. La plupart du temps, cela ne sera pas nécessaire – si tous vos sites ont des domaines uniques, vous ne devriez jamais rencontrer de conflit.

Conclusion

Les hôtes virtuels Apache vous permettent de décomposer la configuration multisite en fichiers de définition autonomes. Vous pouvez activer et désactiver indépendamment chaque site en le reliant à sites-enabled.

De nombreuses options de configuration sont disponibles pour les hôtes virtuels. Vous pouvez remplacer certains paramètres du serveur Apache sur une base par hôte, de sorte que vous ayez un contrôle total sur chaque configuration de site virtualisé.

En savoir plus sur l’hébergement web

Vous souhaitez en savoir plus sur l’hébergement web ? Si vous songez à créer un site internet, il est très important de connaître cette notion. C’est simple, sans l’hébergement web, les sites internet n’existeraient pas. Ou du moins, vous ne pourriez pas y avoir accès à l’aide de votre moteur de recherche. Pourquoi donc ? Nous allons vous aider à y voir plus clair dès à présent. 

Tout d’abord, rappelons ce qu’est l’hébergement web. L’hébergement web consiste à stocker des données de manière informatique à l’aide d’un hébergeur, afin de pouvoir les mettre à disposition en ligne. Des serveurs sont spécialement dédiés au stockage de données de sites web. Lorsque vous créez un site, vous passez donc obligatoirement par un hébergeur, qui vous permettra de rendre votre site visible sur les moteurs de recherche. C’est donc une notion très importante de la création de site internet. Vous ne pourriez pas lire cet article actuellement si le site n’était pas lui-même hébergé. Maintenant que vous en savez un peu plus sur l’hébergement web, nous allons pouvoir développer plus en détail pourquoi et comment héberger votre site internet. Nous vous présenterons ensuite les différents types d’hébergement, afin que vous puissiez choisir celui qui correspond à vos besoins. Si vous souhaitez aller plus loin suite à la lecture de ce petit guide, n’hésitez pas à découvrir cet autre article qui traite également de ce sujet.

Pourquoi héberger son site web ?

Nous l’avons vu précédemment, héberger son site web est en quelque sorte obligatoire afin de pouvoir le rendre visible. En effet, il est important de déposer toutes ses données, ainsi que ses scripts et codages, à un hébergeur qui peut par la suite les stocker et les faire réinterpréter par les moteurs de recherche. C’est donc avant tout une question de visibilité, mais il y a également une autre raison : la sécurité. En effet, le stockage de vos données ne consiste pas juste à les transmettre en ligne, mais également à les protéger. C’est pourquoi il est important de bien choisir votre hébergeur, afin de bien protéger vos données.

Comment héberger son site web ?

Bien que vous ayez compris pourquoi il est important d’héberger son site web, cela vous paraître abstrait. En effet, comment concrètement héberger son site ? La démarche est relativement simple. Vous sélectionnez un hébergeur, qui est propriétaire de serveurs stockant les données internet. Celui-ci ajoutera donc vos données à un de ses serveurs. Elles seront par la suite stockées et interprétées par les moteurs de recherche afin d’être communiquées aux utilisateurs d’internet qui cherchent à consulter votre site.

Maintenant que vous avez compris le fonctionnement global de l’hébergement web, nous allons aller plus loin en vous présentant les différents types d’hébergement possible. Bien qu’ils consistent tous à héberger votre site, ils fonctionnent chacun différemment.

Les différents types d’hébergement

Il existe 4 types d’hébergement web. Nous allons passer chacun d’entre eux en revue.

  • L’hébergement mutualisé : c’est l’hébergement classique, qui fonctionne globalement comme nous avons expliqué précédemment. Votre site internet est stocké sur un serveur, sur lequel sont également installés d’autres sites. Cet hébergement est le moins cher, mais le fait de partager le serveur entre sites peut ralentir la performance de votre site internet, notamment si vous avez beaucoup de visites. À éviter donc, si vous souhaitez avoir un fort flux, et des données très sécurisées.
  • L’hébergement dédié : Si vous recevez beaucoup de visites, que vous souhaitez une sécurité en béton, et que vous avez des connaissances en administration système, cet hébergement est fait pour vous. En effet, ce type d’hébergement est l’inverse de l’hébergement mutualisé. Le serveur est dédié entièrement à votre site internet. Attention, cet hébergement coûte cher, et demande de vraies maîtrises de configuration et d’administration.
  • L’hébergement VPS : ce type d’hébergement est une sorte d’hybride entre l’hébergement mutualisé et l’hébergement dédié, afin de regrouper un maximum d’avantages de chacun d’entre eux. Il s’agit donc d’un seul serveur réel, comme l’hébergement mutualisé, mais plusieurs serveurs virtuels sont par la suite créés sur ce serveur, afin d’optimiser les performances et d’augmenter la sécurité. Ce type d’hébergement offre un véritable rapport performance/prix intéressant. Il faut en revanche des connaissances en administration système également.
  • Le cloud : ce type d’hébergement possède un fonctionnement à part entière. Il consiste à stocker les données sur une multitude de serveurs uniquement en ligne. Il faut donc accepter que ses données ne soient pas au sein de l’entreprise, mais cet hébergement est le plus flexible et sécurisé.

★★★★★