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

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

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

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

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



답변

스위치를 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이러한 파일을 살펴 보려면를 사용하여 단계를 반복해야합니다 .


답변

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

apachectl configtest


답변

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


답변