Configuration de Bind9 avec wildcard et Apache2 avec VirtualHost dynamique

Je viens de refaire mon serveur de développement et j'en ai profité pour rendre sa configuration plus facile. Je travaille sur plusieurs projets et devoir configurer le DNS et le serveur apache pour chaque projet n'est pas des plus passionnant, surtout appliqué dans une entreprise avec une equipe d'une dizaine de développeurs, ou comment perdre 20 minutes.
J'ai opté pour une configuration de Bind à base de wildcard (*) et de Apache avec des vhost dynamique avec Debian Squeeze.

 

1. Configuration de Bind

On commence par installer Bind9.

 
> aptitude install bind9

On ajoute le serveur à la liste des serveurs utilisés pour la résolution des noms:

 
> vim /etc/resolv.conf
 
nameserver 127.0.0.1
nameserver 192.168.0.100
 

Il faut vérifier que le hostname est correct (ma machine s'appelle eeebox et se trouve dans le domaine workgoup):

 
> echo eeebox.WORKGROUP > /etc/hostname

Le fichier /etc/hosts devrait ressembler à:

 
127.0.0.1       localhost.localdomain   localhost
127.0.1.1       eeebox.WORKGROUP        eeebox
 
# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
 

Et le fichier /etc/host.conf devrait ressembler à:

 
order hosts, bind
multi on
nospoof on

Pour ne pas avoir de problème, j'utilise l'extension .dev pour mes url locale (j'espère que personne ne va la déposer et faire des sites avec un jour). Je dois donc l'enregistrer comme zone dans bind via le fichier /etc/bind/named.conf.local

 
> vim /etc/bind/named.conf.local
 
//DNS maitre
zone "dev" {
        type master;
        file "/etc/bind/db.dev.dns";
        forwarders{};
};
//resolution inverse de .dev
zone "0.168.192.in-addr.arpa" {
        type master;
        file "/etc/bind/db.dev.inv";
        forwarders{};
};
 

Dans la configuration je fais référence à deux fichiers /etc/bind/db.dev.dns et /etc/bind/db.dev.inv que je dois définir:

 
> vim /etc/bind/db.dev.inv
 
$TTL 86400
@       IN      SOA     eeebox.dev.        root.dev.  (
                                                 2001121702 ; Serial
                                                 28800      ; Refresh
                                                 14400      ; Retry
                                                 3600000    ; Expire
                                                 86400 )    ; Minimum
                NS      eeebox.dev.
 
4               PTR     eeebox.dev.
 
 
> vim /etc/bind/db.dev.dns
 
$TTL 86400
@       IN      SOA     eeebox.dev.     root.dev. (
                2001122303 ; Numero
                28800      ; Refresh
                14400      ; Retry
                3600000    ; Expire
                86400 )    ; Minimum
 
                NS      eeebox.dev.
eeebox          A       192.168.0.100
eeebox          HINFO   "Eeebox" "Linux Rocks"
 
*.ulrich.dev.   IN      A       192.168.0.100
*.muriel.dev.   IN      A       192.168.0.100
redmine.dev.    IN      A       192.168.0.100
 

Il ne reste plus qu'a redémarrer Bind. Maintenant toutes les urls quelque_chose.ulrich.dev seront attribuées à mon serveur.

2. Configuration d'Apache

Je suppose que Apache est déjà installé. Il faut activer le mod rewrite et surtout le mode vhost_alias.

 
> a2enmod rewrite vhost_alias

Ensuite il faut créer un vhost qui attrapera toutes les requêtes. Mes urls sont de la forme projet_nom.user_nom.dev. Le but étant de faire matcher le user_nom avec le nom du dossier de l'utilisateur dans /home et projet_nom avec le nom du dossier du projet. Ainsi l'url mon-code.ulrich.dev doit matcher le dossier /home/ulrich/mon-code/

 
<VirtualHost *:80>
        UseCanonicalName Off
        VirtualDocumentRoot /home/%2/%1/web/
 
        ErrorLog /var/log/apache_error.log
        LogLevel warn
        CustomLog /var/log/apache_access.log combined
        ServerSignature Off
</VirtualHost>
 

J'ai ajouté un dossier web/ dans le chemin car je ne travaille que sur des projets Symfony et la nature de symfony m'impose de faire pointer mes vhosts dans ce dossier. Hormis les noms de dossiers, la principal limitation se trouve dans les logs. Il est impossible d'avoir des logs séparés par utilisateur ou par projet.
Il ne reste plus qu'a activer le vhost et redémarrer apache.

C'est la fin de cet article. Voilà une configuration simple à mettre en oeuvre et qui permet de travailler sur de nouveau projet sans avoir à compléter la configuration du serveur.

Ajouter un commentaire