私は Apacheがアクセスおよびエラーログを保持している場所 を見つける必要があります。
何十ものサイトがホストされているサーバーにrootアクセスできます。これらのサイトの1つをデバッグしようとしています。サイトを閲覧すると、/var/logs/Apache2/access.log
または/var/logs/Apache2/error.log
に表示されません。 (ファイルはそこにあります、そして他のサイトはそれらに記録されます。実際、何百もの別のログファイル)。
locate httpd.log
で実行されたfind . -iname httpd.log
も/
も、結果を発行しません。
サイトのApache構成は次のとおりです。
ServerName REDACTED.com.br
DocumentRoot /var/www/xyz/wiki
AssignUserId xyz_wiki xyz_wiki
<Directory /var/www/xyz/wiki/data>
order allow,deny
deny from all
</Directory>
<Directory /var/www/xyz/wiki/conf>
order allow,deny
deny from all
</Directory>
<Directory /var/www/xyz/wiki/bin>
order allow,deny
deny from all
</Directory>
<Directory /var/www/xyz/wiki/inc>
order allow,deny
deny from all
</Directory>
php_admin_value open_basedir /var/www/xyz/wiki/:/mnt/vdImagem/www/xyz/wiki/
Apacheのログファイルから彼の情報を問い合わせることができますが、通常、実際の実行可能ファイルからこれらの情報を問い合わせることをお勧めします。ログの解析は注意が必要な場合があり、ボックスで特定の設定がどのように行われたかをよく知らないと、間違いを犯す可能性があります。
$ 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"
調べたい主な項目は次のとおりです。
これにより、Apacheが参照するすべてのファイルが「ルート」ディレクトリから始まることがわかります。
-D HTTPD_ROOT="/etc/httpd"
ここから設定ファイルが定義されます。このパスは#1で述べたパスからの相対パスなので、/etc/httpd/conf/httpd.conf
になります。
-D SERVER_CONFIG_FILE="conf/httpd.conf"
エラーログはこちらです。
-D DEFAULT_ERRORLOG="logs/error_log"
注:これは最初は少し混乱するかもしれませんが、Red Hatディストリビューションでは、このディレクトリに頻繁に作成されるリンク/etc/httpd
がlogs
と呼ばれます。
$ ls -ld /etc/httpd/logs
lrwxrwxrwx. 1 root root 19 Jul 9 2012 /etc/httpd/logs -> ../../var/log/httpd
Apacheで利用される可能性のある他のログファイルは、設定ファイル/etc/httpd/conf/httpd.conf
でさらに定義されます。
Apache設定で文字列ErrorLog
を探します。
通常、Apacheプロセス自体に1つあります。各VirtualHostは独自のログファイルを定義することもできるので、それらもチェックしてください。
VirtualHostが独自のログファイルを定義しない場合、グローバル構成で指定されたログファイルが使用されます。正しいログファイルは見つかったが、必要な情報が表示されない場合は、LogLevel
を増やしてみてください。
ファイルを見つけました/etc/Apache2/conf.d/other-vhosts-access-log
を含む
# Define an access log for VirtualHosts that don't define their own logfile
CustomLog ${Apache_LOG_DIR}/other_vhosts_access.log vhost_combined
これは、vhostsからのすべてのログを1つのファイルに結合する方法のようです。私はチェックし、アクセスがそこで記録されていました。
( ソース )
そのサイトの構成ファイルにErrorLogおよびAccessLogディレクティブを挿入すると、個別のログファイルが提供されました。