Apache가 사용중인 구성 파일을 어떻게 알 수 있습니까?


36

Mac OS X에서 가상 호스트를 설정하려고합니다. httpd.conf를 수정하고 서버를 다시 시작했지만 제대로 작동하지 않았습니다. 또한 httpd.conf (라이브러리 / WebServer / Documents)에 언급 된 DocumentRoot의 파일을 제공하지 않지만 다른 디렉토리 (/ usr / local / apache2 / htdocs)에 파일을 제공하고 있습니다. httpd.conf에이 폴더가 언급되어 있지 않습니다. 또한 PHP는 작동하지만 "LoadModule php5_module"줄은 주석 처리되어 있습니다. 이것은 다른 .conf 파일을 사용하고 있다고 생각합니다. 실제로 어떤 구성이로드되고 있는지 어떻게 알 수 있습니까?

업데이트 : 방금 httpd.conf를 삭제하고 아파치가 다시 시작한 후에 동일하게 작동하므로 확실히 사용하지 않았습니다!

답변:


45

* nix 응용 프로그램에서 가장 쉬운 방법은 이진 자체를 쿼리하는 것입니다. httpd의 경우 프로세스가 다음과 같습니다.

$ whereis httpd
/usr/sbin/httpd
$ /usr/sbin/httpd -V
Server version: Apache/2.2.11 (Unix)
Server built:   Jun 17 2009 14:55:13
Server's Module Magic Number: 20051115:21
Server loaded:  APR 1.2.7, APR-Util 1.2.7
Compiled using: APR 1.2.7, APR-Util 1.2.7
Architecture:   64-bit
Server MPM:     Prefork
  threaded:     no
    forked:     yes (variable process count)
Server compiled with....
 -D APACHE_MPM_DIR="server/mpm/prefork"
 -D APR_HAS_SENDFILE
 -D APR_HAS_MMAP
 -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
 -D APR_USE_FLOCK_SERIALIZE
 -D APR_USE_PTHREAD_SERIALIZE
 -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
 -D APR_HAS_OTHER_CHILD
 -D AP_HAVE_RELIABLE_PIPED_LOGS
 -D DYNAMIC_MODULE_LIMIT=128
 -D HTTPD_ROOT="/usr"
 -D SUEXEC_BIN="/usr/bin/suexec"
 -D DEFAULT_PIDLOG="/private/var/run/httpd.pid"
 -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
 -D DEFAULT_LOCKFILE="/private/var/run/accept.lock"
 -D DEFAULT_ERRORLOG="logs/error_log"
 -D AP_TYPES_CONFIG_FILE="/private/etc/apache2/mime.types"
 -D SERVER_CONFIG_FILE="/private/etc/apache2/httpd.conf"

보시다시피-내 OS X에 따르면 바이너리가 다르게 지시되지 않으면 구성 파일을 사용합니다. /private/etc/apache2/httpd.conf

그래도 도움이되지 않으면 Christopher의 찾기 제안이 다음 단계 일 것입니다.


2
Server.app를 통해 Apache를 사용하는 경우 작동하지 않습니다.이 경우 Server.app가 httpd를 시작 함을 나타내는 @msanford serverfault.com/a/155114/187798 의 답변에 프로세스 목록이 필요합니다. 내 설치 (매버릭스)와 같이 다른 구성 파일을 사용하여/usr/sbin/httpd -D FOREGROUND -f /Library/Server/Web/Config/apache2/httpd_server_app.conf -D WEBSERVICE_ON
Jason S

macports를 통해 설치된 아파치를 사용할 때도 작동하지 않습니다-msandord의 답변이 저에게 효과적입니다!
pgee70


10

시험

ps ax | grep httpd

그리고 당신은 (와 같이) 출력을 얻어야합니다.

1633   ??  Ss     0:00.21 /usr/sbin/httpd -f /etc/httpd.conf

또한 서버를 정확히 어떻게 다시 시작합니까? 어떻게 든 실제로 구성 파일을 다시 읽지 않는 경우 궁금 합니다.


흠 여기에 -f깃발 이 없습니다
Claudiu

1
+1 이것은 모든 경우에 적용되는 유일한 대답이므로, Apache를 직접 구성하거나 Server.app를 통해 Apache를 사용하는 경우
Jason S

2

일부 구성은 서버 응용 프로그램을 사용하기 때문에, brew 또는 무엇이든, 하나의 라이너 FTW 때문에 :

$(ps ax -o comm | grep -m 1 httpd) -V | grep SERVER_CONFIG_FILE

이 명령은 다음을 수행합니다.

  • 활성화 된 httpd 프로세스 찾기
  • 출력 구성 정보
  • 구성 파일을 가져옵니다.

Sierra & El Capitan에서 테스트


$(는이 경우 프롬프트 명령 줄이 아니다) 중요합니다. parens의 명령문을 명령으로 변환하면 -V플래그를 전달합니다 . 이를 생략하면 "예기치 않은 토큰`-V '근처의 구문 오류"가 발생합니다.
톰 오거

0

먼저 Apache의 시작 스크립트를 확인하십시오. macOS의 경우 / Library / LaunchDaemons 여야합니다. 작업 디렉토리 또는 이와 유사한 정보가 포함될 수 있습니다.

dtruss를 사용하여 실행중인 프로세스 자체를 디버깅 할 수도 있습니다. 를 사용하여 실행중인 프로세스에 연결할 수 있습니다 dtruss -p <pid>. 그런 다음 HUP하면 출력을 통해 구성을 가져 오는 위치를 볼 수 있습니다. 또는로 dtruss를 직접 호출하여 Apache를 시작하십시오 dtruss start_apache_command.

httpd.conf를 사용하여 시스템 전체에서 언제든지 검색 할 수 있습니다 find / -name httpd.conf.

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