2014-10-21 4 views
16

На прошлой неделе я обнаружил проблему на своем сервере, поскольку использование диска было на 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, какой пользователь использовать для вращения? и как?

ответ

16

Следуя инструкциям веб-сайта, я только что изменил файл конфигурации logrotate, добавив требуемую директиву su следующим образом, и теперь он вращается в правильном направлении.

su <user> <group> 
+3

Просто дал вам +1. Мне было сложно стрелять в неловкое время, удивляясь, почему мой анакроновый лотронат не работает. Мой каталог журналов был моим. logrotate требует, чтобы владелец был root в этом случае. Поэтому я корню лог dir для root и добавил 'su root me' в файл конфигурации logrotate. Спасибо, что опубликовали ваше решение. –

+1

Можете ли вы обобщить инструкции в случае, если ссылка перестает работать? – augurar

+0

ну, ссылка перестала работать! я думаю, когда вы укажете 'su ' в файле конфигурации, logrotate запускается как указанный пользователь и группа. то есть. новые файлы будут созданы с этими разрешениями – marengaz

27

просто добавьте su root adm в конфигурационный файл:

/var/log/apache2/*.log { 
    # … 
    su root adm 
} 
+1

Имя пользователя и группа после su должны обрабатывать файл (ы) журнала. В моем случае мне пришлось добавить: su syslog adm – Pete

+3

Я не понимаю, почему logrotate заботится об этом? – Agent47DarkSoul

+2

Ответ не дает никаких предпосылок. ПОЧЕМУ это проблема и другие способы ее решения (возможно, разрешения - это проблема!). Не круто. – Phillipp

3

У меня «родительский каталог имеет небезопасные разрешения» при попытке заставить поворота системный журнал.
Вот как я ее решил:

cat /etc/logrotate.conf 
    ... 
    # use the syslog group by default, since this is the owning group 
    # of /var/log/syslog. 
    su root syslog 

vim /etc/logrotate.d/rsyslog 
    # Add to top: 
    su root syslog 

logrotate -f /etc/logrotate.d/rsyslog 
    # No errors now, log is rotated. 

 Смежные вопросы

  • Нет связанных вопросов^_^