IfDefine 으로 구성 비트를 활성화 또는 비활성화 할 수 있지만 원하는 방식으로 작동하지 않을 수 있습니다. 대신 Apache init 스크립트에서 환경 변수를 설정하여 구성 내에서 액세스 할 수 있습니다. 예를 들어 다음을 추가하십시오.
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
다음을 사용하여 Apache init.d
스크립트에 포함하십시오 .
. /etc/httpd/conf/variables
전화하기 전에 httpd
. 여전히 훌륭하지는 않지만 적어도 시작 스크립트와 변수를 분리합니다.