यदि आप ifDefine के साथ कॉन्फ़िगरेशन के बिट्स को सक्षम या अक्षम कर सकते हैं, लेकिन संभवत: वह नहीं करेंगे जो आप चाहते हैं। इसके बजाय, आप कॉन्फ़िगरेशन के भीतर पहुंचने के लिए अपनी अपाचे इनिट स्क्रिप्ट में पर्यावरण चर सेट कर सकते हैं। उदाहरण के लिए, जोड़ना:
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
स्क्रिप्ट में शामिल करें:
. /etc/httpd/conf/variables
फोन करने से पहले httpd
। अभी भी शानदार नहीं है लेकिन कम से कम यह स्टार्टअप स्क्रिप्ट और चर को अलग करता है।