initial commit
This commit is contained in:
275
02/02-k-git-server-deploy.14.sh
Executable file
275
02/02-k-git-server-deploy.14.sh
Executable file
@@ -0,0 +1,275 @@
|
||||
#!/bin/bash
|
||||
#===============================================================================
|
||||
# ШАГ 14: НАСТРОЙКА LOGROTATE
|
||||
#===============================================================================
|
||||
# Запуск: sudo bash 02-k-git-server-deploy.14.sh
|
||||
#
|
||||
# Настраивает ротацию логов для:
|
||||
# - Gitea
|
||||
# - Nginx
|
||||
# - msmtp
|
||||
# - Скриптов установки
|
||||
#===============================================================================
|
||||
|
||||
SCRIPT_DIR=$(cd "$(dirname "$0")" && pwd)
|
||||
source "$SCRIPT_DIR/02-k-git-server-deploy.00.sh"
|
||||
|
||||
init_log
|
||||
check_root
|
||||
|
||||
print_header "ШАГ 14: НАСТРОЙКА LOGROTATE"
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# 14.1 Проверка установки logrotate
|
||||
#-------------------------------------------------------------------------------
|
||||
print_subheader "Проверка logrotate"
|
||||
|
||||
if is_installed logrotate; then
|
||||
print_success "logrotate установлен"
|
||||
else
|
||||
print_info "Установка logrotate..."
|
||||
apt install -y logrotate
|
||||
fi
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# 14.2 Настройка ротации логов Gitea
|
||||
#-------------------------------------------------------------------------------
|
||||
print_subheader "Настройка ротации логов Gitea"
|
||||
|
||||
GITEA_LOG_DIR="$GITEA_DATA/log"
|
||||
|
||||
# Создаём директорию если нет
|
||||
mkdir -p "$GITEA_LOG_DIR"
|
||||
chown git:git "$GITEA_LOG_DIR"
|
||||
|
||||
cat > /etc/logrotate.d/gitea << 'EOF'
|
||||
# Logrotate configuration for Gitea
|
||||
# Автоматически сгенерировано скриптом 02-k-git-server-deploy.14.sh
|
||||
|
||||
/var/lib/gitea/log/*.log {
|
||||
daily
|
||||
missingok
|
||||
rotate 14
|
||||
compress
|
||||
delaycompress
|
||||
notifempty
|
||||
create 0640 git git
|
||||
sharedscripts
|
||||
postrotate
|
||||
# Gitea не требует сигнала для reopening логов
|
||||
# Она автоматически открывает новые файлы
|
||||
endscript
|
||||
}
|
||||
EOF
|
||||
|
||||
print_success "Конфигурация Gitea создана: /etc/logrotate.d/gitea"
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# 14.3 Настройка ротации логов Nginx
|
||||
#-------------------------------------------------------------------------------
|
||||
print_subheader "Настройка ротации логов Nginx"
|
||||
|
||||
# Проверяем существующую конфигурацию (обычно уже есть)
|
||||
if [[ -f /etc/logrotate.d/nginx ]]; then
|
||||
print_info "Nginx logrotate уже настроен"
|
||||
|
||||
# Показать текущую конфигурацию
|
||||
echo ""
|
||||
cat /etc/logrotate.d/nginx
|
||||
else
|
||||
cat > /etc/logrotate.d/nginx << 'EOF'
|
||||
# Logrotate configuration for Nginx
|
||||
# Автоматически сгенерировано скриптом 02-k-git-server-deploy.14.sh
|
||||
|
||||
/var/log/nginx/*.log {
|
||||
daily
|
||||
missingok
|
||||
rotate 14
|
||||
compress
|
||||
delaycompress
|
||||
notifempty
|
||||
create 0640 www-data adm
|
||||
sharedscripts
|
||||
prerotate
|
||||
if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
|
||||
run-parts /etc/logrotate.d/httpd-prerotate; \
|
||||
fi
|
||||
endscript
|
||||
postrotate
|
||||
invoke-rc.d nginx rotate >/dev/null 2>&1 || true
|
||||
endscript
|
||||
}
|
||||
EOF
|
||||
|
||||
print_success "Конфигурация Nginx создана: /etc/logrotate.d/nginx"
|
||||
fi
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# 14.4 Настройка ротации логов msmtp
|
||||
#-------------------------------------------------------------------------------
|
||||
print_subheader "Настройка ротации логов msmtp"
|
||||
|
||||
# Создаём лог-файл если нет
|
||||
touch /var/log/msmtp.log
|
||||
chmod 644 /var/log/msmtp.log
|
||||
|
||||
cat > /etc/logrotate.d/msmtp << 'EOF'
|
||||
# Logrotate configuration for msmtp
|
||||
# Автоматически сгенерировано скриптом 02-k-git-server-deploy.14.sh
|
||||
|
||||
/var/log/msmtp.log {
|
||||
weekly
|
||||
missingok
|
||||
rotate 8
|
||||
compress
|
||||
delaycompress
|
||||
notifempty
|
||||
create 0644 root root
|
||||
}
|
||||
EOF
|
||||
|
||||
print_success "Конфигурация msmtp создана: /etc/logrotate.d/msmtp"
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# 14.5 Настройка ротации логов установки
|
||||
#-------------------------------------------------------------------------------
|
||||
print_subheader "Настройка ротации логов установки"
|
||||
|
||||
cat > /etc/logrotate.d/git-server-setup << 'EOF'
|
||||
# Logrotate configuration for Git Server Setup Scripts
|
||||
# Автоматически сгенерировано скриптом 02-k-git-server-deploy.14.sh
|
||||
|
||||
/var/log/git-server-deploy.log
|
||||
/var/log/server-setup.log
|
||||
{
|
||||
monthly
|
||||
missingok
|
||||
rotate 6
|
||||
compress
|
||||
delaycompress
|
||||
notifempty
|
||||
create 0644 root root
|
||||
}
|
||||
EOF
|
||||
|
||||
print_success "Конфигурация setup logs создана: /etc/logrotate.d/git-server-setup"
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# 14.6 Настройка ротации логов Fail2ban
|
||||
#-------------------------------------------------------------------------------
|
||||
print_subheader "Настройка ротации логов Fail2ban"
|
||||
|
||||
if is_installed fail2ban; then
|
||||
# Проверяем существующую конфигурацию
|
||||
if [[ -f /etc/logrotate.d/fail2ban ]]; then
|
||||
print_info "Fail2ban logrotate уже настроен"
|
||||
else
|
||||
cat > /etc/logrotate.d/fail2ban << 'EOF'
|
||||
# Logrotate configuration for Fail2ban
|
||||
# Автоматически сгенерировано скриптом 02-k-git-server-deploy.14.sh
|
||||
|
||||
/var/log/fail2ban.log {
|
||||
weekly
|
||||
missingok
|
||||
rotate 8
|
||||
compress
|
||||
delaycompress
|
||||
notifempty
|
||||
create 0640 root adm
|
||||
postrotate
|
||||
/usr/bin/fail2ban-client flushlogs >/dev/null 2>&1 || true
|
||||
endscript
|
||||
}
|
||||
EOF
|
||||
|
||||
print_success "Конфигурация Fail2ban создана: /etc/logrotate.d/fail2ban"
|
||||
fi
|
||||
else
|
||||
print_info "Fail2ban не установлен, пропуск"
|
||||
fi
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# 14.7 Тестирование конфигурации
|
||||
#-------------------------------------------------------------------------------
|
||||
print_subheader "Тестирование конфигурации"
|
||||
|
||||
echo "Проверка всех конфигураций logrotate..."
|
||||
echo ""
|
||||
|
||||
ALL_OK=true
|
||||
|
||||
for config in /etc/logrotate.d/gitea /etc/logrotate.d/nginx /etc/logrotate.d/msmtp /etc/logrotate.d/git-server-setup; do
|
||||
if [[ -f "$config" ]]; then
|
||||
if logrotate -d "$config" 2>&1 | head -5; then
|
||||
echo -e " $(basename $config): ${GREEN}OK${NC}"
|
||||
else
|
||||
echo -e " $(basename $config): ${RED}ERROR${NC}"
|
||||
ALL_OK=false
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
echo ""
|
||||
|
||||
if $ALL_OK; then
|
||||
print_success "Все конфигурации валидны"
|
||||
else
|
||||
print_warning "Есть ошибки в конфигурациях"
|
||||
fi
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# 14.8 Принудительный запуск (опционально)
|
||||
#-------------------------------------------------------------------------------
|
||||
print_subheader "Тестовый запуск"
|
||||
|
||||
echo "Logrotate запускается автоматически через cron.daily"
|
||||
echo ""
|
||||
echo "Текущее расписание:"
|
||||
if [[ -f /etc/cron.daily/logrotate ]]; then
|
||||
echo " /etc/cron.daily/logrotate - запускается ежедневно"
|
||||
fi
|
||||
echo ""
|
||||
|
||||
read -p "Запустить logrotate сейчас (dry-run)? [y/N]: " RUN_NOW
|
||||
|
||||
if [[ "$RUN_NOW" =~ ^[Yy]$ ]]; then
|
||||
print_info "Dry-run всех логов..."
|
||||
logrotate -v /etc/logrotate.conf 2>&1 | tail -30
|
||||
fi
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# 14.9 Итог
|
||||
#-------------------------------------------------------------------------------
|
||||
echo ""
|
||||
echo -e "${GREEN}============================================================${NC}"
|
||||
echo -e "${GREEN} LOGROTATE НАСТРОЕН${NC}"
|
||||
echo -e "${GREEN}============================================================${NC}"
|
||||
echo ""
|
||||
echo "Настроена ротация логов:"
|
||||
echo ""
|
||||
echo " Gitea: /var/lib/gitea/log/*.log"
|
||||
echo " Ротация: ежедневно, хранить 14 дней"
|
||||
echo ""
|
||||
echo " Nginx: /var/log/nginx/*.log"
|
||||
echo " Ротация: ежедневно, хранить 14 дней"
|
||||
echo ""
|
||||
echo " msmtp: /var/log/msmtp.log"
|
||||
echo " Ротация: еженедельно, хранить 8 недель"
|
||||
echo ""
|
||||
echo " Setup scripts: /var/log/git-server-deploy.log"
|
||||
echo " /var/log/server-setup.log"
|
||||
echo " Ротация: ежемесячно, хранить 6 месяцев"
|
||||
echo ""
|
||||
echo "Конфигурационные файлы:"
|
||||
echo " /etc/logrotate.d/gitea"
|
||||
echo " /etc/logrotate.d/nginx"
|
||||
echo " /etc/logrotate.d/msmtp"
|
||||
echo " /etc/logrotate.d/git-server-setup"
|
||||
echo ""
|
||||
echo "Полезные команды:"
|
||||
echo " Тест: logrotate -d /etc/logrotate.d/gitea"
|
||||
echo " Принудительно: logrotate -f /etc/logrotate.conf"
|
||||
echo " Статус: cat /var/lib/logrotate/status"
|
||||
echo ""
|
||||
|
||||
print_success "Шаг 14 завершён: Logrotate настроен"
|
||||
Reference in New Issue
Block a user