Configuration des virtualhosts
Imaginons que nous souhaitions héberger deux domaines différents sur le serveur (domaine1.example
, domaine2.example
, un de ces domaines ayant deux sous-domaines (ssdom1.domaine2.example
, ssdom2.domaine2.example
).
On pourrait configurer ces virtualhosts directement dans la configuration du serveur, mais pour faciliter leur gestion, on va créer par exemple deux fichiers de configuration, un pour chaque domaine, afin d’en faciliter l’activation et la désactivation par la suite.
Dans un premier temps, il est nécessaire de vérifier la présence de la directive NameVirtualHost *:80
dans les fichiers de configuration d’Apache. En général, sur Debian, cette directive se trouve dans le fichier /etc/apache2/ports.conf
. Si cette directive est commentée [1], décommentez là, si elle n’est pas présente, ajoutez là.
Cas du domaine sans sous-domaine
Le domaine domaine1.example
n’a pas de sous-domaine à configurer.
On va faire pointer sa destination vers le répertoire local /var/www/domaine1.example/
par exemple.
On crée son fichier de configuration :
- sudo nano /etc/apache2/sites-available/domaine1.example
Dans lequel on ajoute les directives suivantes :
- <VirtualHost *:80>
- ServerName domaine1.example # Adresse principale
- ServerAlias www.domaine1.example # Aliases du domaine, si l'adresse ou les adresses sont utilisée, on pointe au même endroit, facultatif
- ServerAdmin postmaster@domaine1.example # Adresse email de l'admin du domaine, facultatif
- DocumentRoot /var/www/domaine1.example # Répertoire où pointe le domaine
- </VirtualHost>
Après son activation (voir ci-dessous), si le visiteur tape domaine1.example
ou www.domaine1.example
, il tombera sur le répertoire /var/www/domaine1.example
.
Cas du domaine qui a deux sous-domaine
Dans le cas de domaine2.example
, il sera nécessaire de déclarer trois virtualhosts différents dans le fichier de configuration.
Les différents adresses pointeront sur les dossiers :
-
/var/www/domaine2.example/www/
pourhttp://www.domaine2.example/
ethttp://domaine2.example
; -
/var/www/domaine2.example/ssdom1/
pourhttp://ssdom1.domaine2.texampled/
; -
/var/www/domaine2.example/ssdom2/
pourhttp://ssdom2.domaine2.example/
;
On crée son fichier de configuration :
- sudo nano /etc/apache2/sites-available/domaine2.example
Dans lequel on ajoute les directives suivantes :
- <VirtualHost *:80>
- ServerName domaine2.example # Adresse principale
- ServerAlias www.domaine2.example # Aliases du domaine, si l'adresse ou les adresses sont utilisée, on pointe au même endroit, facultatif
- ServerAdmin postmaster@domaine2.example # Adresse email de l'admin du domaine, facultatif
- DocumentRoot /var/www/domaine2.example/www # Répertoire où pointe le domaine
- </VirtualHost>
- <VirtualHost *:80>
- ServerName ssdom1.domaine2.example # Adresse principale
- ServerAdmin postmaster@domaine2.example # Adresse email de l'admin du domaine, facultatif
- DocumentRoot /var/www/domaine2.example/ssdom1 # Répertoire où pointe le domaine
- </VirtualHost>
- <VirtualHost *:80>
- ServerName ssdom2.domaine2.example # Adresse principale
- ServerAdmin postmaster@domaine2.example # Adresse email de l'admin du domaine, facultatif
- DocumentRoot /var/www/domaine2.example/ssdom2 # Répertoire où pointe le domaine
- </VirtualHost>
Après son activation (voir ci-dessous), si le visiteur tappe domaine2.example
ou www.domaine2.example
, il tombera sur le répertoire /var/www/domaine2.example/www
, s’il tappe ssdom1.domaine2.example
, il tombera sur le répertoire /var/www/domaine2.example/ssdom1
et ainsi de suite.
Activation et désactivation de virtualhosts
Sur Debian il est très simple d’activer ou de désactiver chaque virtualhost grâce aux commandes a2ensite
et a2dissite
[2]. On a préféré les séparer dans des fichiers de configuration différents afin que cette étape soit la plus simple possible.
Pour activer notre virtualhost domaine1
il suffit de tapper la commande suivante :
- sudo a2ensite domaine1
Pour le désactiver, la commande suivante doit être utilisée :
- sudo a2dissite domaine1
Afin de prendre en compte les modifications, il suffit de recharger la configuration du serveur Apache avec la commande :
- sudo /etc/init.d/apache2 force-reload