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

Как развернуть приложение Python Django с использованием платформенной платформы PlanetsCale и Koyeb

Введение Django является популярной и мощной основой для разработчиков приложений Python …. Теги с Python, учебником, Django, WebDev.

Введение

Django – это популярная и мощная основа для разработчиков приложений Python. Django поставляется со многими функциями, такими как аутентификация, администрирование контента, объектно-реляционного Mapper (ORM) и многое другое. Django поддерживает различные реляционные базы данных, включая MySQL, что позволяет запустить приложение Django, используя платусную платформу Planetscale Database без необходимости выполнения никаких изменений в вашем приложении.

В этом руководстве мы создадим приложение Django, настроить наш проект, чтобы использовать базу данных PlanetScale и развернуть приложение на платформе Serverless Coyeb, используя развертывание GIT.

Использование развертывания Git, ориентированное на Git Koyeb, ваше приложение KoyeB связано с вашим репозиторием GitHUB, и каждый раз изменяется в вашем репозитории, ваше приложение автоматически переходит на Koyeb.

В конце этого руководства у вас будет рабочее приложение Django, работающее на Koyeb.

Требования

Чтобы успешно развернуть приложение Django на Koyeb, вам нужно:

  • Python установлен на вашей машине
  • А Койеб аккаунт Развернуть и запустить приложение Django
  • А Учетная запись PlanetsCale Для запуска базы данных наше приложение будет использовать
  • А Аккаунт GitHub Чтобы сохранить код вашего приложения и развернуть приложение на Koyeb через GitHub

Шаги

Чтобы завершить данное руководство, чтобы приложение Django работает на KoyeB, вам необходимо выполнить следующие действия:

  1. Создать виртуальную среду
  2. Создать новое приложение Django
  3. Настройте Django для использования базы данных PlanetScale
  4. Разверните приложение Django на Koyeb

Создать виртуальную среду

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

Чтобы создать новую виртуальную среду, которую мы будем использовать для нашего приложения Django, в вашем терминале Run:

python3 -m venv ~/.venv/django-app

Эта команда создает новую папку Django-App в ~/.venv каталог. VirtualenV содержит копию интерпретатора Python, PIP, стандартной библиотеки и различных поддерживающих файлов.

Теперь мы можем активировать VirtualenV, который мы ранее создали бегом:

source ~/.venv/django-app/bin/activate

Как только VirtualenV активирован, исполняемые файлы VirtualenV Python и PIP добавляются в путь вашей оболочки.

Создать новое приложение Django

Давайте начнем с создания выделенной папки для нашего приложения и переехав в нее:

mkdir django-on-koyeb
cd django-on-koyeb

Перед созданием нашего приложения Django нам нужно установить:

  • Django, чтобы установить Django Framework и библиотеки
  • DJ-Database-URL-адрес, утилита Django, которая позволяет разбирать database_url.
  • Gunicorn, Pure-Python HTTP-сервер для приложений WSGI, которые могут запускать несколько одновременных процессов Python
  • MySQLClient, библиотеки для использования MySQL или в нашем случае Planetscale

MySQLClient Требуется системные библиотеки, пожалуйста, проверьте https://pypi.org/project/mysqlclient/ Для обнаруженных инструкций

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

pip install django gunicorn dj_database_url mysqlclient
pip freeze > requirements.txt

Как только предыдущий шаг завершен, вы можете создать приложение Django в нашем локальном каталоге с помощью:

django-admin startproject django_on_koyeb ./

Эта команда создает django_on_koyeb каталог в вашем текущем каталоге, содержащий следующие файлы:

├── django_on_koyeb
│   ├── __init__.py
│   ├── asgi.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
└── manage.py

Подготовьте заявку Django для производства

Далее мы редактируем settings.py Файл, как нам нужно настроить настройки связанные с безопасностью и производительностью для Наша разработка и производственная среда.

Открыть settings.py Используя ваш любимый редактор, здесь Nano:

nano django_on_koyeb/settings.py

Мы редактируем settings.py Файл Чтобы загрузить некоторые важные настройки нашего приложения с использованием переменных среды. Для доступа и чтения переменных среды нам нужно импортировать ОС модуль.

+import os
from pathlib import Path

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

Для генерирования случайного секретного ключа нам нужно будет импортировать from django.core.management.utils Импорт get_random_secret_key :

import os
+from django.core.management.utils import get_random_secret_key
from pathlib import Path

Поиск Secret_key = ... линия в settings.py Файл и заменить его, как показано ниже:

SECRET_KEY = os.environ.get('DJANGO_SECRET_KEY', get_random_secret_key())

Теперь, когда Django_secret_key Настроена переменная среды, наша приложение будет использовать его. Если значение не предоставляется, get_random_secret_key () Функция называется и вернет случайную секретную клавишу.

По умолчанию приложение Django работает в Отладка Отказ При развертывании приложения в производстве, для целей безопасности и производительности Отладка Режим должен быть отключен. Мы изменим значение по умолчанию для отключения отладки до тех пор, пока он не будет явно не включен с помощью переменной среды Django_debug = Правда Отказ

DEBUG = os.environ.get('DJANGO_DEBUG', 'False') == 'True'

Далее обновите Разрешенные_ходки Директива почитать Django_allowed_hosts из окружающей среды. Разрешенные_ходки Необходимо содержать список строк, представляющих имена хоста/домена, которые приложение Django может служить.

ALLOWED_HOSTS = os.getenv("DJANGO_ALLOWED_HOSTS", "localhost,127.0.0.1").split(",")

Последнее, перейдите к нижней части файла и добавьте следующую директиву ниже Static_url :

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

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

Настройте Django для использования базы данных PlanetScale

Чтобы использовать базу данных PlanetScale в нашем приложении Django, создайте новую базу данных от планеты Панель управления или используя CLI Бег:

pscale database create django-on-koyeb

После создания базы данных создайте новый пароль базы данных для основной ветви. На панели управления PlaneScale нажмите Соединить Кнопка и новый пароль для генерации пользователя и пароля для подключения базы данных. Вы также можете выполнить это действие, используя PlanetsCale CLI, используя:

pscale password create django-on-koyeb main production-password

Держите эти учетные данные в безопасном месте, нам понадобится их при развертывании нашего приложения на Koyeb.

На Planetscale схема основной базы данных неизменна, и все изменения должны происходить на ветке развития. Поскольку нам нужно будет выполнить миграцию, распространяющую наши модели в нашу базу данных PlanetScale, нам нужно создать новую ветку.

На панели управления PlaneScale нажмите Новая ветка Кнопка и назвать миграцию ветки. Вы также можете выполнить эту операцию с помощью PlanetsCale CLI ROW:

pscale branch create django-on-koyeb migration

Как только ветвь создана, создайте новый пароль базы данных для доступа к ветку. На панели управления PlaneScale нажмите Соединить Кнопка и новый пароль для генерации пользователя и пароля для подключения базы данных. Вы также можете выполнить это действие, используя PlanetsCale CLI, используя:

pscale password create django-on-koyeb migration migration-branch-password

Как использует Flanetscale FeTess за кулисами, нам нужно использовать пользовательский двигатель базы данных, чтобы сделать наше приложение Django работать с Fired. Чтобы получить пользовательский двигатель Firtess, клонировать репозиторий Firtess и скопируйте custom_db_backends. каталог в вашей корневой папке приложения Django:

git clone https://github.com/vitessio/vitess.git ~/vitess
cp -r ~/vitess/support/django/custom_db_backends ./

Далее, откройте приложение Django settings.py :

nano django_on_koyeb/settings.py

По умолчанию Django использует базу данных SQLite, нам нужно редактировать settings.py Чтобы использовать базу данных Vitess и получить конфигурацию через Django_database_url Переменная среды. Если Django_database_url Не установлено, приложение поднимет исключение Django_database_url Переменная среды не определена при запуске. В settings.py Заменить следующую часть:

# DATABASES = {
#     'default': {
#         'ENGINE': 'django.db.backends.sqlite3',
#         'NAME': BASE_DIR / 'db.sqlite3',
#     }
# }
if os.getenv("DJANGO_DATABASE_URL", None) is None:
    raise Exception("DJANGO_DATABASE_URL environment variable not defined")

DB_PARAMS = dj_database_url.parse(os.environ.get("DJANGO_DATABASE_URL"))
DB_PARAMS["ENGINE"] = "custom_db_backends.vitess"
DATABASES = {
    "default": DB_PARAMS,
}

Давайте не будем забывать импортировать dj_database_url Модуль мы используем:

import os
from django.core.management.utils import get_random_secret_key
+import dj_database_url
from pathlib import Path

Теперь вы можете сохранить и закрыть settings.py Отказ Давайте запустим миграцию Django, чтобы распространить модели приложений в базу данных PlanetScale. В терминале Запустите следующую команду:

DJANGO_DATABASE_URL=mysql://PS_USERNAME:PS_PASSWORD@PS_HOST:3306 python manage.py migrate

Заменить PS_USERNAME , PS_PASSWORD , PS_HOST Значения с ценностями планеты, которые вы генерируете для Миграция филиал.

Затем на панели управления PlanetScale создайте новый Развернуть запрос распространять изменения схемы, выполненные на Миграция ветвь к производственному филиалу Главная и развернуть его. Вы также можете выполнить эту операцию, используя PlanetsCale CLI, используя:

pscale deploy-request create django-on-koyeb migration
pscale deploy-request deploy django-on-koyeb 1

Приложение теперь настроено и готово быть развернутым на Koyeb.

Разверните приложение Django на Koyeb

Поскольку приложение Django будет развернуто на Koyeb, используя Git, нам нужно инициализировать новый каталог Git для нашего проекта Django. В вашем терминале запущен:

git init

Чтобы сохранить только необходимые файлы в нашем репозитории, мы добавим .gitignore Файл Чтобы исключить нежелательные файлы.

curl https://raw.githubusercontent.com/github/gitignore/master/Python.gitignore > .gitignore

Затем выполните следующую команду, чтобы добавить файлы, чтобы подать в свой репозиторий и совершить изменения

git add .
git commit -m "Django app initial commit"

Откройте новую вкладку в вашем браузере и перейдите в Github Отказ Создать новый репозиторий имени Django-on-koyeb и нажмите на Создать репозиторий кнопка. Затем вернитесь к вашему терминалу и добавьте GitHUB в качестве удаленного хранилища, запустив:

git remote add origin git@github.com:YOUR_GITHUB_USERNAME/django-on-koyeb.git

Переименуйте ветку репозитория по умолчанию для основного выполнения:

git branch -M main

Последнее, подтолкните ваши изменения в репозиторий GitHUB, запустив:

git push -u origin main

Все теперь готов развернуть приложение Django на Koyeb.

Перейти к Койеб Панель управления и нажмите на Создать приложение кнопка. Выберите GitHub в качестве метода развертывания и выберите репозиторий, который вы ранее создавали в списке и установите главный как ценность отделения.

Переопределить по умолчанию Запустить команду С помощью следующего значения, чтобы получить приложение для правильной работы: Gunicorn - worker-tmp-dir/dev/shm django_on_koyeb.wsgi

Тогда в Порты Раздел Изменить порт по умолчанию от 80 до 8000, который является портом по умолчанию, наша приложение прослушивает.

В Переменные среды раздел:

  1. Добавьте переменную среды типа Секрет с Django_database_url Как значение и в разделе Значение Нажмите Создать секрет И назвать свой секрет Django-DB-URL и MySQL://ps_username: PS_PASSWORD @ PS_HOST: 3306 в качестве значения. Позаботьтесь о замене PS_USERNAME, PS_PASSWORD и PS_HOST с информацией о пароле Planetscale, которую вы создали для вашей основной производственной ветви.
  2. Создайте переменную открытия открытого текста с именем Django_debug и значение, установленное на Правда Отказ Нам нужно, чтобы это подтвердить наше приложение запущено правильно, так как он не содержит никаких маршрутов в данный момент.
  3. Создайте переменную открытия открытого текста с именем Django_allowed_hosts и значение, установленное на Django-on-koyeb- .koyeb.app

Дайте свое приложение имя, например Django-on-koyeb и нажмите на Создать приложение кнопка.

Ваше приложение теперь строит и развернут на платформе Serverless Coyeb. В течение нескольких минут вы сможете получить доступ к вашему приложению, нажав URL-адрес вашего приложения: https://django-on-koyeb- .koyeb.app Отказ

Вывод

В этом руководстве мы пояснили, как развернуть приложение Django на платформе Serverless Coyeb с Planetscale в качестве бэкэнда базы данных для нашего приложения. При развертывании на Koyeb ваше приложение Django обеспечивается наживленным шифрованием TLS и преимуществами всех неверных функций Koyeb, включая AutoScaling, Auto-gelling и высокопроизводительную сеть.

Благодаря функции развертывания Git, предлагаемой Coyeb, каждый раз, когда вы нажимаете новые модификации на ваш репозиторий GitHUB, новое развертывание вашего приложения происходит автоматически. Это позволяет сосредоточиться на вашем приложении, а Koyeb позаботится о здании, развертывая ваше приложение и убедитесь, что ваш сервис всегда работает и работает.

Если у вас есть какие-либо вопросы или предложения для улучшения этого руководства, Не стесняйтесь добраться до нас на Слабый Отказ

Оригинал: “https://dev.to/koyeb/how-to-deploy-a-python-django-application-using-planetscale-and-koyeb-serverless-platform-2ffg”