Anda dapat mengaktifkan atau menonaktifkan bit konfigurasi dengan IfDefine tetapi itu mungkin tidak akan melakukan apa yang Anda inginkan. Sebagai gantinya, Anda dapat mengatur variabel lingkungan di skrip init Apache Anda untuk mengakses dalam konfigurasi. Misalnya, menambahkan:
HOSTNAME=$(hostname)
to /etc/init.d/httpd
(sebelum baris yang memanggil httpd
!) pada mesin RHEL meneruskan nama host mesin sebagai variabel. Itu tidak harus menjadi output dari perintah - apa pun yang menetapkan variabel di lingkungan yang diluncurkan httpd
baik-baik saja. Variabel dapat digunakan dalam konfigurasi seperti:
[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
Tentu saja, Anda tidak terbatas pada Header
arahan. Variabel dapat digunakan di mana saja, seperti <Directory ${FOO}>
dll.
Jika Anda tidak suka ini (dan itu tidak baik ..), Anda dapat membuat konfigurasi dari template menggunakan m4 atau bahasa template lainnya.
TAMBAHAN :
Hrm, salah satu cara untuk membuatnya lebih baik adalah menyimpan semua variabel dalam file eksternal, mungkin /etc/httpd/conf/variables.txt
:
FOO=/path/to/dir
ROLE=development
dan kemudian sertakan ini ke dalam init.d
skrip Apache Anda dengan:
. /etc/httpd/conf/variables
sebelum menelepon httpd
. Masih tidak brilian tetapi setidaknya memisahkan skrip startup dan variabel.