我要解決 Linux 系統上的 Apache Web 服務器的錯誤,Apache的錯誤記錄檔檔案找不到,請問是放在的哪個目錄呢?
Apache記錄檔為系統管理員提供了有用的資訊,比如,為 Web 服務器排障,保護系統不受各種各樣的惡意活動侵犯,或者只是進行各種各樣的分析以監控 HTTP 伺服器。根據你 Web 服務器配置的不同,其錯誤/訪問日誌可能放在你系統中不同位置。
本文可以協助你找到Linux上的Apache錯誤記錄檔。
Debian,Ubuntu或Linux Mint上的Apache錯誤記錄檔位置
預設的錯誤記錄檔
在基於Debian的Linux上,系統範圍的Apache錯誤記錄檔預設位置是/var/log/apache2/error.log。預設位置可以通過編輯Apache的設定檔進行修改。
自訂的錯誤記錄檔
要找到自訂的錯誤記錄檔位置,請用文字編輯器開啟 /etc/apache2/apache2.conf,然後尋找以 ErrorLog 開頭的行,該行指定了自訂的 Apache 錯誤記錄檔檔案的位置。例如,在未經修改的 Apache 設定檔中可以找到以下行:
ErrorLog ${APACHE_LOG_DIR}/error.log
在本例中,該位置使用 APACHELOGDIR 環境變數進行配置,該變數在 /etc/apache2/envvars 中已被定義。
export APACHE_LOG_DIR=/var/log/apache2$SUFFIX
在實際情況中, ErrorLog 可能會指向你 Linux 系統中任意路徑。
使用虛擬機器主機自訂的錯誤記錄檔
如果在 Apache Web 服務器中使用了虛擬機器主機, ErrorLog 指令可能會在虛擬機器主機容器內指定,在這種情況下,上面所說的系統範圍的錯誤記錄檔位置將被忽略。
啟用了虛擬機器主機後,各個虛擬機器主機可以定義其自身的自訂錯誤記錄檔位置。要找出某個特定虛擬機器主機的錯誤記錄檔位置,你可以開啟 /etc/apache2/sites-enabled/.conf,然後尋找 ErrorLog 指令,該指令會顯示網站指定的錯誤記錄檔檔案。
CentOS,Fedora或RHEL上的Apache錯誤記錄檔位置
預設的錯誤記錄檔
在基於 Red Hat 的Linux中,系統範圍的 Apache 錯誤記錄檔檔案預設被放置在/var/log/httpd/error_log。該預設位置可以通過修改 Apache 設定檔進行自訂。
自訂的錯誤記錄檔
要找出 Apache 錯誤記錄檔的自訂位置,請用文字編輯器開啟 /etc/httpd/conf/httpd.conf,然後尋找 ServerRoot,該參數顯示了 Apache Web 服務器分類樹的頂層,記錄檔和配置都位於該分類樹中。例如:
ServerRoot "/etc/httpd"
現在,尋找 ErrorLog 開頭的行,該行指出了 Apache Web 服務器將錯誤記錄檔寫到了哪裡去。注意,指定的位置是 ServerRoot 值的相對位置。例如:
ErrorLog "log/error_log"
結合上面的兩個指令,可以獲得完整的錯誤記錄檔路徑,預設情況下該路徑就是 /etc/httpd/logs/errorlog。在全新安裝的Apache中,這是一個到 /var/log/httpd/errorlog 的符號連結。
在實際情況中, ErrorLog 可能指向你 Linux 系統中的任意位置。
使用虛擬機器主機自訂的錯誤記錄檔
如果你啟用了虛擬機器主機,你可以通過檢查 /etc/httpd/conf/httpd.conf(或其它任何定義了虛擬機器主機的檔案)來找到各個虛擬機器主機的錯誤記錄檔位置。在獨立的虛擬機器主機部分尋找 ErrorLog。如,在下面的虛擬機器主機部分,錯誤記錄檔的位置是 /var/www/xmodulo.com/logs/error_log。
<VirtualHost *:80>
ServerAdmin webmaster@xmodulo.com
DocumentRoot /var/www/xmodulo.com/public_html
ServerName www.xmodulo.com
ServerAlias xmodulo.com
ErrorLog /var/www/xmodulo.com/logs/error_log
CustomLog /var/www/xmodulo.com/logs/access_log
<VirtualHost>
windows系統下apache日誌設定教程
註:Apache安裝目錄改成你自己的
apache預設日誌在安裝目錄下的logs目錄中,例如:D:\Apache Software Foundation\Apache2.2\logs
有時候需要設定到其他目錄,其實很多時候都應該設定到其他目錄。
設定檔是在安裝目錄下的conf目錄下的httpd.conf檔案,預設配置:
ErrorLog "logs/error.log"
LogFormat "%h %l %u %t \"%r\" %>s %b" commonCustomLog "logs/access.log" common
如果直接修改路徑,則日期設定會出問題,在網上找到的方法如下:
ErrorLog "|bin/rotatelogs.exe E:/log/apache/error-%y-%m-%d.log 86400"LogFormat "%h %l %u %t \"%r\" %>s %b" commonCustomLog "|bin/rotatelogs.exe E:/log/apache/access.log" common
如果是有多個網站,需要針對多個網站設定,在VirtualHost裡面設定
<VirtualHost *:80>
ProxyPreserveHost On ServerAdmin admin ServerName www.yingbuluo.com
ProxyPass / http://www.yingbuluo.com:8082/ ProxyPassReverse / http://www.yingbuluo.com:8082/ SetEnv force-proxy-request-1.0.1 SetEnv proxy-nokeepalive 1
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combinedCustomLog "|bin/rotatelogs.exe E:/log/apache/weba/access-%y-%m-%d.log 86400" combined
</VirtualHost>