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
私の質問は:
/var/log/httpd
にはどの権限を設定する必要がありますか?現在の権限は次のとおりです:drwx------ 2 root root
前もって感謝します
Apache構成のパス参照が絶対ではない場合(つまり、/
で始まっていない場合)は、ServerRoot
ディレクティブで設定されたディレクトリを基準にしています。 ServerRoot
の一般的なデフォルトは/etc/httpd
で、/etc/httpd/logs
がログディレクトリになります。
ほとんどのパッケージ化されたApacheバージョンは、/etc/httpd/logs
から/var/log/httpd
へのシンボリックリンクを作成します。/etc/httpdの実際のディレクトリが欠落している(またはルートファイルシステムがいっぱいである)か、セットアップでシンボリックリンクが欠落している可能性があります。
Apacheはrootによって開始され、特権をドロップする前にrootとしてログファイルを開きます。これにより、/ var/log/httpdに対するディレクトリのアクセス許可は正しいように見えます。
私の問題は、アクセスログの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
これが欠けていたため、ログを取得できませんでした。