Foodgram – это сайт, на котором пользователи могут публиковать рецепты, добавлять чужие рецепты в избранное и подписываться на публикации других авторов. Сервис «Список покупок» позволяет пользователям создавать список продуктов, которые нужно купить для приготовления выбранных блюд.
- Клонировать репозиторий и перейти в него в командной строке:
git clone [email protected]:Belyanski/foodgram-project-react.git
cd foodgram-project-react
- Cоздать и активировать виртуальное окружение
python -m venv venv # Для Windows
python3 -m venv venv # Для Linux и macOS
source venv/Scripts/activate # Для Windows
source venv/bin/activate # Для Linux и macOS
- Установите зависимости из файла requirements.txt
pip install -r requirements.txt
- Перейти в папку со скриптом управления и выполнить миграции
cd backend/
- Выполните миграции
python manage.py migrate
- Запустить проект
python manage.py runserver
- В директории с файлом manage.py выполнить команду
python manage.py createsuperuser
- Заполнить поля в терминале
Email: <ваш_email>
Username: <ваше_имя_пользователя>
First_name: <ваше_имя>
Last_name: <ваша_фамилия>
Password: <ваш_пароль>
Password (again): <повторите_ваш_пароль>
- Передать на эндпоинт 127.0.0.1:8000/api/users/ данные для регистрации
{
"email": "<ваш_email>",
"username": "<ваше_имя_пользователя>",
"first_name": "<ваше_имя>",
"last_name": "<ваша_фамилия>",
"password": "<ваш_пароль>"
}
- Передать на эндпоинт http://127.0.0.1:8000/api/auth/token/login/
{
"password": "<ваш_пароль>",
"email": "<ваш_email>"
}
- В директории infra/ при запущеном Docker выполнить команду docker-compose up
- Перейти в браузере по адресу http://localhost/api/docs/
Примечание: дальнейшии инструкции составлены на основе работы с сервером на OS Ubuntu 20.04.
- Форкните репозиторий
- Клонируйте репозиторий на локальную машину git clone [email protected]:<ваш_аккаунт>/foodgram-project-react.git
- В файле
nginx.conf
замените ip сервера и домен на свои - Предварительно авторизовавших в терминале на DockerHub (
docker login
) сбилдить и пушнуть образы в директориях backend и frontend
docker build -t <ваше_имя_пользователя>/foodgram_backend . # в папке **backend**
docker push <ваше_имя_пользователя>/foodgram_backend
docker build -t <ваше_имя_пользователя>/foodgram_frontend .# в папке **frontend**
docker push <ваше_имя_пользователя>/foodgram_frontend
В файлах docker-compose.yml и docker-compose.production.yml репозитория замените во всех image
имеющиеся данные на свои <ваше_имя_пользователя>/<имя_образа>:latest
Подготовка сервера:
- В домашней директории сервера создать папку foodgram
mkdir foodgram
и перейти в нееcd foodgram
- В директории foodgram создать папки infra и docs, также через
mkdir
- В папке docs разместить файлы
openapi-schema.yml
иredoc.html
из репозитерия - В папке infra аналогичным способом разместить
docker-compose.production.yml
иnginx.conf
В корневой директории проекта создайте файл с секретами nano .env
и заполните его:
Для Django-проекта
SECRET_KEY # Секретный ключ Django-проекта
DEBUG # True или False
ALLOWED_HOSTS # можно указать звездочку *
Примерные значения для БД PostgreSQL
POSTGRES_DB # foodgram
POSTGRES_USER # foodgram_user
POSTGRES_PASSWORD # foodgram_password
DB_NAME # foodgram
DB_HOST # db
DB_PORT # 5432
Замените настройки Nginx серверва на следующие:
sudo nano /etc/nginx/sites-enabled/default
server {
server_name <ваш_домен>;
location / {
proxy_set_header Host $http_host;
proxy_pass http://127.0.0.1:8000;
}
location /admin/ {
proxy_set_header Host $http_host;
proxy_pass http://127.0.0.1:8000/admin/;
}
}
Сохранитие изменение и презагрузите Nginx sudo systemctl reload nginx
. Работу конфига можно проверить командой sudo nginx -t
.
В папке проекта infra последовательно выполните следующие команды:
sudo docker compose -f docker-compose.production.yml up -d
docker compose -f docker-compose.production.yml exec backend python manage.py migrate --noinput
docker compose -f docker-compose.production.yml exec backend python manage.py collectstatic --noinput
docker compose -f docker-compose.production.yml exec backend python manage.py ingrs_loader
docker compose -f docker-compose.production.yml exec backend python manage.py tags_loader
После выполнения описаннх действий проект должен стать доступным по домену. Поздравляю!
Скорректируйте параметр tags
в файле .github/workflows/main.yml
под свои данные с Docker Hub. Также удостоверьтесь, что на шаге Executing remote ssh commands to deploy
прописан правильный путь к проекту.
В Settings репозитория на GitHub в разделе Secrets and variables создать следующие секреты: Для Django-проекта
SECRET_KEY # Секретный ключ Django-проекта
DEBUG # True или False
ALLOWED_HOSTS # можно указать звездочку *
Примерные значения для БД PostgreSQL
POSTGRES_DB # foodgram
POSTGRES_USER # foodgram_user
POSTGRES_PASSWORD # foodgram_password
DB_NAME # foodgram
DB_HOST # db
DB_PORT # 5432
Данные для авторизации на DockerHub
DOCKER_PASSWORD # Пароль
DOCKER_USERNAME # Логин
Для сервера
HOST # Ip-адрес сервера
SSH_KEY # SSH-ключ
USER # Имя пользователя
PASSPHRASE # Секретная фраза от ssh-ключа
Для уведомления в мессенджере Telegram
TELEGRAM_TOKEN # Токен вашего telgram-бота
TELEGRAM_TO # Ваш id в Telegram
Отправьте изменения на GitHub следующими командами:
git add .
git commit -m '<имя_коммита>'
git pushh
В разделе Actions на GitHub вы можете отследить ход деплоя проекта на сервере. Или можно дождаться уведомления от вашего бота в Telegram.
Foodgram
API Foodgram
Документация Foodgram
Панель администратора