Полезным делом было бы настроить ротацию логов на VDS для нашего сайта. Делается это довольно просто в Ubuntu при помощи утилиты logrotate. Ставим logrotate:
sudo apt-get install logrotate
Теперь создадим конфиг для ротации логов нашего сайта — /etc/logrotate.d/koteika.ru со следующим содержимым:
/home/koteika.ru/logs/error.log /home/koteika.ru/logs/access.log { daily missingok rotate 10 compress notifempty create 640 koteika.ru koteika.ru sharedscripts postrotate [ ! -f /var/run/nginx.pid ] || kill -USR1 `cat /var/run/nginx.pid` endscript } /home/koteika.ru/logs/slow.log { weekly missingok rotate 4 compress notifempty create 640 koteika.ru koteika.ru sharedscripts postrotate [ ! -f /var/run/php5-fpm.pid ] || kill -USR1 `cat /var/run/php5-fpm.pid` endscript }
Написано здесь следующее: для error.log и access.log будет ежедневная ротация логов (логи будут ротироваться даже если файл будет пуст), будет храниться последние 10 снапшотов логов, кторые будут зажаты в gzip, файл архива будет с правами 640:koteika.ru:koteika.ru. После обработки будет вызван скрипт, который скажет nginx, что пора переоткрыть файлы логов (это важно). Для slow.log все по аналогии, за исключением что команда на переоткрытие логов будет послана в php-fpm. На всякий случай проверьте свои пути к pid файлам в настройках nginx и php-fpm.
Теперь проверяем как работает ротация:
sudo logrotate -d /etc/logrotate.d/koteika.ru
Если ошибок нет, то ставим в ротацию:
sudo logrotate -v -f /etc/logrotate.d/koteika.ru
Подробнее о ротации логов http://debianworld.ru/articles/rotaciya-logov-s-pomoshyu-logrotate-v-debian-ubuntu/
[…] Настройка ротации лог-файлов с помощью logrotate. […]
Ваша инструкция работает, но есть одна ошибка — после ротации nginx не пишет в новый файл acceess.log, а пишет в старый, но уже переименованный access.log.1
Перерыл кучу сайтов, но не нашёл ответа. Проблема появилась после upgrade OS.
Ubuntu 14, nginx 1.8
Скорее всего проблема в nginx. На USR1 nginx раньше должен был переоткрыть логи, может сейчас какой другой сигнал для этого юзается.
Чтобы решить эту проблему поправьте конфиг вот так:
postrotate
invoke-rc.d nginx rotate >/dev/null 2>&1
endscript