Vous pouvez activer ou désactiver des bits de configuration avec SiDefine mais cela ne fera probablement pas ce que vous voulez. Au lieu de cela, vous pouvez définir des variables d'environnement dans votre init Apache script pour y accéder dans la configuration. Par exemple, en ajoutant :
HOSTNAME=$(hostname)
à /etc/init.d/httpd
(avant la ligne qui appelle httpd
!) sur une machine RHEL passe le nom d'hôte de la machine en tant que variable. Il n'est pas nécessaire qu'il s'agisse de la sortie d'une commande -- tout ce qui définit une variable dans l'environnement qui permet de lancer la commande httpd
est bien. 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é à l' Header
directive. Les variables peuvent être utilisées n'importe où, comme <Directory ${FOO}>
etc.
Si vous n'aimez pas cela (et ce n'est pas si agréable ), vous pouvez générer une configuration à partir d'un modèle à l'aide de la fonction m4 ou un autre langage de modèle.
ADDITIONNEL :
Hrm, une façon de l'améliorer serait de stocker toutes les variables dans un fichier externe, peut-être /etc/httpd/conf/variables.txt
:
FOO=/path/to/dir
ROLE=development
et ensuite les inclure dans votre Apache init.d
script avec :
. /etc/httpd/conf/variables
avant d'appeler httpd
. Ce n'est toujours pas brillant mais au moins cela sépare le script de démarrage et les variables.