web-dev-qa-db-ja.com

Apacheがログファイルを保持する場所を見つけるにはどうすればよいですか?

私は 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/
10

Apacheのログファイルから彼の情報を問い合わせることができますが、通常、実際の実行可能ファイルからこれらの情報を問い合わせることをお勧めします。ログの解析は注意が必要な場合があり、ボックスで特定の設定がどのように行われたかをよく知らないと、間違いを犯す可能性があります。

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"

調べたい主な項目は次のとおりです。

  1. これにより、Apacheが参照するすべてのファイルが「ルート」ディレクトリから始まることがわかります。

     -D HTTPD_ROOT="/etc/httpd"
    
  2. ここから設定ファイルが定義されます。このパスは#1で述べたパスからの相対パスなので、/etc/httpd/conf/httpd.confになります。

     -D SERVER_CONFIG_FILE="conf/httpd.conf"
    
  3. エラーログはこちらです。

     -D DEFAULT_ERRORLOG="logs/error_log"
    

    注:これは最初は少し混乱するかもしれませんが、Red Hatディストリビューションでは、このディレクトリに頻繁に作成されるリンク/etc/httpdlogsと呼ばれます。

    $ ls -ld /etc/httpd/logs
    lrwxrwxrwx. 1 root root 19 Jul  9  2012 /etc/httpd/logs -> ../../var/log/httpd
    
  4. Apacheで利用される可能性のある他のログファイルは、設定ファイル/etc/httpd/conf/httpd.confでさらに定義されます。

4
slm

Apache設定で文字列ErrorLogを探します。

通常、Apacheプロセス自体に1つあります。各VirtualHostは独自のログファイルを定義することもできるので、それらもチェックしてください。

VirtualHostが独自のログファイルを定義しない場合、グローバル構成で指定されたログファイルが使用されます。正しいログファイルは見つかったが、必要な情報が表示されない場合は、LogLevelを増やしてみてください。

3
bahamat

ファイルを見つけました/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ディレクティブを挿入すると、個別のログファイルが提供されました。

1