8. Поддержка и обслуживание
Обновлено: 07 Декабрь 2025
Версия: 2.2
1. Резервное копирование
Резервное копирование базы данных
Создание резервной копии:
# Создание резервной копии PostgreSQL
pg_dump -U ask_user -d ask_db > backup_$(date +%Y%m%d_%H%M%S).sql
# Сжатие резервной копии
pg_dump -U ask_user -d ask_db | gzip > backup_$(date +%Y%m%d_%H%M%S).sql.gz
Автоматическое резервное копирование:
Создайте скрипт /opt/ask/backup.sh:
#!/bin/bash
BACKUP_DIR="/opt/backups"
DATE=$(date +%Y%m%d_%H%M%S)
# Создание директории для бэкапов
mkdir -p $BACKUP_DIR
# Бэкап базы данных
pg_dump -U ask_user -d ask_db | gzip > $BACKUP_DIR/db_$DATE.sql.gz
# Бэкап медиа-файлов
tar -czf $BACKUP_DIR/media_$DATE.tar.gz /opt/ask/media/
# Удаление старых бэкапов (старше 30 дней)
find $BACKUP_DIR -name "*.sql.gz" -mtime +30 -delete
find $BACKUP_DIR -name "*.tar.gz" -mtime +30 -delete
Сделайте скрипт исполняемым:
chmod +x /opt/ask/backup.sh
Добавьте в crontab для ежедневного выполнения:
# Ежедневный бэкап в 2:00 ночи
0 2 * * * /opt/ask/backup.sh
Резервное копирование медиа-файлов
Создание архива медиа-файлов:
tar -czf media_backup_$(date +%Y%m%d_%H%M%S).tar.gz /opt/ask/media/
Восстановление медиа-файлов:
tar -xzf media_backup_YYYYMMDD_HHMMSS.tar.gz -C /
2. Восстановление базы данных
Восстановление из резервной копии
Восстановление из несжатой копии:
psql -U ask_user -d ask_db < backup_20240101_120000.sql
Восстановление из сжатой копии:
gunzip < backup_20240101_120000.sql.gz | psql -U ask_user -d ask_db
Восстановление с очисткой базы данных:
# Остановка сервисов
sudo supervisorctl stop all
# Удаление базы данных
dropdb -U ask_user ask_db
# Создание новой базы данных
createdb -U ask_user ask_db
# Восстановление из резервной копии
gunzip < backup_20240101_120000.sql.gz | psql -U ask_user -d ask_db
# Применение миграций (если необходимо)
cd /opt/ask
source .venv/bin/activate
python manage.py migrate
# Запуск сервисов
sudo supervisorctl start all
Важно: Перед восстановлением создайте резервную копию текущего состояния базы данных.
3. Мониторинг логов
Просмотр логов Django
# Основной лог (если настроен)
tail -f /var/log/django/info.log
# Лог ошибок (если настроен)
tail -f /var/log/django/error.log
Просмотр логов Nginx
# Лог доступа
tail -f /var/log/nginx/access.log
# Лог ошибок
tail -f /var/log/nginx/error.log
Просмотр логов Gunicorn
tail -f /var/log/gunicorn/gunicorn.log
Просмотр логов Celery
# Лог воркера
tail -f /var/log/celery/worker.log
# Лог beat
tail -f /var/log/celery/beat.log
Настройка ротации логов
Создайте файл /etc/logrotate.d/ask:
/var/log/django/*.log {
daily
rotate 7
compress
delaycompress
missingok
notifempty
create 0644 www-data www-data
}
/var/log/celery/*.log {
daily
rotate 7
compress
delaycompress
missingok
notifempty
create 0644 www-data www-data
}
/var/log/gunicorn/*.log {
daily
rotate 7
compress
delaycompress
missingok
notifempty
create 0644 www-data www-data
}
4. Проверка работы системы
Проверка статуса сервисов
# Проверка статуса всех сервисов через Supervisor
sudo supervisorctl status
# Проверка статуса отдельных сервисов
sudo supervisorctl status gunicorn
sudo supervisorctl status celery
sudo supervisorctl status celerybeat
Проверка работы базы данных
# Подключение к базе данных
psql -U ask_user -d ask_db
# Проверка подключения
\conninfo
# Выход
\q
Проверка работы Redis
# Проверка подключения
redis-cli ping
# Должен вернуть: PONG
Проверка работы Celery
# Проверка статуса воркера
celery -A config inspect active
# Проверка зарегистрированных задач
celery -A config inspect registered
# Проверка статистики
celery -A config inspect stats
5. Решение типичных проблем
Проблема: Сервисы не запускаются
Решение:
- Проверьте логи:
sudo supervisorctl tail -f gunicorn - Проверьте права доступа к файлам
- Проверьте конфигурацию в
/etc/supervisor/conf.d/ - Перезагрузите supervisor:
sudo supervisorctl reread && sudo supervisorctl update
Проблема: Ошибки подключения к базе данных
Решение:
- Проверьте, запущен ли PostgreSQL:
sudo systemctl status postgresql - Проверьте настройки подключения в
config/prod_settings.py - Проверьте права пользователя базы данных
- Проверьте логи PostgreSQL:
sudo tail -f /var/log/postgresql/postgresql-*.log
Проблема: Ошибки подключения к Redis
Решение:
- Проверьте, запущен ли Redis:
sudo systemctl status redis-server - Проверьте настройки Redis в
config/settings.py - Проверьте доступность порта:
netstat -tuln | grep 6379
Проблема: Медленная работа системы
Решение:
- Проверьте использование ресурсов:
htopилиtop - Проверьте логи на наличие ошибок
- Проверьте размер базы данных
- Оптимизируйте запросы к базе данных
- Увеличьте количество workers Gunicorn (если CPU позволяет)