====== Apache 2 mod_macro ======
Le module **macro** permet de factoriser sa configuration de Apache. On définit des macros puis on les appelle un peu comme les fonctions avec un langage de scripts. On peut faire des macros pour plus ou moins tout ainsi en organisant bien son système et en sachant factoriser sa configuration correctement on peut grandement se simplifier la vie.
Pour installer le mod_macro sur [[http://www.debian.org/|Debian]] et dérivées, rien de plus simple :
aptitude install libapache2-mod-macro
a2enmod macro
Afin de gérer mes macros, on peut créer un fichier //macro.conf// dans le répertoire ///etc/apache2/conf.d/// qui sera chargé au démarrage de Apache.
Admettons que nous disposons des 2 hôtes virtuels suivants (exemple bidon mais c’est pour montrer le principe) :
DocumentRoot /var/www/toto
ServerName toto.domaine.tld
ServerAlias toto.domaine.tld
ServerAdmin admin@toto.com
ErrorLog /var/log/apache2/toto_error.log
TransferLog /var/log/apache2/toto_access.log
DocumentRoot /var/www/titi
ServerName titi.domaine.tld
ServerAlias titi.domaine.tld
ServerAdmin admin@titi.com
ErrorLog /var/log/apache2/titi_error.log
TransferLog /var/log/apache2/titi_access.log
Il y a quand même pas mal de points communs entre ces 2 hôtes virtuels. En imaginant qu'on en ait 20 comme ça, la configuration devient vite lourde à gérer. Avec une seule et unique macro on va bien se simplifier la vie. Dans le fichier ///etc/apache2/conf.d/macro.conf// on écrit donc la macro suivante :
DocumentRoot /var/www/$root
ServerName $sub.$domain
ServerAlias $sub.$domain
ServerAdmin admin@$domain
ErrorLog /var/log/apache2/$domain_error.log
TransferLog /var/log/apache2/$domain_access.log
On regroupe les éléments communs aux hôtes virtuels pour les mettre dans une macro qui s’appelle **Domain** et qui prend 3 paramètres **sub**, le sous-domaine à utiliser, **domain**, le domaine à utiliser, et **root** le répertoire où se trouve les fichiers à rendre disponible sur le web.
Le fichier contenant les virtual hosts peut alors se simplifier en :
Use Domain toto domaine.tld rep_toto
Use Domain titi domaine.tld rep_titi
L’utilisation de la macro se fait avec la syntaxe très script-like ''Use NomMacro [paramètres]''. Il faut impérativement donner tous les paramètres à la macro sans quoi la vérification de la configuration échouera.
L’exemple d’utilisation donné ici est simple mais on peut faire des choses plus complexes en utilisant des macros dans d’autres macros, etc... Il faut juste trouver la configuration qui convient le mieux pour son serveur.