Skip to content

Repository files navigation

Main Taski workflow

Проект Gastrogram

Python Django Django REST Framework Nginx gunicorn PostgreSQL docker GitHub%20Actions

Описание

Цель этого сайта — дать возможность пользователям создавать и хранить рецепты на онлайн-платформе. Кроме того, можно скачать список продуктов, необходимых для приготовления блюда, просмотреть рецепты друзей и добавить любимые рецепты в список избранных.

Чтобы использовать все возможности сайта — нужна регистрация. Проверка адреса электронной почты не осуществляется, вы можете ввести любой email.

Заходите и делитесь своими любимыми рецептами!

Основные особенности

  • Аутентификация пользователей: Создавайте аккаунты или входите, чтобы получить доступ к платформе.
  • Создание рецептов: Делитесь своими рецептами с другими пользователями.
  • Поиск и исследование: Находите и открывайте новые рецепты, добавляйте их в избранное.

Стек использованных технологий

  • Django 3.2
  • JWT
  • Python 3.9
  • DRF
  • PostgreSQL 13.10
  • Docker

Запуск проекта

Удаленное развертывание

  1. Подключитесь к удаленному серверу

    ssh -i PATH_TO_SSH_KEY/SSH_KEY_NAME YOUR_USERNAME@SERVER_IP_ADDRESS 
    
  2. Создайте на сервере директорию gastrogram:

    mkdir gastrogram
    
  3. Установите Docker Compose на сервер:

    sudo apt update
    sudo apt install curl
    curl -fsSL https://get.docker.com -o get-docker.sh
    sudo sh get-docker.sh
    sudo apt install docker-compose
    
  4. Скопируйте файлы docker-compose.production.yml и .env в директорию gastrogram/ на сервере:

    scp -i PATH_TO_SSH_KEY/SSH_KEY_NAME docker-compose.production.yml YOUR_USERNAME@SERVER_IP_ADDRESS:/home/YOUR_USERNAME/gastrogram/docker-compose.production.yml
    

    Где:

    • PATH_TO_SSH_KEY - путь к файлу с вашим SSH-ключом
    • SSH_KEY_NAME - имя файла с вашим SSH-ключом
    • YOUR_USERNAME - ваше имя пользователя на сервере
    • SERVER_IP_ADDRESS - IP-адрес вашего сервера
  5. Запустите Docker Compose в режиме демона:

    sudo docker-compose -f /home/YOUR_USERNAME/gastrogram/docker-compose.production.yml up -d
    
  6. Выполните миграции, соберите статические файлы бэкенда и скопируйте их в /backend_static/static/:

    sudo docker-compose -f /home/YOUR_USERNAME/gastrogram/docker-compose.production.yml exec backend python manage.py migrate
    sudo docker-compose -f /home/YOUR_USERNAME/gastrogram/docker-compose.production.yml exec backend python manage.py collectstatic
    sudo docker-compose -f /home/YOUR_USERNAME/gastrogram/docker-compose.production.yml exec backend cp -r /app/collected_static/. /backend_static/static/
    
  7. Откройте конфигурационный файл Nginx в редакторе nano:

    sudo nano /etc/nginx/sites-enabled/default
    
  8. Измените настройки location в секции server:

    location / {
        proxy_set_header Host $http_host;
        proxy_pass http://127.0.0.1:8001;
    }
    
  9. Проверьте правильность конфигурации Nginx:

    sudo nginx -t
    

    Если вы получаете следующий ответ, значит, ошибок нет:

    nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
    nginx: configuration file /etc/nginx/nginx.conf test is successful
    
  10. Перезапустите Nginx:

    sudo service nginx reload
    

Настройка CI/CD

  1. Файл workflow уже написан и находится в директории:

    gastrogram/.github/workflows/main.yml
    
  2. Для адаптации его к вашему серверу добавьте секреты в GitHub Actions:

    DOCKER_USERNAME                # имя пользователя в DockerHub
    DOCKER_PASSWORD                # пароль пользователя в DockerHub
    HOST                           # IP-адрес сервера
    USER                           # имя пользователя
    SSH_KEY                        # содержимое приватного SSH-ключа (cat ~/.ssh/id_rsa)
    SSH_PASSPHRASE                 # пароль для SSH-ключа
    
    TELEGRAM_TO                    # ID вашего телеграм-аккаунта (можно узнать у @userinfobot, команда /start)
    TELEGRAM_TOKEN                 # токен вашего бота (получить токен можно у @BotFather, команда /token, имя бота)
    

Для успешного развертывания проекта необходимо в главной директории создать файл .env, где будут указаны следующие параметры:

  • POSTGRES_USER=gastrogram_user
  • POSTGRES_PASSWORD=gastrogram_password
  • POSTGRES_DB=gastrogram_db
  • DB_NAME=gastrogram
  • DB_HOST=db
  • DB_PORT=5432
  • SECRET_KEY=somesecretkey
  • ALLOWED_HOSTS=127.0.0.1,localhost,ваш_доменный_адрес,ваш_IP_адрес
  • DEBUG=False
  • USE_SQLITE=False (параметр для быстрой смены БД с PostgreSQL на SQLite)

Автор

About

Социальная сеть для любителей готовить.

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages