Как развернуть приложение Django в Heroku с помощью Git CLI


Как развернуть приложение Django в Heroku с помощью Git CLI

Heroku – это облачная платформа, предоставляющая услуги хостинга. Она поддерживает несколько языков программирования, включая PHP, Node.js и Python. Это платформа как сервис (PaaS), который позволяет вам управлять приложениями веб-сайтов, одновременно заботясь о ваших серверах, сетях, хранилище и других облачных компонентах.

В этой статье мы рассмотрим, как развернуть приложение Django на Heroku с помощью Git.

Предпосылки

Ниже приведен список вещей, которые необходимо сделать, прежде чем мы начнем развертывание:

  1. Git
  2. Учетная запись Heroku и интерфейс командной строки
  3. Приложение Django

Интерфейс командной строки Heroku (CLI) позволяет легко создавать приложения Heroku и управлять ими прямо из терминала. Это важная часть использования Heroku.

Чтобы установить Heroku CLI (он же Heroku Toolbelt), следуйте инструкциям на официальном сайте.

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

Аккаунт Heroku

После того, как все эти вещи будут установлены, следующим шагом будет создание бесплатной учетной записи Heroku здесь, если у вас еще нет учетной записи.

После написания в терминале следующего:

Терминал должен отобразить сообщение вроде:

Нажмите любую клавишу и войдите в систему с помощью браузера. После этого терминал отобразит сообщение следующего содержания:

Настроить приложение Django для Heroku

Теперь, когда мы сделали все необходимое, давайте подготовим наше приложение Django для Heroku.

Procfile

PROCFILE файл с именем Procfile без расширения файла, помещенного в корневом каталоге вашего приложения. В нем перечислены типы процессов в приложении, и каждый тип процесса является объявлением команды, которая выполняется при запуске контейнера / динамометрического стенда этого типа процесса.

Перед созданием Procfile вы захотите установить django gunicorn в каталог вашего проекта:

Хотя Django поставляется со своим собственным сервером WSGI, мы скажем Heroku использовать Gunicorn для обслуживания нашего приложения, что также рекомендуется Heroku.

Теперь создайте Procfile в родительском каталоге и добавьте следующую строку:

Замените yourdjangoweb фактическим названием вашего проекта.

Runtime.txt

Создайте текстовый файл с именем runtime.txt в том же каталоге, что и Procfile . Он сообщает Heroku, какую версию Python использует ваше приложение. Если вы не уверены в версии, введите в терминал python –version с активированной виртуальной средой Django.

Затем добавьте версию в runtime.txt :

Посмотреть поддерживаемые версии Python на Heroku можно здесь.

Разрешенные хосты

Это дополнительная мера безопасности в Django для предотвращения атак HTTP-заголовка хоста, разрешая обслуживание сайта только на хосте / доменах, которые добавлены в список ALLOWED_HOSTS . По умолчанию разрешено только If Debug = True and ALLOWED_HOSTS is [] then localhost . Чтобы развернуть и обслуживать ваше веб-приложение на Heroku, добавьте его в список:

В качестве альтернативы вы можете разрешить все приложения от Heroku, опуская имя приложения, например:

Вы также можете использовать [‘*’] , чтобы разрешить все хосты. Вы можете найти более подробную информацию в документации.

Установить пакеты

Ниже приведены дополнительные пакеты, которые необходимо установить в нашей виртуальной среде.

Чтобы подключить нашу базу данных Django к Heroku, установите dj-database-url , выполнив:

Поскольку Heroku использует базы данных Postgres, нам также понадобится его адаптер для Python:

И, наконец, мы будем использовать WhiteNoise для обслуживания статических файлов на рабочем сервере. Что мы можем установить, выполнив:

Мы уже настроили gunicorn , давайте добавим конфигурацию для whitenoise и dj-database-url .

Настройка статических файлов

Сначала добавьте базовые настройки для обслуживания статических файлов в любом проекте Django. Вы можете скопировать и вставить следующие настройки в свой settings.py :

Добавьте WhiteNoise в список MIDDLEWARE , сразу после SecurityMiddleware :

Добавьте STATICFILES_STORAGE = ‘whitenoise.storage.CompressedManifestStaticFilesStorage’ в ваш settings.py

Настройка базы данных

Мы используем dj-database-url для настройки нашей базы данных. Добавьте эти строки внизу settings.py :

Requirements.txt

Heroku распознает развернутое приложение как приложение Python, только если у него есть файл requirements.txt в корневом каталоге. Он сообщает Heroku, какие пакеты необходимы для запуска вашего приложения.

Для этого мы можем использовать pip freeze и передать вывод в файл requirements.txt :

Ваш requirements.txt должен выглядеть примерно так:

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

Подключите приложение Heroku к Git

Теперь нам нужно создать приложение Heroku:

Он отобразит сообщение «done» с двумя URL-адресами в следующих строках:

Это означает, что для вашего приложения был создан репозиторий Git в облаке Heroku. URL-адрес https://herokuappname.herokuapp.com/ будет использоваться для доступа к вашему приложению где угодно, но нам все равно нужно сделать еще один шаг перед запуском нашего приложения, т.е. нам нужно отправить наш код в репозиторий.

Инициализируйте пустой репозиторий в каталоге вашего проекта:

Подключите приложение Heroku к пустому git репозиторию:

Зафиксируйте изменения / файлы:

Наконец, отправьте проект в git репозиторий, размещенный на Heroku:

Если все пойдет нормально, вы увидите такой вывод:

Ошибка collectstatic

Вы можете получить ошибку collectstatic , связанную с запуском команды git push heroku master . Это связано с каталогом статических файлов, и вы можете обойти его с помощью следующей команды:

Он скажет Heroku не запускать команду collectstatic во время развертывания приложения. Вы можете запустить его позже, используя bower :

Это может произойти по многим причинам, включая, помимо прочего:

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

Перенести базу данных

Последний шаг – отразить models , вашу базу данных в Heroku, выполнив миграции:

Вот и все, ваше приложение запущено на heroku! Вы можете получить к нему доступ по адресу [appname].herokuapp.com . URL-адрес в нашем случае будет http://herokuappname.herokuapp.com/ .

Добавление собственного доменного имени

Каждое приложение на Heroku размещено на хосте .herokuapp.com , но вы можете изменить его на свое доменное имя, если оно у вас есть. Процесс прост:

1. Войдите в панель управления Heroku.

2. Выберите ваше текущее приложение из списка:

3. Выберите Settings на панели навигации и прокрутите вниз, чтобы найти раздел Domain:

4. Нажмите на Add domain, где вы сможете добавить свое доменное имя.

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

Вывод

В этой статье мы развернули приложение Django на Heroku с пользовательским доменным именем, используя Git.


Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *