Проект YaMDb собирает отзывы (Review) пользователей на произведения (Titles). Произведения делятся на категории: «Книги», «Фильмы», «Музыка». Список категорий (Category) может быть расширен администратором (например, можно добавить категорию «Изобразительное искусство» или «Ювелирка»).
Сами произведения в YaMDb не хранятся, здесь нельзя посмотреть фильм или послушать музыку.
Произведению может быть присвоен жанр (Genre) из списка предустановленных (например, «Сказка», «Рок» или «Артхаус»). Новые жанры может создавать только администратор.
Благодарные или возмущённые пользователи оставляют к произведениям текстовые отзывы (Review) и ставят произведению оценку в диапазоне от одного до десяти (целое число); из пользовательских оценок формируется усреднённая оценка произведения — рейтинг (целое число). На одно произведение пользователь может оставить только один отзыв.
bash Python 3.7, Django 2.2.19, DRF, Simple-JWT, PostgreSQL 13.0, Docker, Docker Hub, nginx, gunicorn 20.0.4, GitHub Actions, Yandex.Cloud.
DB_ENGINE=django.db.backends.postgresql
DB_NAME=postgres
POSTGRES_USER=postgres
POSTGRES_PASSWORD=postgres
DB_HOST=db
DB_PORT=5432
SECRET_KEY=key
Клонируем репозиторий и переходим в него:
git clone https://github.com/PivnoyFei/yamdb_final
cd yamdb_final
Создаем и активируем виртуальное окружение для linux:
python3 -m venv venv
source venv/bin/activate
для Windows
python -m venv venv
source venv/Scripts/activate
Обновиляем pip:
python -m pip install --upgrade pip
Ставим зависимости из requirements.txt:
pip install -r api_yamdb/requirements.txt
Запускаем автотесты:
pytest
Отредактируйте файл nginx/default.conf
и в строке server_name
впишите IP виртуальной машины (сервера).
Скопируйте файлы docker-compose.yaml
и nginx/default.conf
из вашего проекта на сервер:
Переходим в папку с файлом docker-compose.yaml:
cd infra
Запуск docker-compose:
docker-compose up -d --build
Примените миграции:
docker-compose exec web python manage.py makemigrations
docker-compose exec web python manage.py migrate --noinput
Команда для заполнения базы начальными данными (необязательно):
docker-compose exec web python manage.py loaddata fixtures.json
Создайте суперпользователя Django:
docker-compose exec web python manage.py createsuperuser
Собираем статику:
docker-compose exec web python manage.py collectstatic --no-input
Создаем дамп базы данных:
docker-compose exec web python manage.py dumpdata > dumpPostrgeSQL.json
Останавливаем контейнеры:
docker-compose down -v
scp docker-compose.yaml <username>@<host>:<Нужная папка>/docker-compose.yaml
sudo mkdir nginx
scp default.conf <username>@<host>:<Нужная папка>/nginx/default.conf
DOCKER_USERNAME - имя пользователя в DockerHub
DOCKER_PASSWORD - пароль пользователя в DockerHub
HOST - публичный ip-адрес сервера
USER - пользователь
SSH_KEY - приватный ssh-ключ (публичный должен быть на сервере)
PASSPHRASE - если используете пароль для ssh
DB_ENGINE=django.db.backends.postgresql
DB_NAME=postgres
POSTGRES_USER=postgres
POSTGRES_PASSWORD=postgres
DB_HOST=db
DB_PORT=5432
SECRET_KEY - секретный ключ приложения django
TELEGRAM_TO - id своего телеграм-аккаунта (можно узнать у @userinfobot, команда /start)
TELEGRAM_TOKEN - токен бота (получить токен можно у @BotFather, /token, имя бота)
Установите Docker и Docker-compose:
sudo apt install docker.io
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
Проверьте корректность установки Docker-compose:
sudo docker-compose --version
- тимлид, разработка ресурсов Auth и Users
- Докеризация, GitHub Actions.
- Автоматический деплой на боевой сервер YandexCloud.
- разработка ресурсов Categories, Genres и Titles
- разработка ресурсов Review и Comments