httpd 설정의 전체 구성이 무엇인지 알아 내려고 노력 중입니다.
모든 구성 파일은 서로 다른 파일 (/etc/httpd/conf.d, httpd.conf, 다양한 모드 구성)에 흩어져 있습니다.
최종 httpd 구성을 나열하는 방법이 있습니까?
단일 파일의 전체 실행 설정 구성처럼?
답변
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에서 실행해야합니다.