Puoi abilitare o disabilitare i bit di configurazione con IfDefine ma probabilmente non farà ciò che desideri. Invece, puoi impostare le variabili di ambiente nello script init di Apache per accedere all'interno della configurazione. Ad esempio, aggiungendo:
HOSTNAME=$(hostname)
a /etc/init.d/httpd
(prima della linea che chiama httpd
!) su una macchina RHEL passa il nome host della macchina come variabile. Non deve essere l'output di un comando: tutto ciò che imposta una variabile nell'ambiente che si avvia httpd
va bene. Le variabili possono essere utilizzate nella configurazione in questo modo:
[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
Naturalmente, non sei limitato alla Header
direttiva. Le variabili possono essere utilizzate ovunque, come <Directory ${FOO}>
ecc.
Se non ti piace (e non è così carino ...) puoi generare una configurazione da un modello usando m4 o qualche altro linguaggio di template.
AGGIUNTIVO :
Hm, un modo per renderlo migliore sarebbe quello di memorizzare tutte le variabili in un file esterno, forse /etc/httpd/conf/variables.txt
:
FOO=/path/to/dir
ROLE=development
e poi includili nel tuo init.d
script Apache con:
. /etc/httpd/conf/variables
prima di chiamare httpd
. Ancora non brillante ma almeno separa lo script di avvio e le variabili.