На прошлой неделе я обнаружил проблему на своем сервере, поскольку использование диска было на 100%, и я узнал, что Apache создал огромный файл error.log размером 60 ГБ. Затем я изменил LogLevel на появление, но через неделю это снова 1,3 ГБ, что определенно слишком много. Кроме того, у меня есть access.log 6MB и other_vhosts_access.log из 167MB. Поэтому я узнал, что проблема может быть неработающей logrotate. На самом деле gzipped-файлы журналов имеют очень старую дату (23 февраля). Так я пытался первым, чтобы изменить конфигурацию файла LogRotate для apache2, добавив максимальный размер файла, теперь глядя, как это:Конфигурация Apache и logrotate
/var/log/apache2/*.log {
weekly
size 500M
missingok
rotate 20
compress
delaycompress
notifempty
create 640 root adm
sharedscripts
postrotate
if /etc/init.d/apache2 status > /dev/null ; then \
/etc/init.d/apache2 reload > /dev/null; \
fi;
endscript
prerotate
if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
run-parts /etc/logrotate.d/httpd-prerotate; \
fi; \
endscript
}
После этого я попытался вручную заставить LogRotate запустить специфическую конфигурацию апач с
logrotate -f /etc/logrotate.d/apache2
и я получил эту ошибку:
error: skipping "/var/log/apache2/access.log" because parent directory has insecure permissions (It's world writable or writable by group which is not "root") Set "su" directive in config file to tell logrotate which user/group should be used for rotation.
error: skipping "/var/log/apache2/error.log" because parent directory has insecure permissions (It's world writable or writable by group which is not "root") Set "su" directive in config file to tell logrotate which user/group should be used for rotation.
error: skipping "/var/log/apache2/other_vhosts_access.log" because parent directory has insecure permissions (It's world writable or writable by group which is not "root") Set "su" directive in config file to tell logrotate which user/group should be used for rotation.
странным является то, что в это каким-то образом запустить вращение, Creat пустым файлом error.log, но с разными разрешениями от старого, а не сжатием существующего error.log. Глядя на каталог журналов Apache, он теперь выглядит так:
-rwxrwxrwx 1 root adm 6.3M Oct 21 10:54 access.log
-rwxrwxrwx 1 root adm 22K Feb 18 2014 access.log.1
-rwxrwxrwx 1 root adm 7.0K Feb 16 2014 access.log.2.gz
-rwxrwxrwx 1 root adm 4.0K Feb 9 2014 access.log.3.gz
-rw------- 1 amministratore amministratore 0 Oct 21 10:32 error.log
-rw-r--r-- 1 root root 1.3G Oct 21 10:57 error.log.1
-rwxrwxrwx 1 root adm 167M Oct 21 10:57 other_vhosts_access.log
-rwxrwxrwx 1 root adm 225K Feb 23 2014 other_vhosts_access.log.1
-rwxrwxrwx 1 root adm 16K Feb 15 2014 other_vhosts_access.log.2.gz
-rwxrwxrwx 1 root adm 3.2K Feb 8 2014 other_vhosts_access.log.3.gz
Так что это правильный путь, чтобы продолжить? Должен ли я изменить разрешения каталога/var/log/apache2? (теперь 777) я не установил эти разрешения, и я не знаю, правильно ли это. или я должен сказать logrotate, какой пользователь использовать для вращения? и как?
Просто дал вам +1. Мне было сложно стрелять в неловкое время, удивляясь, почему мой анакроновый лотронат не работает. Мой каталог журналов был моим. logrotate требует, чтобы владелец был root в этом случае. Поэтому я корню лог dir для root и добавил 'su root me' в файл конфигурации logrotate. Спасибо, что опубликовали ваше решение. –
Можете ли вы обобщить инструкции в случае, если ссылка перестает работать? – augurar
ну, ссылка перестала работать! я думаю, когда вы укажете 'su' в файле конфигурации, logrotate запускается как указанный пользователь и группа. то есть. новые файлы будут созданы с этими разрешениями –
marengaz