คุณสามารถเปิดใช้งานหรือปิดใช้งานบิตของการกำหนดค่าด้วยIfDefineแต่นั่นอาจจะไม่ทำสิ่งที่คุณต้องการ คุณสามารถตั้งค่าตัวแปรสภาพแวดล้อมในสคริปต์เริ่มต้น Apache ให้เข้าถึงภายในการกำหนดค่าแทน ตัวอย่างเช่นการเพิ่ม:
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
สคริปต์Apache ของคุณด้วย:
. /etc/httpd/conf/variables
httpd
ก่อนที่จะเรียก ยังไม่สว่าง แต่อย่างน้อยก็แยกสคริปต์เริ่มต้นและตัวแปร