====== 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.