Проект собирает отзывы пользователей на произведения. Произведения делятся на категории. Список категорий может быть расширен.
- Получить список всех отзывов
- Создать новый отзыв
- Получить отзыв по id
- Частично обновить отзыв по id
- Удалить отзыв по id
- Получить список всех комментариев к отзыву по id
- Создать новый комментарий для отзыва
- Получить комментарий для отзыва по id
- Частично обновить комментарий к отзыву по id
- Удалить комментарий к отзыву по id
- Отправление confirmation_code на переданный email
- Получение JWT-токена в обмен на email и confirmation_code
- Получить список всех пользователей
- Создание пользователя
- Получить пользователя по username
- Изменить данные пользователя по username
- Удалить пользователя по username
- Получить данные своей учетной записи
- Изменить данные своей учетной записи
- Получить список всех категорий
- Создать категорию
- Удалить категорию
- Получить список всех жанров
- Создать жанр
- Удалить жанр
- Получить список всех объектов
- Создать произведение для отзывов
- Информация об объекте
- Обновить информацию об объекте
- Удалить произведение
- Проверка кода на соответствие PEP8, автоматический запуск тестов.
- Сборка и публикация образа на DockerHub.
- Автоматический деплой на боевой сервер при пуше в главную ветку main.
- Отправка уведомления в телеграм-чат.
Склонируйте репозиторий на локальную машину:
git clone git@github.com:DKDemerchyan/yamdb_final.git
Прежде, чем приступать к работе, необходимо выполнить вход на свой удаленный сервер:
ssh <USERNAME>@<IP_ADDRESS>
Введите команду:
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.yaml
и nginx/default.conf
из вашего проекта на сервер в home/<ваш_username>/docker-compose.yaml
и home/<ваш_username>/nginx/default.conf
соответственно.
Введите команду из корневой папки проекта:
scp docker-compose.yml <username>@<host>:/home/<username>/docker-compose.yml
scp -r nginx/ <username>@<host>:/home/<username>/
Добавьте Workflow в Github и сделайте pull. Замените workflow-файл на имеющийся в проекте. В Secrets Guthub добавьте:
SECRET_KEY=<SECRET_KEY>
DEBUG=<True/False>
ALLOWED_HOSTS=<hosts>
DB_ENGINE=django.db.backends.postgresql
DB_NAME=postgres
POSTGRES_USER=postgres
POSTGRES_PASSWORD=postgres
DB_HOST=db
DB_PORT=5432
DOCKER_PASSWORD=<пароль DockerHub>
DOCKER_USERNAME=<имя пользователя DockerHub>
USER=<username для подключения к серверу>
HOST=<IP сервера>
PASSPHRASE=<пароль для сервера, если он установлен>
SSH_KEY=<ваш SSH ключ (для получения команда: cat ~/.ssh/id_rsa)>
TELEGRAM_TO=<ID своего телеграм-аккаунта>
TELEGRAM_TOKEN=<токен вашего бота>
В папку infra добавьте файл .env: '''bash DB_ENGINE=django.db.backends.postgresql DB_NAME=postgres POSTGRES_USER=postgres POSTGRES_PASSWORD=postgres DB_HOST=db DB_PORT=5432 '''
Зайдите на боевой сервер и выполните команды (только после первого деплоя):
sudo docker-compose exec web python manage.py makemigrations --noinput
sudo docker-compose exec web python manage.py migrate --noinput
sudo docker-compose exec web python manage.py collectstatic --no-input
sudo docker-compose exec web python3 manage.py loaddata fixtures.json
sudo docker-compose exec web python manage.py createsuperuser
Проект будет доступен по вашему IP-адресу.