web-dev-qa-db-ja.com

Apacheエラーとアクセスログがありません、何が原因で、どうすればそれらを再作成できますか?

Apache 2.2.3を実行している2つのCentOS Webサーバーが特定の状況で非常に高い負荷をかけている理由を理解するためのタスクが与えられました。最初にチェックしたのは/var/log/messagesでしたが、何らかの理由でrsyslogがオフになっていることに気付いたので、それを起動してchkconfigを使用してオンにしました。次に、Apacheエラーとアクセスログを確認したいので、/var/log/httpdを参照しましたが、フォルダーが空であることがわかりました。私は/etc/httpd/conf/httpd.confをチェックして、次の行を見ました:

ErrorLog logs/error_log
CustomLog logs/access_log combined

私の知る限り、これは/var/log/httpd/を指しますが、前述のとおり、フォルダは空です。この質問を書いているときに、サーバーでhttpdバージョンを探してhttpd -vを実行しましたが、これが私が受け取った応答です。

[root@domU-IP httpd]# httpd -v
Server version: Apache/2.2.3
Server built:   May  4 2011 06:51:15
Unable to open logs

私の質問は:

  1. ログが消える原因は何ですか? (そもそも作成されていない可能性があります)
  2. ログを再作成して、データが確実にログに書き込まれるようにするにはどうすればよいですか?
  3. /var/log/httpdにはどの権限を設定する必要がありますか?現在の権限は次のとおりです:drwx------ 2 root root

前もって感謝します

3
Itai Ganot

Apache構成のパス参照が絶対ではない場合(つまり、/で始まっていない場合)は、ServerRootディレクティブで設定されたディレクトリを基準にしています。 ServerRootの一般的なデフォルトは/etc/httpdで、/etc/httpd/logsがログディレクトリになります。

ほとんどのパッケージ化されたApacheバージョンは、/etc/httpd/logsから/var/log/httpdへのシンボリックリンクを作成します。/etc/httpdの実際のディレクトリが欠落している(またはルートファイルシステムがいっぱいである)か、セットアップでシンボリックリンクが欠落している可能性があります。

Apacheはrootによって開始され、特権をドロップする前にrootとしてログファイルを開きます。これにより、/ var/log/httpdに対するディレクトリのアクセス許可は正しいように見えます。

4
HBruijn

私の問題は、アクセスログのLogディレクティブがないことでした。私はここの指示に従いました https://ubuntuforums.org/showthread.php?t=1704686 基本的にこう言います:

Ubuntuでは、次の内容の/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

これが欠けていたため、ログを取得できませんでした。

2