GithubHelp home page GithubHelp logo

zebrahr / grocery_helper Goto Github PK

View Code? Open in Web Editor NEW
2.0 1.0 0.0 1.1 MB

web site with recipes

Dockerfile 0.18% HTML 0.96% CSS 14.67% JavaScript 53.25% Python 30.94%
ci-cd dishes django django-rest-framework docker git-actions gunicorn nginx recipes

grocery_helper's Introduction

Grocery helper

Проект "Продуктовый помошник" — сайт с рецептами.

Для проверки:

Технологии:

Python Django djangorestframework Nginx Gunicorn Docker

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

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

Установка проекта

  • Сделайте fork репозитория, затем клонируйте его:
git clone https://github.com/ZebraHr/grocery_helper
  • Для адаптации проекта на своем удаленном сервере добавьте секреты в GitHub Actions:
DOCKER_USERNAME                # имя пользователя в DockerHub
DOCKER_PASSWORD                # пароль пользователя в DockerHub
HOST                           # ip_address сервера
USER                           # имя пользователя
SSH_KEY                        # приватный ssh-ключ (cat ~/.ssh/id_rsa)
SSH_PASSPHRASE                 # кодовая фраза (пароль) для ssh-ключа

TELEGRAM_TO                    # id телеграм-аккаунта (можно узнать у @userinfobot, команда /start)
TELEGRAM_TOKEN                 # токен бота (получить токен можно у @BotFather, /token, имя бота)
  • На удаленном сервере создайте папку foodgram/
  • На удаленном сервере в папке проекта cоздайте файл .env:
POSTGRES_DB=<Желаемое_имя_базы_данных>
POSTGRES_USER=<Желаемое_имя_пользователя_базы_данных>
POSTGRES_PASSWORD=<Желаемый_пароль_пользователя_базы_данных>
DB_HOST=db
DB_PORT=5432

SECRET_KEY = 'ваш_secret_key'
ALLOWED_HOSTS = ip_удаленного сервера, доменное имя, 127.0.0.1, localhost
DEBUG = False
  • Установка Nginx. Находясь на удалённом сервере, из любой директории выполните команду, затем запустите Nginx:
sudo apt install nginx -y 
sudo systemctl start nginx
  • Перейдите в файл конфигурации nginx и измените его настройки на следующие:
nano /etc/nginx/sites-enabled/default
server {
    server_name server_name <публичный-IP-адрес> <доменное-имя>;
    server_tokens_off;
    client_max_body_size 30M;

    location / {
        proxy_set_header Host $http_host;
        proxy_pass http://127.0.0.1:8000;
    }

}
  • Перезарузите Nginx:
sudo nginx -t
sudo systemctl reload nginx
  • Откройте порты для фаервола и активируйте его:
sudo ufw allow 'Nginx Full'
sudo ufw allow OpenSSH
sudo ufw enable
  • (Опционально) Получите SSL-сертификат для вашего доменного имени с помощью Certbot:
sudo apt install snapd
sudo snap install core; sudo snap refresh core
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot 
sudo certbot --nginx
  • Пуш в любую ветку запускает тестирование и деплой Foodgram на ваш удаленный сервер, а после успешного деплоя вам приходит оповещение в телеграм.

Автор

Анна Победоносцева

GitHub

grocery_helper's People

Contributors

zebrahr avatar

Stargazers

 avatar  avatar

Watchers

 avatar

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.