Files
2022_oknardia/SETUP.md

8.9 KiB
Raw Blame History

🚀 SETUP.md — Первичная настройка Окнардии

Версия: 0.2.0 | Дата: 16.04.2026

Этот документ описывает пошаговую настройку проекта для разработки и деплоя.

📋 Предварительные требования

  • Python: 3.12+
  • Django: 6.0+
  • MariaDB/MySQL: 5.7+ или 8.0+
  • Redis (опционально, для кеширования): 6.0+
  • Poetry (для управления зависимостями)

На macOS:

# Установка зависимостей (если не установлены)
brew install mariadb-connector-c
brew install redis  # опционально

🔑 Шаг 1: Конфигурация секретов

1.1 Создайте файл my_secret.py

cd oknardia/oknardia
cp my_secret.py.template my_secret.py
nano my_secret.py  # отредактируйте значения

Что нужно заполнить:

  • IP адреса и хосты (MY_HOST_HOME2, MY_DATABASE_HOST_DEV2)
  • Пароль БД (MY_DATABASE_PASSWORD_DEV)
  • Email credentials (MY_EMAIL_HOST_USER_DEV, MY_EMAIL_HOST_PASSWORD_DEV)
  • Пути к файлам (MY_MEDIA_ROOT_DEV2, MY_STATIC_ROOT_DEV2)
  • SECRET_KEY (сгенерируйте новый!)

1.2 (Опционально) Создайте файл .env.local

cd /path/to/project
cp .env.example .env.local
nano .env.local  # отредактируйте значения

Примечание: либо используйте my_secret.py, либо .env.local, выбирайте удобный способ.

🗄️ Шаг 2: Настройка БД

2.1 Создайте БД и пользователя

# Подключитесь к MySQL
mysql -u root -p

# В MySQL консоли:
CREATE DATABASE django_oknardia_dev;
CREATE USER 'web'@'localhost' IDENTIFIED BY 'your-password';
GRANT ALL PRIVILEGES ON django_oknardia_dev.* TO 'web'@'localhost';
FLUSH PRIVILEGES;
EXIT;

2.2 Выполните миграции

cd /path/to/project/oknardia
python manage.py migrate

2.3 Создайте суперпользователя

python manage.py createsuperuser

📦 Шаг 3: Установка зависимостей

Вариант 1: Poetry (рекомендуется)

# Установите poetry (если не установлен)
curl -sSL https://install.python-poetry.org | python3 -

# Установите зависимости
poetry install

# Активируйте виртуальное окружение
poetry shell

Вариант 2: pip (классический способ)

python -m venv venv
source venv/bin/activate  # На Windows: venv\Scripts\activate
pip install -r requirements.txt

🏃 Шаг 4: Запуск разработки

4.1 Запустите локальный сервер

cd oknardia
python manage.py runserver

Откройте браузер: http://127.0.0.1:8000

4.2 Запустите задачи Celery (опционально)

celery -A oknardia worker -l info

📁 Шаг 5: Создание необходимых директорий

# Статика и медиа файлы
mkdir -p public/media
mkdir -p public/static
mkdir -p public/static/img/_flap.cfg
mkdir -p public/static/img/_miniflap.cfg

# Логи
mkdir -p logs

# Сгенерируйте статику
python manage.py collectstatic --noinput

🧪 Шаг 6: Тестирование

# Запустите тесты
python manage.py test

# С покрытием (если установлен coverage)
coverage run --source='.' manage.py test
coverage report

🔐 Шаг 7: Проверка безопасности

7.1 Django встроенная проверка

python manage.py check --deploy

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

# Установите инструмент
pip install truffleHog

# Проверьте репозиторий
truffleHog filesystem . --json

Проверка готовности

Убедитесь, что все работает:

# 1. Статус БД
python manage.py dbshell < /dev/null && echo "✓ Database OK"

# 2. Статус приложений Django
python manage.py check && echo "✓ Django OK"

# 3. Статус файлов
test -d public/media && test -d public/static && echo "✓ Directories OK"

# 4. Тесты
python manage.py test 2>&1 | tail -5

🚀 Развертывание на продакшене

Для разных хостов

Masterhost VDS:

# Установка окружения
export DJANGO_SECRET_KEY="your-production-key"
export DATABASE_PASSWORD="production-db-password"
export DATABASE_HOST="localhost"
export DEBUG="False"

# Запуск через uWSGI + Nginx
uwsgi --ini config/oknardia.ini

Docker (рекомендуется):

docker build -t oknardia:latest .
docker run -d \
  -e DJANGO_SECRET_KEY="..." \
  -e DATABASE_PASSWORD="..." \
  -p 8000:8000 \
  oknardia:latest

🛠️ Полезные команды

# Управление миграциями
python manage.py makemigrations          # Создать миграцию
python manage.py migrate                 # Применить миграции
python manage.py migrate --fake-initial  # Подделать первую миграцию

# Управление данными
python manage.py shell                   # Интерпретатор Python с контекстом Django
python manage.py dumpdata > backup.json  # Резервная копия данных
python manage.py loaddata backup.json    # Восстановление данных

# Статика и медиа
python manage.py collectstatic           # Собрать статику для продакшена
python manage.py findstatic              # Найти файлы статики

# Администрирование
python manage.py createsuperuser         # Создать администратора
python manage.py changepassword username # Изменить пароль

# Очистка
python manage.py clearsessions           # Удалить старые сессии
python manage.py remove_stale_contenttypes  # Удалить устаревшие типы контента

# Служебные
python manage.py check                   # Проверить конфигурацию
python manage.py check --deploy          # Проверка для продакшена

📚 Дополнительные ресурсы

Решение проблем

Проблема: mysqlclient не устанавливается на macOS

Решение:

brew install mariadb-connector-c
pip install mysqlclient
# или
brew unlink mariadb-connector-c  # после установки

Проблема: ModuleNotFoundError: No module named 'oknardia'

Решение:

# Убедитесь, что находитесь в правильной директории
cd /path/to/project/oknardia
python manage.py runserver

Проблема: OperationalError: (2002, "Can't connect to local MySQL server")

Решение:

# Проверьте, что MySQL запущен
# macOS:
brew services start mariadb

# Linux:
sudo systemctl start mysql

# Проверьте credentials в my_secret.py или .env

Проблема: миграции не применяются

Решение:

# Проверьте статус миграций
python manage.py showmigrations

# Примените все миграции
python manage.py migrate --run-syncdb

# Если проблема в конкретной миграции
python manage.py migrate app_name 0001 --fake
python manage.py migrate app_name

🤝 Общие вопросы

Q: Где хранятся секреты? A: В my_secret.py (в .gitignore) или переменных окружения (.env)

Q: Как запустить проект без интернета? A: Установите все зависимости заранее, используйте локальное хранилище медиа

Q: Как работает система рейтинга? A: Смотрите AGENTS.md, раздел "Система рейтинга и ранжирования"


Версия документа: 1.0
Последнее обновление: 16.04.2026
Автор: GitHub Copilot