Проект YaMDb собирает отзывы пользователей на произведения. Сами произведения в YaMDb не хранятся, здесь нельзя посмотреть фильм или послушать музыку.
Произведения делятся на категории, такие как «Книги», «Фильмы», «Музыка». Например, в категории «Книги» могут быть произведения «Винни-Пух и все-все-все» и «Марсианские хроники», а в категории «Музыка» — песня «Давеча» группы «Жуки» и вторая сюита Баха. Список категорий может быть расширен (например, можно добавить категорию «Изобразительное искусство» или «Ювелирка»).
Произведению может быть присвоен жанр из списка предустановленных (например, «Сказка», «Рок» или «Артхаус»).
Добавлять произведения, категории и жанры может только администратор.
Благодарные или возмущённые пользователи оставляют к произведениям текстовые отзывы и ставят произведению оценку в диапазоне от одного до десяти (целое число); из пользовательских оценок формируется усреднённая оценка произведения — рейтинг (целое число). На одно произведение пользователь может оставить только один отзыв.
Пользователи могут оставлять комментарии к отзывам.
Добавлять отзывы, комментарии и ставить оценки могут только аутентифицированные пользователи.
Технологии
- Python
- Django
- Django Rest Framework
- PostgreSQL
- Docker
- Docker-Compose
- Nginx
- Gunicorn
- DB_ENGINE=django.db.backends.postgresql
- DB_NAME=postgres
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
- DB_HOST=db
- DB_PORT=5432
- SECRET_KEY=<секретный ключ проекта django>
для Linux-систем все команды необходимо выполнять от имени администратора1
- Склонировать репозиторий
git clone https://github.com/paulsssar/yamdb_final.git- Выполнить вход на удаленный сервер
- Установить docker на сервер:
apt install docker.io - Установить docker-compose на сервер:
apt install docker-compose- Скопировать файлы docker-compose.yml и default.conf на сервер:
scp docker-compose.yml <username>@<host>:/home/<username>/docker-compose.yml
scp default.conf <username>@<host>:/home/<username>/nginx/default.conf- Создать .env файл по предлагаемому выше шаблону.
- Для работы с Workflow добавить в Secrets GitHub переменные окружения для работы:
Workflow состоит из четырёх шагов:
DB_ENGINE=<django.db.backends.postgresql> DB_NAME=<имя базы данных postgres> DB_USER=<пользователь бд> DB_PASSWORD=<пароль> DB_HOST=<db> DB_PORT=<5432> DOCKER_PASSWORD=<пароль от DockerHub> DOCKER_USERNAME=<имя пользователя> SECRET_KEY=<секретный ключ проекта django> USER=<username для подключения к серверу> HOST=<IP сервера> PASSPHRASE=<пароль для сервера, если он установлен> SSH_KEY=<ваш SSH ключ (для получения команда: cat ~/.ssh/id_rsa)> TELEGRAM_TO=<ID чата, в который придет сообщение> TELEGRAM_TOKEN=<токен вашего бота>- Проверка кода на соответствие PEP8.
- Сборка и публикация образа бекенда на DockerHub.
- Автоматический деплой на удаленный сервер.
- Отправка уведомления в телеграм-чат.
- собрать и запустить контейнеры на сервере:
docker-compose up -d --build- После успешной сборки выполнить следующие действия (только при первом деплое):
- провести миграции внутри контейнеров:
docker-compose exec web python manage.py migrate- собрать статику проекта:
docker-compose exec web python manage.py collectstatic --no-input- Создать суперпользователя Django, после запроса от терминала ввести логин и пароль для суперпользователя:
docker-compose exec web python manage.py createsuperuser
- Заполнить базу данными
- Создать резервную копию данных:
docker-compose exec web python manage.py dumpdata > fixtures.json- Остановить и удалить неиспользуемые элементы инфраструктуры Docker:
docker-compose down -v --remove-orphansПавел Сарыгин