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