Apache가 다시로드되지 않습니다… 자세한 내용을 볼 수있는 로그가 있습니까?


12

사이트를 추가하는 웹 서버가 있습니다.

을 실행 한 후을 실행 a2ensite하고 이것을 service apache2 reload얻었습니다.

[FAIL] 웹 서버 구성을 다시로드하는 중 : apache2가 실패했습니다!

자세한 내용을 볼 수있는 로그 파일이 있습니까?

답변:


9

스위치를 httpd사용하여 구성 파일을 찾도록 구성된 위치를 확인할 수 있습니다 -V.

$ httpd -V
Server version: Apache/2.2.15 (Unix)
Server built:   Feb 13 2012 22:31:42
Server's Module Magic Number: 20051115:24
Server loaded:  APR 1.3.9, APR-Util 1.3.9
Compiled using: APR 1.3.9, APR-Util 1.3.9
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_SYSVSEM_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="/etc/httpd"
 -D SUEXEC_BIN="/usr/sbin/suexec"
 -D DEFAULT_PIDLOG="run/httpd.pid"
 -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
 -D DEFAULT_LOCKFILE="logs/accept.lock"
 -D DEFAULT_ERRORLOG="logs/error_log"
 -D AP_TYPES_CONFIG_FILE="conf/mime.types"
 -D SERVER_CONFIG_FILE="conf/httpd.conf"

이 명령 lsof을 사용하여 Unix 프로세스가 액세스하는 파일을 확인할 수도 있습니다 . 내 버전은 httpd스톡 포트 80을 사용하고 있으므로 귀하의 경우 80을 8443으로 변경하십시오!

$ netstat -tapn|grep ::80
tcp        0      0 :::80                       :::*                        LISTEN      5338/httpd     

이제 lsof로그 파일이 작성되는 위치를 찾기 위해 실행할 수 있습니다 .

$ lsof -p 5338|grep log
httpd   5338 root  mem    REG  253,0    10440   3141 /usr/lib64/httpd/modules/mod_logio.so
httpd   5338 root  mem    REG  253,0    27200   3139 /usr/lib64/httpd/modules/mod_log_config.so
httpd   5338 root    2w   REG  253,0     2014 395029 /var/log/httpd/error_log
httpd   5338 root    7w   REG  253,0     4140 394789 /var/log/httpd/access_log

access_log구성 파일 의 위치 와 구성 파일 의 위치를 ​​파악하고 이를 통해 "디렉토리"및 "위치"지시문을 확인할 수 있어야합니다. 여기에는 Apache에게 서비스 할 파일을 지시 할 때 사용할 로컬 디렉토리가 지정됩니다.

이제 뭐?

그런 다음 access_log서버를 통한 액세스에 해당하는 항목이 있는지 확인합니다. 이것이 의미하는 것은 서버를 탐색 할 http://www.somedom.com/somefileaccess_log파일 에이 액세스 권한 이 다음과 같이 기록되어 있어야한다는 것입니다.

192.168.1.110 - - [17/Jul/2013:14:39:50 -0400] "GET /somefile HTTP/1.1" 200 4303 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/5
37.36 (KHTML, like Gecko) Chrome/27.0.1453.110 Safari/537.36"

파일은 어디에 있습니까?

위에서 얻은 지식을 가져 와서 다음과 같이 적용 할 수 있습니다.

이 비트 httpd -V는 Apache의 루트 를 알려줍니다.

-D HTTPD_ROOT="/etc/httpd"
-D SERVER_CONFIG_FILE="conf/httpd.conf"

메인 설정 파일은 다음과 같습니다 : /etc/httpd/conf/httpd.conf. 따라서 해당 파일을 통해 다음 줄을 찾으십시오.

$ grep -E "DocumentRoot|Directory \"|^Include" /etc/httpd/conf/httpd.conf |grep -v "^#"
Include conf.d/*.conf
DocumentRoot "/var/www/html"
<Directory "/var/www/html">
<Directory "/var/www/icons">
<Directory "/var/www/cgi-bin">
    <Directory "/var/www/error">

이제이 디렉토리가에서 본 파일의 잠재적 소스라는 것을 알고 access_log있습니다. 이 DocumentRootDirectories나는 파일을 통해보고 싶은데 somefile. 이 위치에 없으면 출력 Include에서 위에서 언급 한 디렉토리에 중점을 둡니다 .grep/etc/httpd/conf.d/*.conf

이 파일들은 Apache가 사용하는 추가 구성이므로 grep이러한 파일을 살펴 보려면를 사용하여 단계를 반복해야합니다 .


14

로그 파일을 찾을 수 없거나 로그 파일이 비어있는 경우 구성 파일의 문제점을 인쇄하는 아파치 구성 테스트를 실행할 수 있습니다.

apachectl configtest

2

를 실행하십시오 service apache2 restart. 오류 메시지가 표시됩니다 (보통 서비스는 아파치를 중지하고 시작하기 전에 구성 테스트를 실행합니다)

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