// server management

Как настроить logrotate на Linux VPS: практическое руководство по управлению лог-файлами

August 11, 2026 · by CLIQHOST

Как настроить logrotate на Linux VPS: практическое руководство по управлению лог-файлами

Лог-файлы — незаменимый инструмент для любого системного администратора: они показывают, что происходит с сервисами, где возникают ошибки и кто пытается получить несанкционированный доступ. Но если оставить их без внимания, лог-файлы могут разрастись до нескольких гигабайт и полностью заполнить дисковое пространство — классический сценарий, который может «положить» рабочий сервер.

Элегантное решение называется logrotate — стандартная утилита Linux, которая автоматизирует ротацию, сжатие и удаление старых лог-файлов. В этом руководстве вы узнаете, как правильно настроить её на VPS с Linux — будь то Nginx, Apache, MySQL или собственные приложения.


Что такое logrotate и зачем он нужен

Logrotate — стандартный инструмент, предустановленный на большинстве дистрибутивов Linux (Ubuntu, Debian, CentOS, AlmaLinux). Он работает на основе центрального файла конфигурации и отдельных файлов для каждого сервиса.

Без logrotate файл /var/log/nginx/access.log на сервере с умеренным трафиком может достичь десятков гигабайт за несколько месяцев. На VPS SSD с ограниченным пространством это означает простой.

С logrotate вы задаёте простые правила:
- ротировать логи ежедневно/еженедельно/ежемесячно
- хранить последние N копий
- сжимать старые файлы
- отправлять сигналы сервисам после ротации (например, reload для Nginx)


Проверка и установка logrotate

На большинстве серверов logrotate уже установлен. Проверьте:

logrotate --version

Если не установлен:

# Ubuntu/Debian
sudo apt update && sudo apt install logrotate -y

# CentOS/AlmaLinux
sudo yum install logrotate -y

Основной файл конфигурации — /etc/logrotate.conf, конфигурации для отдельных сервисов — в директории /etc/logrotate.d/.


Структура файла конфигурации

Откройте основной файл:

sudo nano /etc/logrotate.conf

Типичное содержимое:

# Еженедельная ротация по умолчанию
weekly

# Хранить 4 недели логов
rotate 4

# Создавать новые файлы логов после ротации
create

# Сжимать старые логи
compress

# Подключить конфигурации сервисов
include /etc/logrotate.d

Эти значения глобальные — применяются ко всем сервисам, у которых нет собственных настроек.


Настройка logrotate для Nginx

Файл /etc/logrotate.d/nginx обычно создаётся при установке Nginx. Вот оптимальная конфигурация:

/var/log/nginx/*.log {
    daily
    missingok
    rotate 14
    compress
    delaycompress
    notifempty
    create 0640 www-data adm
    sharedscripts
    postrotate
        if [ -f /var/run/nginx.pid ]; then
            kill -USR1 `cat /var/run/nginx.pid`
        fi
    endscript
}

Объяснение параметров:
- daily — ежедневная ротация
- rotate 14 — хранить 14 дней логов
- compress — сжимать старые файлы через gzip
- delaycompress — отложить сжатие на один цикл (полезно для сервисов с асинхронной записью)
- notifempty — не ротировать пустые файлы
- missingok — не выдавать ошибку, если файл отсутствует
- postrotate — команда, выполняемая после ротации; здесь отправляем USR1 в Nginx для повторного открытия лог-файлов


Настройка logrotate для Apache

/var/log/apache2/*.log {
    weekly
    missingok
    rotate 8
    compress
    delaycompress
    notifempty
    create 640 root adm
    sharedscripts
    postrotate
        if invoke-rc.d apache2 status > /dev/null 2>&1; then
            invoke-rc.d apache2 reload > /dev/null 2>&1
        fi
    endscript
}

Та же логика: после ротации Apache получает сигнал reload и начинает писать в новый файл.


Настройка logrotate для MySQL/MariaDB

Логи MySQL могут быстро расти на серверах с большим количеством запросов:

/var/log/mysql/mysql.log /var/log/mysql/mysql-slow.log /var/log/mysql/error.log {
    daily
    rotate 7
    missingok
    compress
    delaycompress
    notifempty
    sharedscripts
    postrotate
        test -x /usr/bin/mysqladmin || exit 0
        MYADMIN="/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf"
        if [ -f `$MYADMIN variables 2>/dev/null | awk '/pid_file/ { print $4 }'` ]; then
            $MYADMIN flush-logs
        fi
    endscript
}

На управляемом выделенном сервере эта конфигурация обычно уже настроена командой администрирования. На неуправляемом сервере ответственность за настройку лежит на вас.


Конфигурация для собственных приложений

Если у вас есть приложение, которое пишет собственные логи (например, /var/log/myapp/app.log), создайте новый файл:

sudo nano /etc/logrotate.d/myapp
/var/log/myapp/*.log {
    weekly
    rotate 12
    compress
    delaycompress
    missingok
    notifempty
    create 0644 appuser appgroup
    dateext
    dateformat -%Y-%m-%d
}

Параметры dateext и dateformat добавляют дату к имени ротированного файла вместо числового суффикса (.1, .2), что значительно упрощает идентификацию.


Тестирование конфигурации

Перед тем как позволить logrotate работать автоматически, протестируйте конфигурацию:

# Симуляция (dry-run) — ничего не изменяет
sudo logrotate --debug /etc/logrotate.conf

# Принудительная ротация для конкретного файла
sudo logrotate --force /etc/logrotate.d/nginx

Проверьте файл состояния logrotate:

cat /var/lib/logrotate/status

Здесь вы увидите дату последней ротации для каждого отслеживаемого лог-файла.


Автоматизация через cron

Logrotate обычно запускается автоматически через ежедневный cron-задание. Проверьте:

cat /etc/cron.daily/logrotate

Если нужно запускать ротацию в конкретное время (а не в случайный момент в рамках cron.daily), добавьте явное задание:

sudo crontab -e
# Ротация логов каждую ночь в 02:00
0 2 * * * /usr/sbin/logrotate /etc/logrotate.conf

Это особенно полезно на выделенных серверах с интенсивным трафиком, где важно точно контролировать момент ротации.


Частые ошибки и как их избежать

1. Забыли отправить сигнал сервису после ротации

Если Nginx или Apache продолжают писать в старый (переименованный) файл, новые логи не попадут в текущий файл. Всегда включайте блок postrotate.

2. Сжатие открытых файлов

Используйте delaycompress вместе с compress, чтобы избежать этой проблемы.

3. Неправильные права доступа для новых файлов

Параметр create должен указывать правильные права и владельца, иначе сервис не сможет писать в новый файл:

create 0640 www-data adm

4. Не проверяете конфигурацию после изменений

Запускайте logrotate --debug после любых правок, чтобы поймать ошибки до автоматического запуска cron.


Мониторинг дискового пространства

После настройки logrotate регулярно проверяйте место, занятое логами:

du -sh /var/log/*

Или отсортируйте по размеру:

du -sh /var/log/* | sort -rh | head -20

Если вы пользуетесь нашими услугами администрирования серверов, команда CLIQHOST настроит logrotate, будет следить за дисковым пространством и проактивно оповещать вас о проблемах.

Также рекомендуем ознакомиться с материалами в нашем блоге — там вы найдёте другие практические руководства по администрированию Linux-серверов.


Заключение

Logrotate — простая, но незаменимая утилита для любого Linux-сервера в продакшне. Правильная настройка гарантирует, что лог-файлы не израсходуют всё дисковое пространство, а важная информация будет храниться в организованном виде.

Кратко:
- Проверьте и настройте файлы в /etc/logrotate.d/
- Тестируйте с --debug перед выводом в продакшн
- Убедитесь, что сервисы получают сигнал reload после ротации
- Регулярно проверяйте /var/lib/logrotate/status

Если вам нужна стабильная и производительная Linux-среда для применения этих настроек, рассмотрите VPS NVMe от CLIQHOST — с быстрыми NVMe-дисками, выделенным IPv4 и полным root-доступом. Остались вопросы? Свяжитесь с нашей командой — мы готовы помочь.

SHARE
// Что говорят наши клиенты

Что говорят наши клиенты

Реальные отзывы клиентов, которые доверяют CLIQHOST за производительность, надёжность и профессиональную техническую поддержку.

★★★★★

"We moved our online shop from a foreign host and the difference is night and day — pages load instantly and support replies in minutes, in Romanian."

AM
Andrei M.
eCommerce owner · Chișinău
★★★★★

"Migrated 12 client sites to CLIQHOST. Free migration, zero downtime, and the cPanel setup is exactly what my team needed. Highly recommend."

EV
Elena V.
Web agency · Bălți
★★★★★

"Our NVMe VPS handles traffic spikes without a sweat. Full root, local datacenter, and billing in MDL — everything we wanted from a provider."

DC
Dmitri C.
SaaS founder · Chișinău