Puede habilitar o deshabilitar bits de configuración con IfDefine, pero eso probablemente no hará lo que quiere. En su lugar, puede establecer variables de entorno en su script de inicio Apache para acceder dentro de la configuración. Por ejemplo, agregando:
HOSTNAME=$(hostname)
a /etc/init.d/httpd
(antes de la línea que llama httpd
) en una máquina RHEL pasa el nombre de host de la máquina como una variable. No tiene que ser la salida de un comando; cualquier cosa que establezca una variable en el entorno que se inicie httpd
está bien. Las variables se pueden usar en la configuración de la siguiente manera:
[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
Por supuesto, no estás restringido a la Header
directiva. Las variables se pueden usar en cualquier lugar, como <Directory ${FOO}>
etc.
Si no le gusta esto (y no es tan agradable ...) puede generar una configuración a partir de una plantilla usando m4 o algún otro lenguaje de plantilla.
ADICIONAL :
Hrm, una forma de mejorarlo sería almacenar todas las variables en un archivo externo, tal vez /etc/httpd/conf/variables.txt
:
FOO=/path/to/dir
ROLE=development
y luego inclúyalos en su init.d
script Apache con:
. /etc/httpd/conf/variables
antes de llamar httpd
. Todavía no es brillante, pero al menos separa el script de inicio y las variables.