Skip to content

Социальная сеть для публикации личных дневников. Разработана по MVT архитектуре. Используется пагинация постов и кэширование. Регистрация реализована с верификацией данных, сменой и восстановлением пароля через почту.

Notifications You must be signed in to change notification settings

alexpro2022/social_network-Django

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

94 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Социальная сеть

Yatube CI/CD codecov

Социальная сеть для публикации личных дневников.

Оглавление:

Технологии:

Развернуть

Языки программирования, библиотеки и модули:

Python Requests Pillow

HTML

Фреймворк, расширения и библиотеки:

Django sorl-thumbnail

База данных:

SQLite3 PostgreSQL

Тестирование:

Pytest Pytest-cov Coverage

CI/CD:

GitHub_Actions docker_hub docker_compose Nginx Yandex.Cloud Telegram

⬆️Оглавление

Описание работы:

  • Социальная сеть для публикации личных дневников. Это сайт, на котором можно создать свою страницу.
    • После регистрации пользователь получает свой профайл, то есть получает свою страницу
  • Если на нее зайти, то можно посмотреть все записи автора.
    • После публикации каждая запись доступна на странице автора.
  • Пользователи могут заходить на чужие страницы, подписываться на авторов и комментировать их записи.
  • Автор может выбрать для своей страницы имя и уникальный адрес.
    • Эта часть реализована в момент регистрации. Мы не добавляли возможность изменять свой username: если бы сайт уже был в сети, то при смене имени пользователя старые ссылки на уже опубликованные записи перестали бы работать.
  • Есть возможность модерировать записи и блокировать пользователей, если начнут присылать спам.
    • Эту часть мы получили вместе с интерфейсом администратора. Будем банить спамеров через админку.
  • Записи можно отправить в сообщество и посмотреть там записи разных авторов.

⬆️Оглавление

Установка и запуск:

Удобно использовать принцип copy-paste - копировать команды из GitHub Readme и вставлять в командную строку Git Bash или IDE (например VSCode).

Предварительные условия для Docker Compose:

Развернуть

Предполагается, что пользователь:

  • создал аккаунт DockerHub, если запуск будет производиться на удаленном сервере.
  • установил Docker и Docker Compose на локальной машине или на удаленном сервере, где проект будет запускаться в контейнерах. Проверить наличие можно выполнив команды:
    docker --version && docker-compose --version

Локальный запуск

!!! Для пользователей Windows обязательно выполнить команду: иначе файл start.sh при клонировании будет бракован:

git config --global core.autocrlf false
  1. Клонируйте репозиторий с GitHub:
git clone https://github.com/alexpro2022/social_network-Django.git && \
cd social_network-Django
сервер Django/SQLite3
  1. Введите данные для переменных окружения (значения даны для примера, но их можно оставить):
cp env_example .env && nano .env
  1. Создайте и активируйте виртуальное окружение:

    • Если у вас Linux/macOS
     python -m venv venv && source venv/bin/activate
    • Если у вас Windows
     python -m venv venv && source venv/Scripts/activate
  2. Установите в виртуальное окружение все необходимые зависимости из файла requirements.txt:

python -m pip install --upgrade pip && pip install -r yatube/requirements.txt
  1. Выполните миграции, создайте суперюзера (потребуется ввод персональных данных) и запустите приложение:
cd yatube && \
python manage.py makemigrations && \
python manage.py migrate && \
python manage.py prepare_load_data && \
python manage.py loaddata dump.json && \
python manage.py createsuperuser && \
python manage.py runserver && cd ..

Сервер запустится локально по адресу http://127.0.0.1:8000/

  1. Остановить сервер Django можно комбинацией клавиш Ctl-C.

Docker Compose/PostgreSQL
  1. Введите данные для переменных окружения (значения даны для примера, но их можно оставить):
cp env_docker .env && nano .env
  1. Из корневой директории проекта выполните команду:
docker compose -f infra/local/docker-compose.yml up -d --build

Проект будет развернут в трех docker-контейнерах (db, web, nginx) по адресу http://localhost.

  1. Остановить docker и удалить контейнеры можно командой из корневой директории проекта:
docker compose -f infra/local/docker-compose.yml down

Если также необходимо удалить тома базы данных, статики и медиа:

docker compose -f infra/local/docker-compose.yml down -v

Запуск на удаленном сервере
  1. Сделайте форк в свой репозиторий.

  2. Создайте Actions.Secrets согласно списку ниже + переменные окружения из env_example файла:

PROJECT_NAME
SECRET_KEY 

CODECOV_TOKEN 

DOCKERHUB_USERNAME 
DOCKERHUB_PASSWORD 

# Данные удаленного сервера и ssh-подключения:
HOST 
USERNAME 
SSH_KEY    
PASSPHRASE 

# Учетные данные Телеграм-бота для получения сообщения о успешном завершении workflow:
TELEGRAM_USER_ID 
TELEGRAM_BOT_TOKEN 

# База данных:
DB_ENGINE=django.db.backends.postgresql
DB_NAME=postgres
DB_HOST=db
DB_PORT=5432
POSTGRES_USER=postgres
POSTGRES_PASSWORD=12345
  1. Запустите вручную workflow, чтобы автоматически развернуть проект в трех docker-контейнерах db, web, nginx на удаленном сервере.

Вход в админ-зону осуществляется по адресу: http://hostname/admin/ , где hostname:

  • 127.0.0.1:8000
  • localhost
  • IP-адрес удаленного сервера

! Только для Docker Compose:

При первом запуске будут автоматически произведены следующие действия:

  • выполнены миграции БД
  • БД заполнена начальными данными
  • создан суперюзер (пользователь с правами админа) с учетными данными из переменных окружения DJANGO_SUPERUSER_USERNAME, DJANGO_SUPERUSER_EMAIL, DJANGO_SUPERUSER_PASSWORD.
  • собрана статика

⬆️Оглавление

Удаление:

Для удаления проекта выполните следующие действия:

cd .. && rm -fr social_network-Django && deactivate

⬆️Оглавление

Автор:

Aleksei Proskuriakov

⬆️В начало

About

Социальная сеть для публикации личных дневников. Разработана по MVT архитектуре. Используется пагинация постов и кэширование. Регистрация реализована с верификацией данных, сменой и восстановлением пароля через почту.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages