https://github.com/InAnotherLife/foodgram
Foodgram - это сервис, позволяющий делиться своими кулинарными шедеврами. Здесь Вы можете создавать и публиковать свои рецепты, а также находить вдохновение в рецептах других пользователей.
- Django 4.2
- Django REST framework 3.14
- Python 3.10
- Клонировать репозиторий и перейти в папку с проектом:
git clone [email protected]:InAnotherLife/foodgram.git
- Создать файл .env с переменными окружения.
Сгенерировать секретный ключ и сохранить в переменной SECRET_KEY.
SU_NAME, SU_EMAIL, SU_PASSWORD - данные суперпользователя.
Пример заполнения файла .env:
SECRET_KEY='KEY'
DEBUG=True # True отладка включена, False отладка отключена
DATABASE=Prod # Prod для PostgreSQL, Dev для SQLite3
POSTGRES_DB=django_db
POSTGRES_USER=django_user
POSTGRES_PASSWORD=django_password
DB_HOST=db
DB_PORT=5432
ALLOWED_HOSTS=127.0.0.1;localhost
CSRF_TRUSTED_ORIGINS=http://localhost
CORS_ALLOWED_ORIGINS=http://127.0.0.1;http://localhost
SU_NAME=admin
[email protected]
SU_PASSWORD=pass
- Перейти в папку docker и запустить проект при помощи команды:
sudo docker compose -f docker-compose.local.yml up -d
- Выполнить миграции в БД:
sudo docker compose -f docker-compose.local.yml exec backend python manage.py makemigrations
sudo docker compose -f docker-compose.local.yml exec backend python manage.py migrate
- Собрать статику:
sudo docker compose -f docker-compose.local.yml exec backend python manage.py collectstatic --no-input
- Создать суперпользователя:
sudo docker compose -f docker-compose.local.yml exec backend python manage.py create_su
- Для импорта данных в БД необходимо выполнить команду:
sudo docker compose -f docker-compose.local.yml exec backend python manage.py import_data
Проект доступен по адресу - http://localhost/
API - http://localhost/api/
Админка - http://localhost/admin/
ReDoc - http://localhost/api/docs/
-
Зайти на удаленный сервер и создать папку foodgram.
-
В папке foodgram создать файл .env с переменными окружения.
Сгенерировать секретный ключ и сохранить в переменной SECRET_KEY.
В переменные ALLOWED_HOSTS и CORS_ALLOWED_ORIGINS записать IP-адрес сервера и доменное имя сайта.
В переменную CSRF_TRUSTED_ORIGINS записать доменное имя сайта.
SU_NAME, SU_EMAIL, SU_PASSWORD - данные суперпользователя.
Пример заполнения файла .env:
SECRET_KEY='KEY'
DEBUG=False # True отладка включена, False отладка отключена
DATABASE=Prod # Prod для PostgreSQL, Dev для SQLite3
POSTGRES_DB=django_db
POSTGRES_USER=django_user
POSTGRES_PASSWORD=django_password
DB_HOST=db
DB_PORT=5432
ALLOWED_HOSTS=xxx.xxx.xxx.xxx;127.0.0.1;localhost;доменное_имя
CSRF_TRUSTED_ORIGINS=http://localhost;https://доменное_имя
CORS_ALLOWED_ORIGINS=https://xxx.xxx.xxx.xxx;http://127.0.0.1;http://localhost;https://доменное_имя
SU_NAME=admin
[email protected]
SU_PASSWORD=pass
-
В папку foodgram скопировать файлы docker-compose.yml и nginx.conf из папки docker проекта.
-
Открыть файл nginx.conf и в переменную server_name записать IP-адрес сервера и доменное имя сайта.
-
На удаленном сервере изменить файл конфигурации Nginx:
sudo nano /etc/nginx/sites-enabled/default
Для этого записать и сохранить новые настройки:
server {
listen 80;
server_tokens off;
client_max_body_size 20M;
server_name xxx.xxx.xxx.xxx доменное_имя;
location / {
proxy_set_header Host $http_host;
proxy_pass http://127.0.0.1:8000;
}
}
В переменную server_name записать IP-адрес сервера и доменное имя сайта.
- Проверить файл конфигурации Nginx:
sudo nginx -t
- Перезагрузить Nginx:
sudo systemctl reload nginx
- Перейти в папку foodgram и запустить проект при помощи команды:
sudo docker compose up -d
- Выполнить миграции в БД:
sudo docker compose exec backend python manage.py makemigrations
sudo docker compose exec backend python manage.py migrate
- Собрать статику:
sudo docker compose exec backend python manage.py collectstatic --no-input
- Создать суперпользователя:
sudo docker compose exec backend python manage.py create_su
- Для импорта данных в БД необходимо выполнить команду:
sudo docker compose exec backend python manage.py import_data
Проект доступен по адресу - http://доменное_имя/
API - http://доменное_имя/api/
Админка - http://доменное_имя/admin/
ReDoc - http://доменное_имя/api/docs/