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

Развертывание вашего приложения Django 3

Эта статья была первоначально опубликована по адресу: https://render.com/docs/deploy-django. Рекомендуется … Теги с Python, Django, DevOps, учебником.

Эта статья была изначально опубликована в: https://render.com/docs/deploy-django. . Рекомендуется прочитать связанную версию с улучшенным выделением синтаксиса.

Это руководство продемонстрирует, как вы можете создать местный Джанго Окружающая среда разработки, создать простой вид и развернуть его на Оказывать Отказ Приложение будет настроено на использование рендеринга PostgreSQL база данных и будет использовать Поэзия Чтобы управлять виртуальными средами и проектами Python и зависимостями проекта, хотя и не являются требованиями для развертывания проекта Django на Render.

Готовый код для этого примера доступен на Гадость и приложение приложения можно просмотреть здесь Отказ

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

Создать проект Django

На этом этапе мы создадим местную среду разработки и создаем базовую структуру проекта.

Мы предположим, что наш проект называется MySite и последовательно используют его по всему коду. Не стесняйтесь выбирать другое имя, хотя это должно быть Действительное имя пакета Python Отказ

Установите поэзию

Если у вас нет установленной поэзии, следуйте поэзии Инструкции по установке Для вашей операционной системы. В большинстве случаев вам просто нужно будет выполнить следующее:

MacOS/Linux:

curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python

Окна в PowerShell:

(Invoke-WebRequest -Uri https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py -UseBasicParsing).Content | python

Вам может потребоваться перезапустить свою оболочку, чтобы загрузить Поэзия команда в ваш Путь Отказ Чтобы убедиться, что установка была успешной, попробуйте запустить Поэзия --version Отказ

Создать структуру проекта

  • Использовать Поэзия Чтобы инициализировать каталог проекта:
   $ poetry new mysite
   Created package mysite in mysite
   $ cd mysite
   $ ls
   README.rst     mysite         pyproject.toml tests

   # We don't need the code for our package that was generated by Poetry, so:
   $ rm -rf mysite tests
  • В pyproject.toml Убедитесь, что требование версии Python включает в себя версию 3.7 , который доступен на визуализации.
   [tool.poetry.dependencies]
   python = "^3.7"
  • Добавить Django как зависимость.
    $ poetry add django
  • Создайте проект Django для вашего приложения.
   $ poetry run django-admin startproject mysite .

Вы должны в конечном итоге со следующей структурой каталога:

   $ tree
   .
   ├── README.rst
   ├── manage.py
   ├── mysite
   │   ├── __init__.py
   │   ├── asgi.py
   │   ├── settings.py
   │   ├── urls.py
   │   └── wsgi.py
   ├── poetry.lock
   └── pyproject.toml

   1 directory, 9 files

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

$ poetry run ./manage.py runserver

Создайте посадочную страницу Hello World

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

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

Создайте приложение Render

Теперь, когда ваша примерная среда (проект Django ) готова, вы готовы начать работать над Приложение сам.

Джанго Проекты коллекции Приложения проводятся вместе, чтобы сформировать сайт. Django предоставляет ряд встроенных приложений, с Админ сайт Быть хорошо известным примером.

  • Чтобы создать свое приложение, запустите следующую команду из корневого каталога вашего проекта:
   python manage.py startapp render

Это создаст каталог с именем оказывать со следующим содержанием:

   $ tree render
   render
   ├── __init__.py
   ├── admin.py
   ├── apps.py
   ├── migrations
   │   ├── __init__.py
   ├── models.py
   ├── tests.py
   └── views.py

   1 directory, 7 files
  • Вам также нужно сообщить Django о своем новом приложении. Открыть mysite/settings.py Найти определение Stall_apps Установка и добавьте ссылку на Renderconfig Класс в начале списка:
   # https://docs.djangoproject.com/en/3.0/ref/settings/#installed-apps
   INSTALLED_APPS = [
       'render.apps.RenderConfig',
       'django.contrib.admin',
       'django.contrib.auth',
       ...
   ]

Напишите свой первый взгляд

  • В Render/просмотреть .py Добавьте следующий код Python:
   from django.shortcuts import render

   def index(request):
       return render(request, 'render/index.html', {})

Это один из самых простых просмотров, возможных в Джангу. Это делает Render/index.html Шаблон, который мы создадим на более позднем этапе.

  • Создать Render/Urls.py Файл и добавить следующий код:
   from django.urls import path

   from . import views

   urlpatterns = [
       path('', views.index, name='index'),
   ]

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

  • Настройте root Проект URLPatterns указать на URL модуль оказывать применение. Открыть MySite/URLS.PY Добавьте импорт для django.urls.include. и включить URL-адреса вашего приложения:
   from django.contrib import admin
   from django.urls import path, include

   urlpatterns = [
       path('admin/', admin.site.urls),
       path('', include('render.urls')),
   ]
  • Создать Render/index.html Шаблон, который вы ссылались ранее. Создайте новый файл Визуализация/шаблоны/рендеринг/index.html и добавьте следующие HTML:
   

   
   
       
       
       

       Hello Django on Render!

       
   
   
   

Hello World!

  • Добавьте статический файл в ваше приложение. Скачайте это изображение и сохраните его как Render/Static/Render/Render.png :
  • В вашем шаблоне загрузите статический Модуль и ссылка на загруженное изображение:
   {% load static %}

   

   
   ...
   
   
Render
...
  • Теперь вы можете подтвердить ваше приложение работает со следующей командой:
   $ python manage.py runserver

Обновите ваше приложение для рендера

Для того, чтобы ваш проект Django будет готов к производству, вам нужно будет внести несколько корректировок в настройках приложения. Вы обновите свой проект, чтобы использовать Render PostgreSQL База данных Вместо базы данных SQLite и настроить Whitenoise служить вашим статическим файлам.

Пойти готово к производству

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

  • Открыть mysite/settings.py и найти декларацию о Secret_key параметр. Мы не хотели хранить производственные секреты в исходном коде, поэтому мы принесем его от переменной окружающей среды, которую мы создадим позже:
   # SECURITY WARNING: keep the secret key used in production secret!
   SECRET_KEY = os.environ.get('SECRET_KEY', default='your secret key')
  • Найти объявление о Отладка параметр. Этот параметр должен Никогда быть установленным на Истинный в производственной среде. Вы можете обнаружить, если вы работаете на рендере, проверяя, если Оказывать Переменная среды присутствует в Прикладная среда Отказ
   # SECURITY WARNING: don't run with debug turned on in production!
   DEBUG = 'RENDER' not in os.environ
  • Когда Отладка Django не будет работать без подходящего значения для Разрешенные_ходки Отказ Вы можете получить имя вашего веб-сервиса из Render_External_hostName Переменная среды, которая автоматически устанавливается на рендеринг.
   # https://docs.djangoproject.com/en/3.0/ref/settings/#allowed-hosts
   ALLOWED_HOSTS = []

   RENDER_EXTERNAL_HOSTNAME = os.environ.get('RENDER_EXTERNAL_HOSTNAME')
   if RENDER_EXTERNAL_HOSTNAME:
       ALLOWED_HOSTS.append(RENDER_EXTERNAL_HOSTNAME)

Если вы добавите пользовательский домен в свое приложение Render, не забудьте добавить свой новый домен в список.

Настроить Django для PostgreSQL

Для удобства мы добавим DJ-база данных-URL Пакет, который позволяет нам указывать базы данных в Django, используя соединительные строки. Render базы данных автоматически предоставляют соединительные строки на их панели управления, которые мы предоставим нашему веб-сервису через База данных_URL Переменная среды. Нам также нужно будет добавить psycopg2 к проекту.

  • Запустите следующую команду, чтобы добавить необходимые зависимости в ваш проект:
   $ poetry add dj-database-url psycopg2-binary
  • В mysite/settings.py Найти объявление о Базы данных Настройка и изменение его, чтобы выглядеть следующим образом:
   # Don't forget to import dj-database-url at the beginning of the file
   import dj_database_url
   # Database
   # https://docs.djangoproject.com/en/3.0/ref/settings/#databases

   DATABASES = {
       'default': dj_database_url.config(
           # Feel free to alter this value to suit your needs.
           default='postgresql://postgres:postgres@localhost:5432/mysite',
           conn_max_age=600
       )
   }

Статические файлы

Сайты, как правило, нужно обслуживать дополнительные файлы, такие как изображения, JavaScript и CSS. В Django эти файлы называются Статические файлы И это обеспечивает выделенный модуль для сбора их в одно место для обслуживания в производстве.

Встроенный модуль поддерживает только перемещение файлов из одного места в другое, полагаясь на веб-серверы, такие как Apache или Nginx служить им для конечных пользователей. На визуализации веб-сервер, облицовочный Интернет предоставляется по умолчанию, и нам нужен способ размещать статические файлы, используя его. На этом шаге мы настроим Whitenoise Это очень популярное решение для этой проблемы. Следующие инструкции представляют собой краткую краткую процедуру, описанную в Whitenoise Documentation Отказ

  • Добавьте белоуз в качестве зависимости (добавление Brotli Поддержка не является обязательной, но рекомендуется):
   poetry add 'whitenoise[brotli]'
  • Открыть mysite/settings.py Найдите Промежуточное программное обеспечение Список, и добавьте промежуточное программное обеспечение для Whitenoise сразу после SecurityMiddleware :
   MIDDLEWARE = [
       'django.middleware.security.SecurityMiddleware',
       'whitenoise.middleware.WhiteNoiseMiddleware',
       ...
   ]
  • Найдите раздел, где настраиваются статические файлы. Примените следующие модификации:
   # Static files (CSS, JavaScript, Images)
   # https://docs.djangoproject.com/en/3.0/howto/static-files/

   # This setting tells Django at which URL static files are going to be served to the user.
   # Here, they well be accessible at your-domain.onrender.com/static/...
   STATIC_URL = '/static/'

   # Following settings only make sense on production and may break development environments.
   if not DEBUG:
       # Tell Django to copy statics to the `staticfiles` directory
       # in your application directory on Render.
       STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')

       # Turn on WhiteNoise storage backend that takes care of compressing static files
       # and creating unique names for each version so they can safely be cached forever.
       STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'

Создать сценарий сборки

  • Нам нужно запустить ряд команд для создания нашего приложения. Мы можем достичь этого с помощью сценария сборки. Создать сценарий под названием build.sh В корне вашего репозитория:
   #!/usr/bin/env bash
   # exit on error
   set -o errexit

   poetry install

   python manage.py collectstatic --no-input
   python manage.py migrate

Убедитесь, что скрипт исполняется, прежде чем проверять его в Git:

   $ chmod a+x build.sh
We will configure Render to call this script on every push to the Git repository.
  • Мы собираемся запустить наше приложение с Боевик Отказ Добавьте зависимость в ваш проект:
   poetry add gunicorn

Сделайте все изменения и подтолкните их к вашему репозитории GitHUB. Теперь ваше приложение готово быть развернутым на рендере!

Развертывание для рендера

Есть два способа развертывания вашего приложения на Render, либо по Объявляя свои услуги в своем репозитории используя Render.yaml Файл или вручную настроив свои сервисы с помощью приборной панели. В этом руководстве мы будем ходить по обоим вариантам.

Используйте Render.yaml для развертываний

  • Создать файл с именем Render.yaml в корне вашего каталога. Файл определит ваше django Веб-сервис и База данных используется вашим приложением. Не забудьте совершить и подтолкнуть его к удаленному репозиторию.
   databases:
     - name: mysite
       databaseName: mysite
       user: mysite

   services:
     - type: web
       name: mysite
       env: python
       buildCommand: "./build.sh"
       startCommand: "gunicorn mysite.wsgi:application"
       envVars:
         - key: DATABASE_URL
           fromDatabase:
             name: mysite
             property: connectionString
         - key: SECRET_KEY
           generateValue: true
         - key: WEB_CONCURRENCY
           value: 4
  • На приборной панели рендеринга перейдите к Ямл Страница и нажмите Новый от YAML кнопка. Выберите репозиторий вашего приложения (дайте разрешение на получение доступа к этому, если вы еще нешли) и нажмите Утвердить на следующем экране.

Вот и все! Ваше приложение будет жить на вашем .onrender.com URL, как только сборка заканчивается.

Если вы пропустили Создайте страницу Hello World Page Раздел, вы увидите Не найден Ошибка при посещении вашего сайта. Вы можете подтвердить, что ваше развертывание прошло успешно, посетив приборную панель администратора в /admin.

Ручное развертывание

  • Создать новый PostgreSQL База данных на рендеринг. Обратите внимание на вашу базу данных Внутренняя соединительная строка ; Вам понадобится позже.

  • Создать новый Веб-сервис , указывая на его репозиторий вашего приложений (дайте разрешение доступа к этому, если вы еще не имеете).

  • Выберите Python Для окружающей среды и установить следующие свойства:

./build.sh. Создать команду
Gunicorn Mysite.wsgi: применение Команда запуска
  • Добавьте следующие переменные среды под Продвинутый :
Database_url. Внутренняя строка подключения для базы данных, которую вы создали выше
СЕКРЕТНЫЙ КЛЮЧ Нажмите Generate, чтобы получить безопасное случайное значение
Web_concurnence. 4

Вот и все! Сохраните свой веб-сервис для развертывания приложения Django на Render. Это будет жить на вашем .onrender.com URL, как только сборка заканчивается.

Создать учетную запись администратора Django

Как только ваше приложение будет жить, создайте новый Администрация Django Admin Запустив следующую команду в оболочке Render:

$ ./manage.py createsuperuser

Оригинал: “https://dev.to/render/deploying-your-django-3-app-239a”