Apache2 et VirtualHosts pour multi-site

Aujourd’hui nous allons voir comment installer et configurer proprement plusieurs VirtualHosts pour du multi-site sur un environnement dédié en utilisant Apache 2.

Création des VirtualHosts sur Apache2

La création des VirtualHosts se fait toujours dans le dossier /etc/apache2/sites-available. Dedans, on créé un ou plusieurs fichiers en .config dans lesquels vont être placés les VirtualHosts. Il existe deux possibilités :

  • Un seul et unique fichier de config pour tous les Virtualhosts :
    • + Un seul fichier à gérer en cas de modifs
    • + Facilement gérable pour quelques sites
    • + Facile d’installer un seul certificat SSL comprenant tous les sites
    • – Fichier qui peut très vite devenir brouillon
    • – Risques de conflits s’il on installe un certificat SSL par site via certbot
  • Un fichier de config par Virtualhost :
    • + Chaque fichier est clairement identifiable au site qui lui correspond
    • + Plus propre et plus lisible
    • + Pas de conflit SSL avec certbot
    • – Galère à modifier si beaucoup de sites

Il n’y a pas de meilleure solution. Mais en ce qui me concerne, je privilégie toujours un fichier de config par VirtualHost puisque je vais utiliser CertBot pour générer un certificat SSL par site. C’est cette méthode que nous allons voir.

Création des VHs en ligne de commande

Une multitude d’articles existent pour créer des VirtualHosts. Comme il ne s’agit pas de ré-inventer la roue, je vous mets les principaux liens qui m’ont servi :

A noter que la plupart des tutoriels ci-dessus intègrent un dossier public_html pour chacun de leur site. Or, cela correspondrait plutôt à l’exemple 1..

Si vous avez plutôt une structure 2. voir 3., et que vous ne pouvez pas adapter l’architecture des sites, pas de panique, déclarez simplement le nom de domaine en tant que DocumentRoot :

DocumentRoot /var/www/monsite1.fr

Et déclarez vos directives de dossier/fichiers dans un ou plusieurs <Directory> ou <Files>. Exemple :

# Interdit l'accès à l'ensemble des éléments du dossier monsite1.fr
# -Indexes : Interdit le listing des répertoires
# +FollowSymLinks : Suit les liens symboliques
<Directory /var/www/monsite1.fr>
AllowOverride All
Order Deny, Allow
Deny from All
Options -Indexes +FollowSymLinks
</Directory>

# Mais on peut par exemple autoriser l'accès à un sous-dossier spécifique de monsite1.fr
<Directory /var/www/monsite1.fr/dossier-public>
AllowOverride All
Order Allow, Deny
Allow from All
</Directory>

Vous pouvez aussi très bien autoriser tout le site et interdire quelques dossiers sensibles :

# Autorise l'accès à l'ensemble des éléments du dossier monsite1.fr
# -Indexes : Interdit le listing des répertoires
# +FollowSymLinks : Suit les liens symboliques
<Directory /var/www/monsite1.fr>
AllowOverride All
Order Allow, Deny
Allow from All
Options -Indexes +FollowSymLinks
</Directory

Puis mettre une directive restrictive en ciblant un dossier spécifique, ou encore, mettre un .htaccess dans chaque dossier concerné.

Une fois votre VirtualHost réalisé, n’oubliez pas de l’activer via un lien symbolique vers le dossier /etc/apache2/sites-enabled :

sudo ln -s /etc/apache2/sites-available/monsite1.fr.conf /etc/apache2/sites-enabled/monsite1.fr.conf

Ou via a2ensite :

 sudo a2ensite monsite1.fr.conf

Et de redémarrer Apache :

sudo service apache2 restart

Une fois fait, le site est en ligne ! Faîtes exactement la même procédure pour l’ensemble de votre multi-site en adaptant bien sur à l’arborescence.

Vous souhaitez maintenant installer un certificat SSL pour vos sites ? C’est par ici. [bientôt]

Auteur : Pierre Viéville

Diplômé d'un D.U.T informatique en 2012, je me suis lancé en freelance durant décembre de cette même année. C'est avec succès que je vous propose aujourd'hui mes services et mon expérience afin de vous accompagner vous, entreprises, associations, indépendants, dans la promotion de votre activité sur le net.

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.