🇫🇷 Gérer plusieurs sites avec les virtuals hosts d'Apache

Outdated article!

If it's a technical article, take care, maybe some informations are not exact anymore.
Otherwise, please keep in mind that this article was written quite a long time ago.

Vous connaissez certainement déjà les alias, qui permettent de gérer plusieurs sites et qui sont très simple à mettre en place. Mais peut-être n'avez-vous jamais entendu parler des virtuals hosts d'Apache.

Pour simplifier, les alias permettent uniquement de créer un "lien symbolique" entre un dossier choisi (par exemple le dossier contenant toutes le sources de phpmyadmin) et votre serveur web. Une fois votre alias créé, il vous suffit d'appeler l'URL que vous auriez appelé si le dossier choisi se trouvait physiquement à la racine de votre serveur web. (http://localhost/phpmyadmin).

Avec les virtuals hosts, le fonctionnement est fondamentalement différent. Ici, le but est d'avoir plusieurs racines de sites web avec un seul et unique serveur apache. L'intérêt? Pouvoir gérer divers sites indépendamment les uns des autres, ce qui n'est pas le cas en utilisant les alias, puisque cette solution n'utilise qu'une seule racine.

Maintenant que vous êtes convaincu de l'intérêt des virtuals hosts (du moins je l'espère), passons à la configuration d'apache! :)

La configuration des virtuals hosts se fera dans le fichier httpd-vhosts.conf (dossier /conf/extra du répertoire d'installation d'apache). Mais avant de commencer, il faut vérfier que ce fichier est bien appelé par le fichier de configuration principal, à savoir httpd.conf (dossier /conf du répertoire d'installation d'apache).

Ouvrez donc ce fichier et vérifiez que la ligne d'include de httpd-vhosts.conf est bien décommentée:

# Virtual hosts
Include conf/extra/httpd-vhosts.conf

Maintenant, on commence les choses sérieuses en ouvrant le-dit fichier httpd-vhosts.conf.

Vous pouvez commencer par supprimer les exemples avant d'ajouter cette ligne INDISPENSABLE à votre fichier:

NameVirtualHost *:80

Ensuite, voici la configuration pour un virtual host pour le site "monSiteWeb":

<VirtualHost *:80>
    DocumentRoot "c:/racine/de/monSiteWeb/"
    ServerName local.monsiteweb.fr
    ServerAdmin webmaster@monsiteweb.fr
    ErrorLog logs/local.monsiteweb.fr-error_log
    TransferLog logs/local.monsiteweb.fr-access_log
</VirtualHost>

Quelques explications:

  • DocumentRoot: Le chemin d'accès à la racine de votre projet
  • ServerName: Le nom qui sera utilisé pour accéder au site. Vous pouvez mettre ce que vous souhaitez! Personnellement, j'ai pris l'habitude de mettre "local." suivi du nom du site afin d'être certain que cette URL est bien locale.
  • ServerAdmin (facultatif): L'adresse mail de l'administrateur du site.
  • ErrorLog (facultatif): le fichier dans lequel seront stockés les logs d'erreurs de votre site.
  • TransferLog (facultatif): le fichier dans lequel seront stockés les logs d'accès de votre site.
  • D'autres paramètres sont bien entendu disponibles. je vous laisse vous référer à la documentation officielle si besoin est.

Redémarrez maitenant votre serveur apache afin que les changements soient pris en compte.

Votre virtual host est maintenant fonctionnel! Dernière manipulation avant de pouvoir y accéder, mettre à jour votre fichier hosts!

Ce dernier se trouve:

  • pour Windows: C:\WINDOWS\system32\drivers\etc\hosts
  • pour Linux: /etc/hosts

Ajoutez la ligne suivante:

127.0.0.1     local.monsiteweb.fr

Cela signifie que toutes les requêtes adressées à local.monsiteweb.fr seront transférées au serveur 127.0.0.1, c'est à dire VOTRE serveur.

Vous devriez maintenant pouvoir tester votre configuration en vous rendant à l'adresse suivante: http://local.monsiteweb.fr

Si vous avez une erreur 404, assurez-vous que votre navigateur a bien pris en compte les modifications effectuées dans le fichier hosts. Pour cela effacer le cache et rédemarrez-le.

Tags: apache, virtual hosts