Mise à jour le 22/07/2016 suite à l’excellent commentaire de leknoppix.
Sur votre serveur virtuel, vous avez installé apache, php, mysql, c’est super mais pas moyen de faire fonctionner plusieurs sites et de faire pointer vos noms de domaine ( et sous domaines ) vers vos différents répertoires dans /var/www/html
Pas de panique, voici la solution.
Ce tuto est destiné à un serveur de prod, un vps hébergé chez OVH, mais vous pouvez très bien le transposer à un autre serveur. Si vous développez à la maison, en remplacement du premier chapitre, je vous conseille cet article permettant de donner une adresse bidon à son site en lieu et place de 127.0.0.1 ou de localhost.
1 . Le nom de domaine
Dans votre espace client OVH, sélectionnez le nom de domaine : jaimelasaucisse.fr … c’est un exemple, j’aime la saucisse mais pas au point de payer un tribut à l’AFNIC pour autant.
Dans l’onglet “Zone DNS” vérifiez que votre domaine jaimelasaucisse.fr a été créé avec le type A et le type AAAA qui pointe bien vers les IP de votre VPS. ( type A = IPv4 & le type AAAA IPv6 )
Si vous voulez ajouter un sous domaine, un petit clic sur le bouton “Ajouter une entrée“, choisir dans “champs de pointage” le bouton “A” puis tapez votre sous domaine (toulouse.jaimelasaucisse.fr) et l’IPv4 de votre VPS comme “Cible“. Et c’est tout pour la gestion du domaine.
2 . Le stockage
Si je peux me faire mettre un conseil, créez un dossier par domaine. Et de sous dossiers pour chaque domaine et ses sous domaines.
|
cd /var/www/html sudo mkdir jaimelasaucisse.fr # Puis un sous dossier pour le site et un autre pour son sous domaine sudo mkdir www sudo mkdir toulouse |
et attribuer les dossiers à l’utilisateur www-data
|
sudo chown -R www-data:www-data /var/www/html |
3 . VirtualHost
Niveau apache, deux règles à respecter pour mieux s’y retrouver.
Premièrement, le nom du virtual host doit être identique au nom de domaine, c’est à dire :
|
cd /etc/apache2/sites-available/ sudo nano jaimelasaucisse.fr.conf |
Et deuxièmement, les sous domaines cohabitent dans le même fichier de configuration.
Un copié / collé sauvage avec ceci :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
<VirtualHost *:80> ServerName jaimelasaucisse.fr ServerAlias www.jaimelasaucisse.fr ServerAlias *.jaimelasaucisse.fr ServerAdmin webmaster@jaimelasaucisse.fr DocumentRoot "/var/www/html/jaimelasaucisse.fr" <Directory /var/www/html/jaimelasaucisse.fr> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all </Directory> RewriteEngine on # Domaine principal, redirection vers dossier /www/ RewriteCond %{HTTP_HOST} ^jaimelasaucisse\.fr RewriteRule ^(.*) /www/$1 [L] # Sous-domaine(s), redirection vers les sous dossiers RewriteCond %{HTTP_HOST} ^([^\.]+)\.jaimelasaucisse\.fr RewriteCond /var/www/html/jaimelasaucisse.fr/%1 -d RewriteRule ^(.*) /%1/$1 [L] </VirtualHost> |
Reste à activer avec :
|
a2ensite jaimelasaucisse.fr.conf sudo service apache2 restart |
Et ça marche !
Pour ajouter un nouveau sous-domaine, plus besoin de toucher au virtual host, un nouveau dossier dans /var/www/html/jaimelasaucisse.fr portant le même nom que le sous domaine et le tour est joué.
Important ! Si ça ne fonctionne plus avec l’installation de Let’s Encrypt ou autres pourvoyeurs de https://
Alors rendez vous au §4 de l’article : Passer son serveur en https avec Let’s Encrypt
Si vos dossiers sont vides, voici comment y palier temporairement :
|
echo 'saucisse' > /var/www/html/jaimelasaucisse.fr/www/index.html echo 'toulouse' > /var/www/html/jaimelasaucisse.fr/toulouse/index.html |