Foodgram дает людям возможность поделиться рецептами своих любимых блюд. Зарегестрированные пользователи могут создавать и редактировать рецепты, подписываться на понравившихся авторов рецепта, а так же добавлять рецепт в избранное и список покупок. Список покупок можно скачать, в результате получится файл TXT формата, содержащий все необходимые ингридиенты и их количество для рецептов из списка покупок.
Для развертывания на сервере:
-
Убедитесь, что на сервере установлен Docker, если нет, то установите.
-
Убедитесь, что на сервере установлен Nginx, если нет, то установите.
-
Настройте nginx на перенаправление всех запросов в докер: На сервере в редакторе nano откройте конфиг Nginx:
sudo nano /etc/nginx/sites-enabled/default
. Измените настройкиlocation
в секцииserver
.
server {
listen 80;
server_name server_ip domain;
location / {
proxy_set_header Host $http_host;
proxy_pass http://127.0.0.1:8000;
}
}
Cмысл прост: «все запросы передавать в приложение, которое слушает порт 8000».
Вместо server_ip
и domain
укажите ip адрес сервера и домен.
-
Скачайте на сервер в папку проекта файл "docker-compose.production.yml".
-
Создайте в папке проекта файл ".env". Пример для заполнения файла представлен в "example.env".
-
Запустите Docker Compose в режиме демона:
sudo docker compose -f docker-compose.production.yml up -d
- Выполните миграции, импортируйте фикстуры, соберите статические файлы бэкенда:
sudo docker compose -f docker-compose.production.yml exec backend python manage.py migrate
sudo docker compose -f docker-compose.production.yml exec backend python manage.py loaddata recipes/data/ingredients.json
sudo docker compose -f docker-compose.production.yml exec backend python manage.py loaddata recipes/data/tags.json
sudo docker compose -f docker-compose.production.yml exec backend python manage.py collectstatic
sudo docker compose -f docker-compose.production.yml exec backend cp -r /app/collected_static/. /backend_static/static/
- Для создания суперюзера выполните следующие команды:
sudo docker exec -it foodgram-backend-1 bash
echo "from django.contrib.auth import get_user_model; User = get_user_model(); \
u, _ = User.objects.get_or_create(username='superuser'); u.is_superuser = True; u.is_staff = True; \
u.email = '[email protected]'; u.first_name = 'Admin'; u.set_password('5eCretPaSsw0rD'); u.save();" | python manage.py shell
exit
Данные для входа: email: [email protected] password: 5eCretPaSsw0rD
Для локального развертывания проекта:
-
Скопируйте репозиторий в папку на компьютере.
-
Разверните и активируйте виртуальное окружение, установите зависимости:
python -m venv venv
source venv/Scripts/activate
python -m pip install --upgrade pip
pip install -r backend/requirements.txt
-
Создайте папку "data" для базы SQLite в папке "backend":
mkdir backend/data/
-
Создайте в папке
backend\foodgram_backend\
файл ".env". Пример для заполнения файла представлен в "example.env". В файле ".env" укажите в качестве базы данных БД SQLite, для этого установвитеPSG=False
. -
Выполните миграции и импортируйте фикстуры:
cd backend/
python manage.py migrate
python manage.py loaddata recipes/data/ingredients.json
python manage.py loaddata recipes/data/tags.json
- Запустите проект
python manage.py runserver
.
- Суматохин Константин - https://github.com/KSumatokhin
- Команда Яндекс Практикум - https://github.com/yandex-praktikum