IfDefine ile yapılandırma bitlerini etkinleştirebilir veya devre dışı bırakabilirsiniz ancak bu muhtemelen istediğiniz şeyi yapmaz. Bunun yerine, yapılandırma değişkenlerine erişmek için Apache init betiğinizde ortam değişkenlerini ayarlayabilirsiniz. Örneğin, ekleyerek:
HOSTNAME=$(hostname)
için /etc/init.d/httpd
(çağıran hat önce httpd
bir RHEL makinede!) bir değişken olarak yer makinenin ana bilgisayar adını geçirir. Bir komutun çıktısı olmak zorunda değildir - başlatılan ortamda değişken ayarlayan herhangi bir şey httpd
iyidir. Değişkenler aşağıdaki gibi konfigürasyonda kullanılabilir:
[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
Tabii ki, Header
direktifle sınırlı değilsin . Değişkenler <Directory ${FOO}>
vb. Her yerde kullanılabilir .
Bundan hoşlanmıyorsanız (ve o kadar da hoş değil ..) bir şablondan m4 veya başka bir şablon dilini kullanarak bir yapılandırma oluşturabilirsiniz .
Ek :
Hrm, daha iyi hale getirmenin bir yolu, tüm değişkenleri harici bir dosyada depolamak olabilir, belki de /etc/httpd/conf/variables.txt
:
FOO=/path/to/dir
ROLE=development
ve sonra bunları Apache init.d
betiğinize ekleyin :
. /etc/httpd/conf/variables
aramadan önce httpd
. Yine de mükemmel değil ama en azından başlangıç komut dosyasını ve değişkenlerini ayırır.