Здравствуйте, уважаемые читатели сайта shargaev-group.ru! После установки и настройки LAMP на VDS хостинге, следует уделить внимание корректной настройки ротации логов. Зачем это надо?

По умолчанию Apache пишет логи в определенный файл, указанный в его конфигурации. Со временем log достигает огромных размеров, тем самым переполняя жесткий диск на сервере, вызывает определенные ошибки в работе сайта.

Как этого избежать?

Можно периодически подключаться по FTP к серверу и в ручную чистить данную директорию и перезапускать Apache, а можно воспользоваться классной утилитой logrotate и автоматизировать данный процесс.

Приступим к настройке ротации логов

Обычно lograte установлен в системе по умолчанию, но если у вас его нет, запустите процесс его установки:

aptitude install logrotate

Создаем конфигурационный файл

nano /etc/logrotate.d/mylogrotate

Имя файла вы можете указать любое.

В созданном конфигурационном файле пишем следующие настройки (возле каждой настройки дал описание, что за что отвечает):


/var/www/logs/*.log {  // путь до папки с логами
 daily // регулярность ротации логов, может быть daily, monthly, weekly
 size 10м // По достижению заданного размера файл будет ротироваться (можно не указывать).
 missingok // не проверять наличие файла, если логов нет в указанной директории ошибки не будет
 rotate 30 // количество сохраняемых копий
 compress // сжатие копии логов, по умолчанию стоит gzip
 nodelaycompress  // не откладывать сжатие лога на следующий цикл
 notifempty // не ротировать лог если он пустой
 create 640 www-data www-data //сразу после ротации создаем новый лог с соответствующими правами пользователя
 sharedscripts // запускает скрипт и утилиту после ротации логов (в данном случае перезагружает Apache)
 postrotate
  apache2ctl restart > /dev/null
 endscript
}

Сохраняем файл Сtr+O и закрываем конфигурационный файл Сtr+X.

Далее нам нужно протестировать созданный конфигурационный файл:

logrotate -d /etc/logrotate.d/mylogrotate

Данной командой происходит тест конфигурационного файла.

Если в процессе отладки возникает ошибка 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.

Следует добавить в конфиг параметр su и указать в нем имя и группу администратора (su root root)

Если тест прошел без ошибок, запускаем ротацию логов:

logrotate -v -f /etc/logrotate.d/mylogrotate

Вот и все, теперь логи на вашем сервере будут ротироваться автоматически!

На сегодня все, берегите себя!