Você pode ativar ou desativar bits de configuração com o IfDefine, mas isso provavelmente não fará o que você deseja. Em vez disso, você pode definir variáveis de ambiente no script init do Apache para acessar dentro da configuração. Por exemplo, adicionando:
HOSTNAME=$(hostname)
para /etc/init.d/httpd
(antes da linha que chama httpd
!) em uma máquina RHEL passa o nome do host da máquina como uma variável. Não precisa ser a saída de um comando - tudo o que define uma variável no ambiente que inicia httpd
é bom. As variáveis podem ser usadas na configuração da seguinte maneira:
[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
Claro, você não está restrito à Header
diretiva. As variáveis podem ser usadas em qualquer lugar, como <Directory ${FOO}>
etc.
Se você não gosta disso (e isso não é legal ..), você pode gerar uma configuração a partir de um modelo usando m4 ou alguma outra linguagem de modelo.
ADICIONAIS :
Hum, uma maneira de torná-lo melhor seria armazenar todas as variáveis em um arquivo externo, talvez /etc/httpd/conf/variables.txt
:
FOO=/path/to/dir
ROLE=development
e inclua-os no seu init.d
script Apache com:
. /etc/httpd/conf/variables
antes de ligar httpd
. Ainda não é brilhante, mas pelo menos separa o script de inicialização e as variáveis.