Planete terre

Héberger plusieurs sites sur un seul serveur apache

apache
web


Aujourd’hui, je vous parle hébergement de site internet. Il m’arrive régulièrement d’avoir des petits sites à héberger (Gare ta car, WordPress de dev, …). Pour ces sites, j’ai des besoins spécifiques qui ne me permettent pas de les héberger sur un hébergement mutualisé. N’ayant que peu de moyen, j’ai un seul serveur WEB public hébergé sur un petit serveur de type VPS. Je vais donc vous expliquer ici comment héberger différents sites sur un seul et unique serveur WEB apache grâce aux VirtualHost.

Comment accède t’on à un site internet ?

Tout d’abord, commençons par étudier comment accède un navigateur à un site internet. Lorsque vous entrer l’adresse d’un site dans votre navigateur (ou lorsque vous cliquez sur un lien de votre moteur de recherche favori), votre navigateur va demander à votre serveur DNS (souvent celui de votre box) à quel adresse IP se trouve ce site. Cette requête correspond à l’exécution d’un nslookup www.site.fr.

$ nslookup garetacar.eu
Server:		192.168.1.1
Address:	192.168.1.1#53

Non-authoritative answer:
Name:	garetacar.eu
Address: 149.202.51.171

Une fois que votre navigateur connaît l’adresse IP du serveur du site, il va le contacter sur le port que vous aurez spécifié. Le port 80 pour les adresses commençant par http://, 443 pour les sites en https:// ou encore un autre port si l’url du site contient : après le nom de domaine (le port 3615 pour http://www.exemple.fr:3615/index.html).

Ensuite votre navigateur va envoyer une requête HTTP GET au serveur WEB lui indiquant la page désirée et le site WEB que vous désirez voir s’afficher.

GET / HTTP/1.1
Host: garetacar.eu
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:50.0) Gecko/20100101 Firefox/50.0
Accept: */*
Accept-Language: fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate

C’est donc à partir de ces informations que votre serveur WEB va renvoyer la page correspondant à la requête. Comme vous pouvez le voir dans la requête nous avons une valeur Host, c’est celle-ci que nous utiliserons pour savoir quel site afficher.

Les VirtualHosts

Les VirtualHosts (VH) est un système permettant à partir d’une seule et unique IP de fournir plusieurs sites. Ces différents sites peuvent être servit sur des ports différents : 80 (HTTP), 443 (HTTPS) ou encore sur des noms de domaines différents.

J’ai l’habitude de créer un fichier de config apache par VH, cela me permet de les activer et désactiver à mon bon vouloir. Sous Debian, les fichiers de VirtualHosts sont à créer dans le répertoire /etc/apache2/sites-available/ sous un nom du style monsite.conf. Le .conf est important car sinon votre fichier n’est pas considéré comme un fichier de config.

<VirtualHost *:80>
        ServerName monsite.fr
        ServerAlias monsite.com

        ServerAdmin webmaster@monsite.fr
        DocumentRoot /var/www/monsite

        LogLevel info
        ErrorLog ${APACHE_LOG_DIR}/monsite_error.log
        CustomLog ${APACHE_LOG_DIR}/monsite_access.log combined
</VirtualHost>

Le fichier ci-dessus dit au serveur que si une requête arrivant sur n’importe quel IP et sur le port 80 (l.1 *:80) avec en valeur de Host: monsite.fr ou monsite.com (l.2-3) alors il lui faut servir les fichiers se trouvant dans /var/www/monsite (l.6). Ensuite nous lui demandons de nous enregistrer les logs dans des fichiers spécifique au site et non dans les fichiers de log apache standard (l.7-10). Les lignes obligatoires sont les lignes surlignées, les autres ne permettant que d’ajouter des spécifications supplémentaires.

Maintenant que notre fichier de configuration est prêt, nous devons l’activer.

# a2ensite monsite.conf
Enabling site parks.
To activate the new configuration, you need to run:
  service apache2 reload
# service apache2 reload

Voila votre premier VirtualHost est actif, vous pouvez en créer autant que vous le souhaitez dans les limites de capacité de votre serveur. N’hésitez pas à poster un commentaire si vous avez une question.

Sources: Documentation Apache

Commentaires

  • Yassine Jadid

    Je crois que votre configuration est local, je peux pas excéder a mes pages web d’un autre machine dans le même réseau???

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.