IfDefineを使用して設定のビットを有効または無効にすることができますが、おそらくそれはあなたが望むことをしないでしょう。代わりに、Apache initスクリプトで環境変数を設定して、構成内でアクセスできます。たとえば、次を追加します。
HOSTNAME=$(hostname)
RHELマシンのto /etc/init.d/httpd
(httpd
!を呼び出す行の前)は、マシンのホスト名を変数として渡します。コマンドの出力である必要はありません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、それを改善する1つの方法は、すべての変数を外部ファイルに保存することです/etc/httpd/conf/variables.txt
。
FOO=/path/to/dir
ROLE=development
次に、これらをApache init.d
スクリプトに含めます:
. /etc/httpd/conf/variables
呼び出す前にhttpd
。まだ素晴らしいとは言えませんが、少なくとも起動スクリプトと変数は分離されます。