Очистка логов веб сервера Apache если они заняли все место на диске

Как очистить логи веб сервера Apache если они заняли все место на диске

Очистить логи Apache можно командой truncate -s 0 /var/log/apache2/access.log или удалением файла с последующим перезагрузкой сервера. Это решит проблему нехватки дискового пространства за несколько минут.

Причины проблемы

  • Apache ведёт логи всех запросов в файлы access.log и error.log
  • Без ротации логов файлы растут неограниченно и заполняют весь раздел диска
  • Заполненный раздел приводит к невозможности записи новых данных и падению приложений
  • На боевых серверах логи могут занимать десятки и сотни гигабайт за месяц
  • Отсутствие автоматической ротации логов — типичная ошибка при настройке Apache

Пошаговая инструкция

  1. Подключитесь к серверу по SSH с правами администратора или пользователем с доступом sudo
  2. Определите путь к логам Apache командой grep -r "CustomLog\|ErrorLog" /etc/apache2/
  3. Проверьте размер логов командой du -sh /var/log/apache2/
  4. Остановите Apache командой sudo systemctl stop apache2
  5. Очистите файл access.log командой sudo truncate -s 0 /var/log/apache2/access.log
  6. Очистите файл error.log командой sudo truncate -s 0 /var/log/apache2/error.log
  7. Удалите ротированные логи прошлых периодов командой sudo rm -f /var/log/apache2/*.log.1 /var/log/apache2/*.log.2.gz
  8. Запустите Apache командой sudo systemctl start apache2
  9. Проверьте статус Apache командой sudo systemctl status apache2
  10. Настройте автоматическую ротацию логов в конфиге /etc/apache2/conf-available/other-vhosts-access-log.conf
  11. Отредактируйте или создайте правило ротации в /etc/logrotate.d/apache2 с параметром daily, size 100M и rotate 7
  12. Проверьте синтаксис конфига Apache командой sudo apache2ctl configtest

Часто задаваемые вопросы

Как безопасно удалить логи без остановки Apache? Используйте truncate -s 0 вместо rm — файл останется на месте, но его размер обнулится, и Apache продолжит писать в него без перезагрузки.

Почему логи снова быстро заполняются после очистки? Потому что нет автоматической ротации; настройте logrotate с периодичностью daily и максимальным размером size 100M в файле /etc/logrotate.d/apache2.

Где хранятся логи Apache на CentOS? На CentOS и RHEL логи находятся в /var/log/httpd/ вместо /var/log/apache2/, остальные команды аналогичны.

Похожие материалы

Бэкап баз данных MySQL на сервере по расписанию через Cron
DHCP сервер на базе Windows Server 2022
Роль контроллера домена Active Directory в Windows Server