Вы можете включить или отключить биты конфигурации с IfDefine, но это, вероятно, не будет делать то, что вы хотите. Вместо этого вы можете установить переменные окружения в вашем скрипте инициализации Apache для доступа в конфигурации. Например, добавив:
HOSTNAME=$(hostname)
to /etc/init.d/httpd
(перед строкой, которая вызывает httpd
!) на машине RHEL передает имя хоста машины в качестве переменной. Это не обязательно должен быть вывод команды - все, что устанавливает переменную в среде, которая запускается httpd
, прекрасно. Переменные могут быть использованы в конфигурации следующим образом:
[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
Конечно, вы не ограничены этой Header
директивой. Переменные можно использовать где угодно, например, и <Directory ${FOO}>
т. Д.
Если вам это не нравится (и это не так приятно), вы можете сгенерировать конфигурацию из шаблона, используя m4 или другой язык шаблонов.
ДОПОЛНИТЕЛЬНО :
Хм, один из способов сделать это лучше - сохранить все переменные во внешнем файле, возможно /etc/httpd/conf/variables.txt
:
FOO=/path/to/dir
ROLE=development
и затем включите их в ваш init.d
скрипт Apache с помощью:
. /etc/httpd/conf/variables
перед звонком httpd
. Все еще не блестящий, но по крайней мере он разделяет сценарий запуска и переменные.