Se simplifier la gestion des DNS et des VHOST Apache multisite

Pour simplifier, quand j’emploie le terme vhost dans ce billet, il s'agit de "vhost par nom": une seule IP, ce sont les noms de domaines qui changent.

Au niveau de la zone DNS de tinad.fr

(gérée sur l'interface de online, meme si ce domaine est chez gandhi.) J'ai viré tous les CNAME de ce type:

plop IN CNAME www.tinad.fr.

(enfin la plupart, pour certains, je ne me permettais pas de risquer de les rendre inaccessibles longtemps) Et j'ai ajouté un champs de type A joker avec le caractere *

* IN A 88.191.97.230

Le but est que tous les sous domaines pointent vers le serveur :D

je récapitule ma zone DNS est ainsi à présent:

* IN A 88.191.97.230
www IN A 88.191.97.230

Je vous fait grâce des quelques CNAME que j'ai laissé par sécurité.

Les vhosts d'apache:

Préalable le fichier /etc/apache2/ports.conf

NameVirtualHost *:80
Listen 80
NameVirtualHost *:443
Listen 443

Rien de particulier hormis que je mets les directives NameVirtualHost dans ce fichier, je ne les remettrai pas dans les fichiers de vhosts par noms

Le vhost default

Il est paramétré dans mon cas dans le fichier /etc/apache2/sites-available/default

<VirtualHost *:80>
        ServerName default.tinad.fr
        DocumentRoot /var/www/default/
</VirtualHost>

Voici sa version super basique.

Si on jette un oeil dans le repertoire /etc/apache2/sites-enable, sous débian le lien qui l'appelle est nommé 000-default, de manière qu'il soit pris en premier, ce qui pour apache, en fait le VHOST par défaut: si aucun domaine ne correspond, apache utilisera ce vhost.

Le repertoire web /var/www/default/, donc utilisé par défaut (répétition), je n'y mets qu'un simple fichier index.php:

  1. <?php
  2. header('location: http://www.tinad.fr');
  3. ?>

Bah oui, si je ne connais pas le site demandé, je redirige sur le site principal, et ça m'évitera d'avoir du "duplicate content".

le fichier de vhost www.tinad.fr

/etc/apache2/sites-available/www.tinad.fr

<VirtualHost *:80>
ServerName www.tinad.fr
DocumentRoot /var/www/www.tinad.fr/
</VirtualHost>

Son repertoire est /var/www/www.tinad.fr/ pour l'activer:

  1. a2ensite /etc/apache2/sites-available/www.tinad.fr

Le blog du grouik

/etc/apache2/sites-available/blog-du-grouik.tinad.fr

<VirtualHost *:80>
ServerName blog-du-grouik.tinad.fr
DocumentRoot /var/www/blog-du-grouik.tinad.fr/
</VirtualHost>

Son repertoire est /var/www/blog-du-grouik.tinad.fr/ pour l'activer:

  1. a2ensite /etc/apache2/sites-available/blog-du-grouik.tinad.fr

conclusion

Vous avez compris le principe?

Je vois à peu pres comment automatiser la création de fichiers VHOST suite à un formulaire php, mais modifier la zone DNS automatiquement je n'aurai pas pu le faire.

Ceux qui ont lu ce billet ce doutent surement de ce que je vais tenter de mettre en place. Promis, si je le fais je resterai dans la démarche open source et expliquerai ici la méthode.

Page top