/yamdb_final

yamdb_final

Primary LanguagePython

yamdb_workflow

Яндекс.Практикум. Python backend. API YamDB

Содержание

Проект YaMDb собирает отзывы (Review) пользователей на произведения (Title). Произведения делятся на категории: «Книги», «Фильмы», «Музыка». Список категорий (Category) может быть расширен (например, можно добавить категорию «Изобразительное искусство» или «Ювелирка»).

Сами произведения в YaMDb не хранятся, здесь нельзя посмотреть фильм или послушать музыку. В каждой категории есть произведения: книги, фильмы или музыка. Например, в категории «Книги» могут быть произведения «Винни Пух и все-все-все» и «Марсианские хроники», а в категории «Музыка» — песня «Давеча» группы «Насекомые» и вторая сюита Баха. Произведению может быть присвоен жанр из списка предустановленных (например, «Сказка», «Рок» или «Артхаус»). Новые жанры может создавать только администратор.

Благодарные или возмущённые читатели оставляют к произведениям текстовые отзывы (Review) и выставляют произведению рейтинг (оценку в диапазоне от одного до десяти). Из множества оценок автоматически высчитывается средняя оценка произведения.

В проекте применяется

  • Django REST Framework,
  • Python 3,
  • PostgreSQL,
  • Docker,
  • Nginx,
  • Gunicorn,
  • Git,
  • Simple JWT - аутентификация реализована с помощью JWT-токена.
  • Тестирование проекта (flake8 и pytest),
  • Сборка и публикация образа на DockerHub,
  • Автоматический деплой на удаленный сервер,
  • Отправка уведомления в телеграм-чат.
  • Клонируем репозиторий и перейдем в него
 git clone https://github.com/EvgeniyBudaev/yamdb_final
 cd yamdb_final/
  • Активируем виртуальное окружение
 .\venv\Scripts\activate
  • Остановить службу nginx на сервере:
 sudo systemctl stop nginx
  • Установите 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 --version
  • Отредактируйте файл nginx/default.conf и в строке server_name впишите свой IP

  • Скопируйте файлы docker-compose.yaml и nginx/default.conf из проекта на сервер (на локальной машине в терминале по месту нахождения файла, нужно создать на сервере mkdir nginx):

  scp docker-compose.yaml <username>@<host>/home/<username>/docker-compose.yaml
  scp default.conf <username>@<host>/home/<username>/nginx/default.conf
  • После успешного деплоя зайдите на боевой сервер и выполните команды (только после первого деплоя): Собрать статические файлы в STATIC_ROOT:
  docker-compose exec web python3 manage.py collectstatic --noinput
  • Применить миграции и создать суперпользователя:
  docker-compose exec web python manage.py makemigrations
  docker-compose exec web python manage.py migrate --noinput
  docker-compose exec web python manage.py createsuperuser
  • Заполнить базу начальными данными:
  docker-compose exec web python manage.py loaddata fixtures.json

Теперь проект доступен по адресу http://62.84.119.85.

  • Остановить приложение:
  docker-compose down

Инструкция как пользоваться данным API доступна по адресу http://localhost/redoc/

  pytest
 Евгений Будаев