Рубрики
Без рубрики

Развертывание Джанго (3.1) на Heroku

Развертывание новой версии Django на Heroku Dyno Step за шагом. Теги с Джанго, Героку, Питоном.

В 4 августа 2020 года Django выпустил свою версию 3.1. Однако, как новичок Django Developer, я столкнулся с некоторыми проблемами, развернувшими его Heroku.

В этом посте я буду писать, как развернуть его без особых хлопот, которые я столкнулся.

Давайте начнем

wsgi.py

Перейдите в файл Django Project’s WSGI.PY.

Добавьте это Os.environ ["django_settings_module"] вместо Os.environ.SetDefault ('django_settings_module', ' .settings')

Procfile (как обычно)

Добавьте дополнительные атрибуты (–log-файл -) для генерации журналов Веб: Gunicorn < Proj_name> .wsgi --log-файл -

Каждый раз, когда вы используете Gunicorn, чтобы развернуть Django, вы обязательно сталкиваетесь с проблемами. И использование этого синтаксиса помогает отладить его.

Собирать статическое (если я отключить?)

Неа.

Не делайте, я повторяю не отключающую статический метод, установив вариабельную среду Disable_collectstatic до 1

Ваши собственные статические файлы будут загружены без проблем, но пакеты Django и модулями, которые имеют свои собственные статические файлы, не смогут загружать правильно.

Время выполнения

Обязательно добавить Runtime.txt Файл, чтобы Heroku Dyno знает, какую версию Python использовать. С новым Python 3.8, теперь даже важнее, как Heroku Free Dynos обычно используют более старые версии Python.

Settings.py

Самая важная часть

В новейшей версии Django (3.1) файл settings.py настраивает База данных Словарь Имя следующим образом:

‘НАЗВАНИЕ’: Base_dir/’db.sqlite3′

Как я уже сказал, Heroku Dynos не сможет идентифицировать это как Строка И сборка не удастся. Таким образом, мы будем использовать его старый и лучший способ, с .присоединиться () Метод:

«Имя»: OS.Path.join (base_dir, ‘db isqlite3’)

Settings.py (постоянные переменные)

Обязательно заявляйте Media_url , Media_root , Static_url С Static_root. , StaticFile_dirs Константы следующим образом:

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATICFILE_DIRS = [
      "static/images", 
      "static/css", 
      "staticfiles",]

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

Конфигурация производства

Добавьте настройку производства в настройках.

if os.getcwd() == '/app':
    import dj_database_url
    db_from_env = dj_database_url.config(conn_max_age=500)
    DATABASES['default'].update(db_from_env)

    SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
    ALLOWED_HOSTS = ['APP_NAME.herokuapp.com']
    DEBUG = True
    BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

Это все, что я думал об умении с тобой. Пожалуйста, дайте мне знать, если есть что-то не так. Я буду рад учиться.

Оригинал: “https://dev.to/fazledyn/deploying-django-3-1-on-heroku-417”