Социальная сеть для публикации личных дневников.
Развернуть
Языки программирования, библиотеки и модули:
Фреймворк, расширения и библиотеки:
База данных:
Тестирование:
CI/CD:
- Социальная сеть для публикации личных дневников. Это сайт, на котором можно создать свою страницу.
- После регистрации пользователь получает свой профайл, то есть получает свою страницу
- Если на нее зайти, то можно посмотреть все записи автора.
- После публикации каждая запись доступна на странице автора.
- Пользователи могут заходить на чужие страницы, подписываться на авторов и комментировать их записи.
- Автор может выбрать для своей страницы имя и уникальный адрес.
- Эта часть реализована в момент регистрации. Мы не добавляли возможность изменять свой username: если бы сайт уже был в сети, то при смене имени пользователя старые ссылки на уже опубликованные записи перестали бы работать.
- Есть возможность модерировать записи и блокировать пользователей, если начнут присылать спам.
- Эту часть мы получили вместе с интерфейсом администратора. Будем банить спамеров через админку.
- Записи можно отправить в сообщество и посмотреть там записи разных авторов.
Удобно использовать принцип copy-paste - копировать команды из GitHub Readme и вставлять в командную строку Git Bash или IDE (например VSCode).
Развернуть
Предполагается, что пользователь:
- создал аккаунт DockerHub, если запуск будет производиться на удаленном сервере.
- установил Docker и Docker Compose на локальной машине или на удаленном сервере, где проект будет запускаться в контейнерах. Проверить наличие можно выполнив команды:
docker --version && docker-compose --version
Локальный запуск
!!! Для пользователей Windows обязательно выполнить команду: иначе файл start.sh при клонировании будет бракован:
git config --global core.autocrlf false
- Клонируйте репозиторий с GitHub:
git clone https://github.com/alexpro2022/social_network-Django.git && \
cd social_network-Django
сервер Django/SQLite3
- Введите данные для переменных окружения (значения даны для примера, но их можно оставить):
cp env_example .env && nano .env
-
Создайте и активируйте виртуальное окружение:
- Если у вас Linux/macOS
python -m venv venv && source venv/bin/activate
- Если у вас Windows
python -m venv venv && source venv/Scripts/activate
-
Установите в виртуальное окружение все необходимые зависимости из файла requirements.txt:
python -m pip install --upgrade pip && pip install -r yatube/requirements.txt
- Выполните миграции, создайте суперюзера (потребуется ввод персональных данных) и запустите приложение:
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/
- Остановить сервер Django можно комбинацией клавиш Ctl-C.
Docker Compose/PostgreSQL
- Введите данные для переменных окружения (значения даны для примера, но их можно оставить):
cp env_docker .env && nano .env
- Из корневой директории проекта выполните команду:
docker compose -f infra/local/docker-compose.yml up -d --build
Проект будет развернут в трех docker-контейнерах (db, web, nginx) по адресу http://localhost.
- Остановить docker и удалить контейнеры можно командой из корневой директории проекта:
docker compose -f infra/local/docker-compose.yml down
Если также необходимо удалить тома базы данных, статики и медиа:
docker compose -f infra/local/docker-compose.yml down -v
Запуск на удаленном сервере
-
Сделайте форк в свой репозиторий.
-
Создайте
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
- Запустите вручную
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