Обычно я создаю журналы доступа и ошибок в папке доменного имени в /var/log
, и эти файлы вращаются с помощью logrotate, используя этот conf:
/var/log/mydomain.org/access.log
{
weekly
missingok
rotate 52
compress
delaycompress
notifempty
create 640 root adm
sharedscripts
prerotate
/usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=mydomain.org &> /dev/null
endscript
postrotate
if [ -f /var/run/apache2.pid ]; then
/etc/init.d/apache2 restart > /dev/null
fi
endscript
}
У меня регулярно возникает такая проблема: мой access.log
повернут на access.log.1
, но apache2 продолжает регистрировать доступ к access.log.1
.
Я не могу понять, почему это происходит. Любая помощь ?
Заранее спасибо.
Я собираюсь предположить, что ваш процесс apache не помещает файл pid в "/var/run/apache2.pid", и поэтому ваш postrotate никогда не выполняется. Во время устранения неполадок (как следует из комментария faker), возможно, попробуйте следующее:
...
postrotate
/etc/init.d/apache2 restart > /tmp/apache_restart.txt
endscript
}
Тогда завтра посмотрите /tmp/apache_restart.txt с more /tmp/apache_restart.txt
Зачем использовать logrotate для ротации журналов apache, если все это можно сделать одной простой директивой?
Вы можете использовать что-то вроде:
ErrorLog "|/usr/sbin/rotatelogs /var/logs/httpd/error_log 86400"
Таким образом, вам не нужно будет обрабатывать блокировки файлов, и apache будет вращать журналы за вас.