httpd 설정의 전체 구성이 무엇인지 알아 내려고 노력 중입니다.
모든 구성 파일은 서로 다른 파일 (/etc/httpd/conf.d, httpd.conf, 다양한 모드 구성)에 흩어져 있습니다.
최종 httpd 구성을 나열하는 방법이 있습니까?
단일 파일의 전체 실행 설정 구성처럼?
httpd 설정의 전체 구성이 무엇인지 알아 내려고 노력 중입니다.
모든 구성 파일은 서로 다른 파일 (/etc/httpd/conf.d, httpd.conf, 다양한 모드 구성)에 흩어져 있습니다.
최종 httpd 구성을 나열하는 방법이 있습니까?
단일 파일의 전체 실행 설정 구성처럼?
apachectl -S
"전체 구성"도 "단일 파일에서 전체 실행 설정 구성"을 제공하지 않는 경우를 제외하고 .
답변:
arco444에서 언급했듯이을 사용 apachectl -S
하여 현재 구성에서 실행중인 VirtualHosts의 개요 apachectl -M
를 표시하고 현재로드 된 모든 모듈을 표시 할 수 있습니다. httpd를 시작할 때 파싱되었습니다.) httpd 구성 파일 의 일반적인 구조에 익숙해지는 것이 좋습니다 .
귀하의 질문에 특히 유의하십시오 : '주'아파치 구성 파일은 /etc/httpd/conf/httpd.conf
(CentOS 6에 포함 된 저장소의 기본 httpd 설치의 221 행 영역에 있으며 게시물 태그를 기반으로 사용하고 있다고 가정합니다), '보조'구성 파일은에 있으며 /etc/httpd/conf.d
기본 구성 파일에 명시 적으로 포함되어야합니다. 예를 들어 httpd.conf
파일에서 ' Include
' 라는 용어 를 검색하면 하위 디렉토리에있는 Include conf.d/*.conf
모든 확장자 파일을 포함 하는 행 을 알파벳순으로 찾을 수 있으므로에서 구성 파일 구문 분석의 중요성에 익숙해지고 싶을 것입니다. 가능하다면 어떤 점..conf
conf.d
한편, vim과 같은 셸 기반 텍스트 편집기를 사용하는 경우 기본적으로 줄 번호 지정 및 구문 강조 표시를 사용하도록 설정하여 이러한 긴 구성 파일을 좀 더 쉽게 구문 분석하고 탐색 할 수 있도록하는 것이 좋습니다. , 홈 디렉토리에라는 파일을 만들고 .vimrc
(또는 기존 디렉토리에 추가) 다음 줄을 추가하면됩니다.
set nu
syntax on
Apache HTTP Server 문서에 설명 된대로
config define -DDUMP_CONFIG가 설정된 경우, mod_info는 서버 시작 중에 미리 구문 분석 된 구성을 stdout에 덤프합니다.
httpd -DDUMP_CONFIG -k start
DUMP_CONFIG
mod_info
활성화 필요 : a2enmod info
!
Ubuntu에서 다음을 수행하십시오.
sudo apache2ctl -DDUMP_CONFIG
줄 번호를 제거하려면
sudo apache2ctl -DDUMP_CONFIG | grep -vE "^[ ]*#[ ]*[0-9]+:$"
또는 파일로 리디렉션
sudo apache2ctl -DDUMP_CONFIG | grep -vE "^[ ]*#[ ]*[0-9]+:$" > /path/to/dump.conf
알려진 제한
mod_info는 원래 구성 파일을 읽는 대신 구문 분석 된 구성을 읽어 정보를 제공합니다. 구문 분석 된 구성 트리가 생성되는 방식으로 인해 몇 가지 제한 사항이 있습니다.
- 구문 분석 된 구성에 저장되지 않고 즉시 실행되는 지시문은 나열되지 않습니다. 여기에는 ServerRoot, LoadModule 및 LoadFile이 포함됩니다.
- Include와 같이 구성 파일 자체를 제어하는 지시문은 나열되지 않지만 포함 된 구성 지시문은 있습니다.
- 댓글은 나열되지 않습니다. (이것은 기능으로 간주 될 수 있습니다.)
- .htaccess 파일의 구성 지시문은 나열되지 않습니다 (영구 서버 구성의 일부를 형성하지 않기 때문에).
- 와 같은 컨테이너 지시문은 일반적으로 나열되지만 mod_info는 닫는.
- mod_perl과 같은 타사 모듈에서 생성 한 지시문은 나열되지 않을 수 있습니다.
해당 목적으로 mod_info를 사용 하십시오 : http://httpd.apache.org/docs/2.2/mod/mod_info.html
단점은 삭제 된 구성을 복구하는 데 필요하고 모듈을 아직로드하지 않은 경우 그다지 도움이되지 않는다는 것입니다.
구성 파일을 평평하게하고 (기본적으로) 주석을 제거하고 (기본적으로) # FILE
주석을 포함하는 스크립트 (alas, Perl; 용서하십시오)가 있습니다 . 따라서 어떤 파일에 원하는 파일이 있는지 알아낼 수 있습니다.
Oracle OHS에서도 사용되는 것으로 보이지만 Apache httpd로 작성했습니다.
https://github.com/cameronkerrnz/scriptorium/blob/master/httpd-dump-config
SSH 및 diff / meld / etc를 사용하여 다른 시스템의 구성을 비교하는 데 특히 유용합니다.
예:
httpd-dump-config | grep -i -e '# FILE:' -e servername -e serveralias
# FILE: /etc/httpd/conf/maintenance-curtain.conf
# FILE: /etc/httpd/conf.d/proxy.conf
# FILE: /etc/httpd/otago/secure-www.alias.conf
# FILE: /etc/httpd/conf.d/proxy.conf
ServerName www.otago.ac.nz
ServerAlias otago.ac.nz
다음은 diff (CLI) 및 meld (GUI)를 사용하는 예입니다.
diff -Bb <(httpd-dump-config) <(ssh root@revproxy2 httpd-dump-config)
meld <(httpd-dump-config) <(ssh root@revproxy2 httpd-dump-config) &
나는 수년 동안 많은 파일에 걸쳐 수천 줄의 구성이있는 구성을 탐색 할 때 이것을 많이 사용했습니다.
너무 많은 Apache 구성을 유지해야했을 때 요청한대로 스크립트를 준비했습니다. 많은 도움이되었습니다.
awk -v pc=$APCALL '
NR == 1 {
if (pf != "") {
print "### End of " pf " ###"
}
print "### " FILENAME " ###"
pf = FILENAME
}
{ if (pc || ( $1 !~ "^#" && $0 != "" ) ) {
printf "%5d %s\n", NR, $0
}
}
$1 ~ /^Include(Optional)?$/ {
$1 = ""
system("for ACF in " $0 "; do apache_config.sh $ACF; done" )
}
END {
print "### End of " pf " ###"
}
' "$@"
주석과 빈 줄을보고 싶다면 APCALL 환경 변수를 설정할 수 있습니다. 주의 사항 : ServerRoot에서 실행해야합니다.
apachectl -S
구성 실행,apachectl -M
로드 된 모듈 표시