TTG
@TTG (TT)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

Apacheのaccess.logが0バイトになってしまう

解決したいこと

Apacheのaccess.logが書き込まれなくなってしまいました。
その結果、logrotateが実行する必要なしと判断して実行されないです。
Apacheのログを正常に稼働させるための対策を教えてください。

自分で考えた手段

(1)手動、強制的に実行してみる
この場合、プロセスが止まる?サービスが止まる?がよくわかっていないので以下のリンクに別途質問させてもらってます。

logrotate -fv /etc/logrotate.d/httpd

(2)logrotateの設定を変えてみる
ログファイルが空でも実行するオプションに変えればいいのかなーと思いますが、今回は設定は変更したくないです。

自分で試したこと

(1)logrotate.d/httpdの確認、ここは問題ないと思われる

/var/log/httpd/*log
  missingok
  notifempty
  sharedscripts
  postrotate
   /bin/kill -HUP `cat /var/run/httpd.pid 2>/dev/null` 2> /dev/null || true
  endscript

(2)lsof | grep /var/log/httpd を実行すると(deleated)が表示されている
ファイル名の後ろに日付がつくのはlogrotate.confに設定されている。
このdeleatedとされている古いファイルにログを吐こうとしているから普通のファイルにはログが出力されていないと推測しています。
logrotate.status の日付はこのファイル名の日付と同じです。

lsof | grep /var/log/httpd
(省略) /var/log/httpd/access.log-20220301(deleated)

(3)logrotateをデバックモードで実行
ここでログファイルが空であるためログローテートが実行されないです
空では実行しないオプションを設定していますが、今回は設定を変更せずに改善する方法を知りたいです!

logrotate -dv /etc/logrotate.d/httpd

rotating pattern: /var/log/htpd/*log 1048576bytes (no old logs will be kept)
empty log files are not rotated, old logs are removed
considering log /var/log/httpd/access_log
 log does not need rotating
(省略)
not runnning postrotate script, sice no logs were rotated
0

1Answer

乱暴ですが、次のようにして /var/log/httpd 以下を 777 にしてみて、
書き込みできるか切り分けるとかでしょうか.

$ sudo chmod -R 777 /var/log/httpd/

もしも上記で書き込みができれば、httpd を実行しているユーザの権限を変えるか、
あるいは、/var/log/httpd 以下のアクセス権限(所有者)を変更することになるかと思います

0Like

Your answer might help someone💌