Programmation Web Avancée

Blogue

Les cours

Desservir plusieurs sites Web à partir d'un seul et même serveur


Rédigé par , le
Imaginons le cas où il est nécessaire d'avoir deux sites Web différents hébergés le même serveur. De façon générale, ces sites Web ont :
- Des noms de domaine différents (ou des sous-domaines différents)
- Des fichiers différents

Les étapes suivantes permettent de configurer un serveur Ubuntu afin d'y parvenir. 
 
Avant de commencer, il faut au préalable s'assurer que les noms de domaine (ou sous-domaines) pointent vers l'adresse IP du serveur.
 
Note : les étapes suivantes doivent être exécutées avec l'usager root.

La configuration des dossiers

Au départ, le serveur Apache est déjà configuré pour y desservir un site Web. Il ne s'agit donc que d'y déposer les fichiers dans le dossier /var/www/html. Cependant, ce dernier appartient à "www-data" et votre usager SSH pourrait ne pas avoir les permissions adéquates pour modifier le contenu du dossier. Voici donc comment rendre votre usager SSH propriétaire du dossier.
# Remplacez "votre-usager-ssh" par le nom de votre usager SSH
chown -R votre-usager-ssh /var/www/html
Par la suite, il faut préparer un dossier pour recevoir les fichiers du deuxième site Web.
mkdir /var/www/site2

# Encore ici, remplacez "votre-usager-ssh" par le nom de votre usager SSH
chown -R votre-usager-ssh /var/www/site2
chgrp -R www-data /var/www/site2

La configuration du serveur Apache

Il est maintenant temps de configurer Apache pour lui permettre de desservir le deuxième site Web. Il faut commencer par dupliquer la configuration du premier site Web.
cp /etc/apache2/sites-available/000-default.conf 
   /etc/apache2/sites-available/001-site2.conf
Ensuite, il faut modifier la configuration du nouveau fichier (001-site2.conf). 
nano /etc/apache2/sites-available/001-site2.conf
En utilisant un éditeur de texte (ex: nano, vi) il s'agit de modifier 3 choses:
# Sous <VirtualHost *:80>, ajoutez la ligne suivante.
ServerName site2.com
# Remplacez site2.com par le domaine/sous-domaine du deuxième site Web. 

# Modifier le documentRoot, ce qui indique à Apache où seront placés les fichiers.
DocumentRoot /var/www/site2

# Modifier /var/www/html pour /var/www/site2 sur la ligne <Directory ...
<Directory "/var/www/html">
Lorsque le fichier est configuré, il ne reste qu'à activer le nouveau site Web et sa configuration. Dans le terminal, écrire:
a2ensite 001-site2.conf
systemctl restart apache2.service

# ou, sur les serveurs Ubuntu plus agés...
a2ensite 001-site2.conf
service apache2 restart
Voilà! Vous devriez maintenant être capable avec vos deux domaines/sous-domaines de desservir des fichiers différents, donc d'avoir deux sites Web distincts. Le premier site desservira les fichiers à partir du dossier var/www/html, et le deuxième, /var/www/site2.

Merci à Alexandre G. (H2017) pour la suggestion de créer cet article.
Les commentaires sur cet article
Par : Robodesign
2018-01-25 20:00:13

Bonjour !

Tout d'abord, merci pour ce supper tuto !

J'ai juste une petite question...
Comment faire si l'on a plusieurs bases de données ? Admettons j'ai 3 sites et 2 ont besoin de BDD différentes.

Comment puis-je gerer ça?

D'avance merci

Robodesign

Par : timal
2018-04-28 11:17:25

Apres de nombreuses recherches , je ne savais pas comment lier un nom de domaine a un dossier en particulier dans mon WWW
Un grand merci , je ne savais pas vraiment comment faire jusqu' a ce que je tombe sur ton site , c est nickel , clair , bien expliqué et fonctionne parfaitement.

Big UP !!!

Ajouter votre commentaire
(facultatif)
(facultatif et non divulgé)
Captcha image
Prenez le nombre affiché et faites moins 1.
 
Blog  

Les articles


Pour envoyer une demande d'assistance à l'enseignant, cliquez ici