Vous pouvez activer ou désactiver des éléments de configuration avec IfDefine, mais cela ne fera probablement pas ce que vous voulez. Au lieu de cela, vous pouvez définir les variables d’environnement de votre script d’init Apache pour y accéder dans la configuration. Par exemple, ajouter:
HOSTNAME=$(hostname)
to /etc/init.d/httpd
(avant la ligne qui appelle httpd
!) sur une machine RHEL transmet le nom d'hôte de la machine sous forme de variable. Il n'est pas nécessaire que ce soit le résultat d'une commande - tout ce qui définit une variable dans l'environnement qui se lance httpd
est correct. Les variables peuvent être utilisées dans la configuration comme suit:
[root@dev ~]# cat /etc/httpd/conf.d/test.conf
Header set X-Hostname ${HOSTNAME}
[root@dev ~]# GET -Sed http://localhost
GET http://localhost --> 200 OK
Connection: close
Date: Fri, 11 Sep 2009 20:47:13 GMT
Server: Apache/2.2.3 (Red Hat)
Content-Length: 525
Content-Type: text/html;charset=ISO-8859-1
Client-Date: Fri, 11 Sep 2009 20:47:13 GMT
Client-Peer: 127.0.0.1:80
Client-Response-Num: 1
Title: Index of /
X-Hostname: dev.local
Bien sûr, vous n'êtes pas limité à la Header
directive. Les variables peuvent être utilisées n'importe où, comme <Directory ${FOO}>
etc.
Si vous n'aimez pas cela (et que ce n'est pas très agréable ..), vous pouvez générer une configuration à partir d'un modèle utilisant m4 ou un autre langage de modèle.
SUPPLÉMENTAIRE :
Hrm, une façon de l’améliorer serait de stocker toutes les variables dans un fichier externe, par exemple /etc/httpd/conf/variables.txt
:
FOO=/path/to/dir
ROLE=development
et ensuite les inclure dans votre init.d
script Apache avec:
. /etc/httpd/conf/variables
avant d'appeler httpd
. Toujours pas brillant mais au moins ça sépare le script de démarrage et les variables.