Ви можете ввімкнути або вимкнути біти конфігурації за допомогою IfDefine, але це, ймовірно, не буде робити те, що ви хочете. Натомість ви можете встановити змінні середовища у своєму скрипті Apache init для доступу до конфігурації. Наприклад, додавання:
HOSTNAME=$(hostname)
до /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 або іншу мову шаблону.
ДОДАТКОВО :
Hrm, одним із способів покращити його було б зберігання всіх змінних у зовнішньому файлі, можливо /etc/httpd/conf/variables.txt
:
FOO=/path/to/dir
ROLE=development
а потім включіть їх у свій init.d
сценарій Apache :
. /etc/httpd/conf/variables
перед тим, як дзвонити httpd
. Все ще не блискуче, але принаймні воно розділяє сценарій запуску та змінні.