Giter Site home page Giter Site logo

seleznev808 / foodgram-project Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 929 KB

Foodgram - website for publishing recipes

Dockerfile 0.22% HTML 2.59% CSS 14.41% JavaScript 52.30% Shell 0.79% Python 29.70%
django python django-application django-rest-framework

foodgram-project's Introduction

Foodgram

Описание

Фудграм — сайт, на котором пользователи могут публиковать рецепты, добавлять чужие рецепты в избранное и подписываться на публикации других авторов. Пользователям сайта также доступен сервис «Список покупок». Он позволяет создавать список продуктов, которые нужно купить для приготовления выбранных блюд.

Запуск проекта на удаленном сервере

Для запуска проекта на удаленном сервере используется workflow для GitHub Actions

Клонируйте данный репозиторий:

git clone [email protected]:Seleznev808/foodgram-project.git

перейдите в настройки репозитория — Settings, выберите на панели слева Secrets and Variables → Actions

Необходимо создать переменные:

DOCKER_USERNAME - ваш логин DockerHub
DOCKER_PASSWORD - ваш пароль DockerHub
SSH_KEY - SSH ключ вашего удаленного сервера
SSH_PASSPHRASE - пароль вашего удаленного сервера
HOST - IP-адрес вашего удаленного сервера
USER - логин вашего удаленного сервера
TELEGRAM_TO - ID вашего телеграм-аккаунта
TELEGRAM_TOKEN - токен вашего бота в Telegram

Подключитесь к вашему удаленному серверу и создайте директорию foodgram/ в домашней директории сервера

Создайте файл .env в директории foodgram/, внесите в него необходимые значения:

POSTGRES_DB=название вашей БД
POSTGRES_USER=имя пользователя БД
POSTGRES_PASSWORD=пароль пользователя БД
DB_HOST=db
DB_PORT=порт, по умолчанию 5432

SECRET_KEY='ваш секретный ключ'
DEBUG=False
ALLOWED_HOSTS='127.0.0.1 localhost'

Установка и настройка Nginx


Установите Nginx:

sudo apt install nginx -y

После чего запустите его:

sudo systemctl start nginx

Укажите файрволу, какие порты должны остаться открытыми:

sudo ufw allow 'Nginx Full'
sudo ufw allow OpenSSH

Включите файрвол:

sudo ufw enable

Откройте файл конфигурации Nginx

sudo nano /etc/nginx/sites-enabled/default

и пропишите:

server {
        server_name ваше_доменное_имя;
	    server_tokens off;

        location / {
            proxy_pass http://127.0.0.1:8080;
        }
}

Получение и настройка SSL-сертификата


Установите пакетный менеджер snap:

sudo apt install snapd

Установите и обновите зависимости для snap:

sudo snap install core; sudo snap refresh core

Установите пакет certbot:

sudo snap install --classic certbo

Создайте ссылку на certbot в системной директории:

sudo ln -s /snap/bin/certbot /usr/bin/certbo

Для получения SSL-сертификата выполните:

sudo certbot --nginx

Проверьте, что сертификат будет обновляться автоматически:

sudo certbot renew --dry-run

Если не выведется ошибка, значит, всё в порядке

Деплой на удаленный сервер


В файле main.yml директории .github/workflows/ измените название образов

seleznev808/kittygram_gateway:latest → ваш_логин_DockerHub/foodgram2_backend:latest

Для деплоя на сервер достаточно запушить коммит на GitHub:

git add .
git commit -m "ваш коммит"
git push

После отправки изменений зайдите в свой репозиторий проекта на GitHub и откройте раздел Actions. В нем вы увидите выполнение workflow (он назван именем вашего последнего коммита). После успешного деплоя в ваш телеграм придет сообщение от бота:

Деплой успешно выполнен!

После деплоя необходимо подключиться к удаленному серверу, перейти в директорию foodgram/ и добавить ингредиенты для рецептов в базу:

sudo docker compose -f docker-compose.yml exec backend python manage.py loaddata db.json

При необходимости вы можете сделать свой дамп базы данных - скрипт для внесения данных в базу из csv файла лежит в папке data. После заполнения базы выполните:

python -Xutf8 manage.py dumpdata recipes.ingredient recipes.tag --indent 2 > db.json

это создаст дамп таблиц ingredient и tag из приложения recipes

Технологии

  • Django 3.2.16
  • Django REST framework 3.14
  • Djoser 2.2
  • PostgreSQL
  • Docker
  • Nginx
  • React

Автор

Селезнев Василий

foodgram-project's People

Contributors

seleznev808 avatar

Watchers

 avatar

foodgram-project's Issues

Фикс стилей отображения переноса текста рецепта.

Теперь при публикации рецепта авторские переносы в тексте отображаются при публикации и не сливаются в один монолитный текст. Добавлены стили в frontend/src/pages/single-card/description/styles.module.css и применены в frontend/src/pages/single-card/description/index.js

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.