Apache 無法重新載入…是否有我可以查看詳細資訊的日誌?
我有一個正在向其中添加站點的網路伺服器。
跑步後
a2ensite
,我跑了service apache2 reload
,得到了這個:$$ FAIL $$重新載入 Web 伺服器配置: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/somefile
我應該會看到這個訪問記錄在access_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
. 我會查看文件DocumentRoot
,. 如果它不在這些位置中的任何一個,那麼我接下來將關注輸出中提到的目錄, .Directories``somefile``Include``grep``/etc/httpd/conf.d/*.conf
這些文件是 Apache 使用的附加配置,因此您還需要使用 重複這些步驟
grep
來查看這些文件。
如果找不到日誌文件或日誌文件為空,則可以執行 apache 配置測試,該測試將列印出配置文件的任何問題:
apachectl configtest