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

Развертывание приложения Django в Heroku: Полный гид

Введение вы сделали приложение с Django. Большой! и вы взволнованы, чтобы показать это каждому … С тегом Джанго, Питона, Хероку, Вебдев.

Вы сделали приложение с Django. Большой! , и вы рады показать это всем на планете. Для этого вам нужно разместить его где -нибудь в Интернете, чтобы другие могли получить к нему доступ.

Хорошо, вы провели некоторое исследование и выбрали Heroku. Отличный выбор! 👍

Теперь вы начали развертывать свое приложение и провели исследование в Интернете, и теперь у вас есть много разных ресурсов, которые предлагают миллионы способов сделать это. Итак, вы растеряны, разочарованы и застряли и каким -то образом удалось поставить его в хости Но после этого, к вашему удивлению, вы обнаружили, что ваши файлы CSS не отображаются. ️

Хорошо, теперь давайте решим ваши проблемы. Эта статья охватывает почти все, что вам понадобится.

Дорожная карта

  • Установите необходимые инструменты
  • Создайте необходимые файлы
  • Создать приложение Heroku
  • Редактировать настройки.py
  • Вносить изменения в статические файлы

Для развертывания в Heroku вам нужно установить Heroku CLI (интерфейс командной строки).

Вы можете сделать это, перейдя сюда: https://devcenter.heroku.com/articles/heroku-cli

CLI требуется, потому что он позволит нам использовать такие функции, как логин, запуск миграции и т. Д.

После установки CLI давайте создадим все файлы, которые нужны Heroku.

Файлы:

  1. Требования.txt

    Требования.txt – самый простой для создания. Просто запустите команду

    Эта команда сделает файл .txt, который будет содержать все пакеты, которые требуются вашим текущим приложением Django.

    Примечание. Если вы добавите какой -либо пакет дальше, запустите эту команду еще раз, таким образом файл будет обновлен с помощью новых пакетов

    Что такое использование Требования.txt ? Как видите, он содержит все зависимости, которые требуются вашему приложению. Поэтому, когда вы поместите свое приложение на Heroku, он сообщит Heroku, какие пакеты должны установить.

  2. Прозвать

    После этого сделайте новое имя файла, и не поместите в него продление. Это файл, требуемый Heroku

    По словам Хероку:

    Приложения Heroku включают Procfile Это указывает команды, которые выполняются приложением при запуске. Вы можете использовать Procfile, чтобы объявить множество Типы процессов , включая:

    Для нашего приложения мы можем написать следующую команду

    Если вы смущены именем вашего приложения, просто перейдите в файл wsgi.py в своем проекте, и вы найдете там имя приложения.

    Для этого вы должны установить и добавить снаряжение.

    Установка очень проста. Вы, должно быть, догадались!

  3. Runtime.txt

    После этого сделайте новый текстовый файл с именем runtime.txt, а внутри него напишите версию Python, которую вы используете в следующем формате

    Python-3.8.1

    Это все файлы, которые нам нужны. Теперь мы должны начать редактирование нашего файла настройки.

Это простой шаг, который может быть сделан двумя способами, либо по командной строке, либо через веб -сайт Heroku.

Давайте пока используем веб -сайт Heroku.

  • После создания учетной записи Heroku вы увидите возможность создать новое приложение
  • Он попросит у вас имя, имя должно быть уникальным. После удара и испытаний вы будете перенаправлены на панель панели приложения.
  • Здесь есть много параметров, но давайте перейдем на вкладку «Настройки», и нажмите «Открыть конфигурации»
  • В ключе write secret_key и в значении вставьте секретную клавишу из файла настроек, и вы можете изменить его, потому что будет использоваться только этот ключ.
  • Это все сейчас.
  • Мы скоро вернемся.

Есть довольно много изменений, которые должны быть внесены в этом файле.

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

Первое изменение

DEBUG = False

В допустимых хостах введите домен вашего приложения Heroku

например.

ALLOWED_HOSTS = ["your_app_name.herokuapp.com", "127.0.0.1"]

Замените переменную secret_key на следующее (при условии, что вы настроили секретный ключ в Heroku с предыдущего шага)

SECRET_KEY = os.environ.get('SECRET_KEY')

Что это делает, это получает Secret_key от окружающей среды. В нашем случае мы можем установить secret_key в Heroku, и это предоставит ключ здесь через переменные среды.

В файле настроек вы найдете

STATIC_URL = '/static/' 

Замените это следующим кодом

STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
STATIC_URL = '/static/'

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'static'),
)

По сути, это создаст папку с именем Static, в которой будут храниться все статические файлы, такие как файлы CSS.

Если ваше приложение содержит изображения, которые вы сохранили на нем, или у пользователя есть возможность хранить, добавьте следующие строки

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

Это почти то же самое, что и выше

Есть еще одна вещь, которую вам нужно сделать.

Если у вас есть медиа-файлы, чтобы позволить Django для их сервера, вы должны добавить строку в свой файл urls.py проекта (файл URL-адреса верхнего уровня)

from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    # ... the rest of your URLconf goes here ...
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

Я настоятельно рекомендую вам взглянуть на эту документацию.

https://docs.djangoproject.com/en/3.1/howto/static-files/

Последнее, что вам нужно, чтобы обслуживать статические файлы в производстве, – это отбелить

Благодаря нескольким строкам конфигурации, отчитываемой конфигурации позволяет вашему веб-приложению обслуживать свои собственные статические файлы, что делает его автономным устройством, которое можно развернуть в любом месте, не полагаясь на Nginx, Amazon S3 или любую другую внешнюю службу. (Особенно полезно для Heroku, Openshift и других провайдеров PAAS.) -Белый шум Документация

Установите белый шум

pip install whitenoise

Добавить его в промежуточное программное обеспечение в файл stens.py

MIDDLEWARE = [
  # 'django.middleware.security.SecurityMiddleware',
  'whitenoise.middleware.WhiteNoiseMiddleware',
  # ...
]

После этого не забудьте запустить команду, которая создает файл Telect.txt. Запомнить?

Посмотрите на документацию http://whitenoise.evans.io/en/stable/

Итак, наконец, мы выполнили 2 самых важных шага для развертывания

Сделайте новое репо Github и добавьте в него весь свой код. Используйте этот пост ссылку

После этого перейдите в Heroku и под вкладкой Deploy, вы увидите возможность подключения GitHub.

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

В чем нужна? Я уже использую SQLite!

Проблема в том, что

Файллема Heroku является эфемерной – это означает, что любые изменения в файловой системе, в то время как Dyno работает только последним, пока этот динамо не будет отключен или перезапущен. Каждый Dyno сапится с чистой копией файловой системы из самого последнего развертывания. Это похоже на то, сколько работает системы на основе контейнеров, такие как Docker. Кроме того, при нормальных операциях Dynos будет перезагружаться каждый день в процессе, известного как «езда на велосипеде».

https://help.heroku.com/K1PPS2WM/why-are-my-file-uploads-missing-deleted

В основном все данные, которые вы храните, будут удалять каждые 24 часа.

Чтобы решить Heroku предложить использовать AWS или Postgres. Хероку сделал очень простой в использовании Postgres.

Давай сделаем это

Зайдите в панель панели приложения и в разделе «Ресурсы» Поиск постгров. Выберите его, и вы получите что -то подобное

Теперь перейдите на вкладку «Настройки» и раскройте конфигурацию VARS

Вы увидите там ключ Database_url. Это означает, что Heroku добавил базу данных, и теперь мы должны сообщить нашему приложению использовать эту базу данных.

Для этого нам понадобится еще один пакет под названием DJ_DATABASE_URL. Установите его через PIP и импортируйте в верхней части файла настройки.

Теперь вставьте следующий код ниже базы данных в настройках файл

db_from_env = dj_database_url.config(conn_max_age=600)
DATABASES['default'].update(db_from_env)

Вот и все сейчас Ваша база данных настроена

В настоящее время ваша база данных пуста, и вы можете заполнить ее.

  • Открытый терминал
  • Тип → Heroku Login
  • После входа в систему запустить следующие команды
heroku run python manage.py makemigrations
heroku run python manage.py migrate
heroku run python manage.py createsuperuser

Теперь ваше приложение готово к развертыванию

либо использовать

git push heroku master

(После совершения изменений) или протолкнуть их через GitHub.

Хорошо, так что это наконец сделано. Это немного длинное, но довольно легко сделать, потому что вы должны вносить лишь небольшие изменения, ничего слишком большого.

Если есть какое -либо улучшение, пожалуйста, расскажите мне в комментариях.

Проверьте мои другие статьи

https://dev.to/theshubhagrwl/should-you-track-your-time-4d52

Посетите мой блог

https://theshubhagrwl.hashnode.dev/

Посетите мой сайт и следуйте за мной на ведении блога и социальных платформах

http://theshubhagrwl.netlify.app/

Оригинал: “https://dev.to/theshubhagrwl/deploying-django-app-to-heroku-full-guide-4ce0”