Sie können Konfigurationsbits mit IfDefine aktivieren oder deaktivieren, aber das wird wahrscheinlich nicht das tun, was Sie wollen. Stattdessen können Sie Umgebungsvariablen in Ihrem Apache-Init-Skript festlegen, auf die innerhalb der Konfiguration zugegriffen werden soll. Zum Beispiel hinzufügen:
HOSTNAME=$(hostname)
to /etc/init.d/httpd
(vor der httpd
aufrufenden Zeile !) auf einem RHEL-Computer übergibt den Hostnamen des Computers als Variable. Es muss nicht die Ausgabe eines Befehls sein - alles, was eine Variable in der Umgebung festlegt, die gestartet wird, httpd
ist in Ordnung. Variablen können in der Konfiguration wie folgt verwendet werden:
[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
Natürlich sind Sie nicht auf die Header
Richtlinie beschränkt. Die Variablen können überall verwendet werden, wie z <Directory ${FOO}>
.
Wenn Sie dies nicht mögen (und es ist nicht so schön ..), können Sie eine Konfiguration aus einer Vorlage mit m4 oder einer anderen Vorlagensprache generieren .
ZUSÄTZLICHE :
Hrm, eine Möglichkeit, es besser zu machen, wäre, alle Variablen in einer externen Datei zu speichern, vielleicht /etc/httpd/conf/variables.txt
:
FOO=/path/to/dir
ROLE=development
und fügen Sie diese dann in Ihr Apache- init.d
Skript ein:
. /etc/httpd/conf/variables
bevor Sie anrufen httpd
. Immer noch nicht brillant, aber es trennt zumindest das Startskript und die Variablen.