Tutoriel : apache et les vhosts
Des personnes m'ont demandé à plusieurs reprises de leur expliquer "comment faire un vhost avec apache ?", pour leur répondre, je vais expliquer ici comment le créer, c'est une configuration assez simple à mettre en place. Nous allons le faire donc avec apache, un sous-domaine (ou un nom de domaine, c'est la même conf). La configuration est réalisée sous debian.
I - Explications :
Pour rappel, les vhosts (virtual hosts) sont utilisées pour pouvoir héberger plusieurs sites web par exemple sur une même machine/même ip. En gros, on redirige un domaine/sous-domaine sur l'IP de la machine qui hébergera le site, et on indique à apache "si je tape ce sous-domaine, montre-moi le contenu de ce répertoire sur le serveur (sous-entendu du site web qui se trouve derrière)".
II - DNS :
Je ne vais pas entrer dans les détails au niveau de la conf DNS avec bind, mais voici ce que nous retiendrons pour rediriger un sous-domaine sur la bonne IP :
mon-sous.domaine.tld. A IP-du-serveur
Relancez ensuite bind à coup de /etc/init.d/bind9 reload.
III - Maintenant, les préparatifs :
Avant la configuration du vhost lui-même, il faut créer le répertoire (si il n'existe pas) où se trouvera tout le contenu, par habitude, je mets tout le contenu dans un public_html :
mkdir /home/monsite/public_html
IV - Et on passe au vhost :
Les vhosts sont à créer dans /etc/apache2/sites-available/ sous debian. Ouvrez un nouveau fichier :
cd /etc/apache2/sites-available/ && nano mon-sous.domaine.tld
Et copiez cette configuration de base :
<VirtualHost *>
ServerAdmin root@localhost # vous pouvez y mettre votre mail, il sera affiché aux visiteurs en cas de problèmes techniques avec apache.
ServerName mon-sous.domaine.tld # le sous-domaine ou le domaine
ServerAlias www.mon-sous.domaine.tld # vous pouvez mettre un second domaine/sous-domaine pour un même vhost
DocumentRoot /home/monsite/public_html # le chemin vers le contenu du site
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /home/monsite/public_html> # le chemin vers le contenu du site
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
ErrorLog /var/log/apache2/error_mon-sous.domaine.tld # gestion des logs d'erreur
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/log/apache2/access_mon-sous.domaine.tld combined # gestion des logs d'accès
ServerSignature Off
</VirtualHost>
Les explications sont dans la configuration ci-dessus. La configuration est également disponible ici (pour des raisons de mise en page).
Comme je l'ai dit, la configuration est vraiment basique mais elle est suffisante pour un simple site web. Réfèrez-vous à Google pour d'autres paramètres possibles en fonction de vos besoins.
V - On indique tout ça à apache :
Il faut maintenant dire à apache d'utiliser le vhost :
a2ensite mon-sous.domaine.tld
Et le relancer pour lui indiquer cet ajout :
/etc/init.d/apache2 reload
Et voilà ! Apache est maintenant capable de diriger le sous-domaine vers le bon contenu.
VI - Et...
Pour supprimer un vhost :
a2dissite mon-sous.domaine.tld
Et il faut relancer apache.