전체 httpd 구성을 어떻게 볼 수 있습니까?


83

httpd 설정의 전체 구성이 무엇인지 알아 내려고 노력 중입니다.

모든 구성 파일은 서로 다른 파일 (/etc/httpd/conf.d, httpd.conf, 다양한 모드 구성)에 흩어져 있습니다.

최종 httpd 구성을 나열하는 방법이 있습니까?
단일 파일의 전체 실행 설정 구성처럼?


12
apachectl -S구성 실행, apachectl -M로드 된 모듈 표시
arco444 2014

7
apachectl -S"전체 구성"도 "단일 파일에서 전체 실행 설정 구성"을 제공하지 않는 경우를 제외하고 .
Frederick Nord


1
Stack Overflow는 프로그래밍 및 개발 질문을위한 사이트입니다. 이 질문은 프로그래밍이나 개발에 관한 것이 아니기 때문에 주제에서 벗어난 것처럼 보입니다. 도움말 센터에서 내가 질문 할 수있는 항목을 참조 하세요 . 아마도 Web Applications Stack Exchange , Webmaster Stack Exchange 또는 Unix & Linux Stack Exchange 가 더 나은 곳이 될 것입니다.
jww

@imme 나는 당신의 첫 번째 "관련"링크가이 질문이 얼마나 흥미 롭다는 것을 알았습니다. 또한 참조한 모든 링크에 동일한 주석을 복사 / 붙여 넣기 한 것이 매우 흥미 롭습니다. Funny :)
Hickory420

답변:


50

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모든 확장자 파일을 포함 하는 행 을 알파벳순으로 찾을 수 있으므로에서 구성 파일 구문 분석의 중요성에 익숙해지고 싶을 것입니다. 가능하다면 어떤 점..confconf.d

한편, vim과 같은 셸 기반 텍스트 편집기를 사용하는 경우 기본적으로 줄 번호 지정 및 구문 강조 표시를 사용하도록 설정하여 이러한 긴 구성 파일을 좀 더 쉽게 구문 분석하고 탐색 할 수 있도록하는 것이 좋습니다. , 홈 디렉토리에라는 파일을 만들고 .vimrc(또는 기존 디렉토리에 추가) 다음 줄을 추가하면됩니다.

set nu
syntax on

CentOS에서 Apache 2.2를 사용하고 있습니다. 그러나 apachectl은 사용할 수 없습니다.
user674669

17

Apache HTTP Server 문서에 설명 된대로

config define -DDUMP_CONFIG가 설정된 경우, mod_info는 서버 시작 중에 미리 구문 분석 된 구성을 stdout에 덤프합니다.

httpd -DDUMP_CONFIG -k start

DUMP_CONFIGmod_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과 같은 타사 모듈에서 생성 한 지시문은 나열되지 않을 수 있습니다.


2

구성 파일을 평평하게하고 (기본적으로) 주석을 제거하고 (기본적으로) # 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) &

나는 수년 동안 많은 파일에 걸쳐 수천 줄의 구성이있는 구성을 탐색 할 때 이것을 많이 사용했습니다.


0

너무 많은 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에서 실행해야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.