• 3.1
  • 3.2
  • 5.0
  • Версия документации: 6.1

Как развертывать приложение WSGI

Основной интерфейс развертывания Django — WSGI, стандарт для веб-серверов и приложений.

Команда управления Django startproject устанавливает для вас минимальную конфигурацию WSGI по умолчанию, которую вы можете настраивать по мере необходимости для своего проекта.

Django включает в себя документацию по началу работы для следующих серверов WSGI:

Объект application

Ключевой концепцией развертывания с помощью WSGI является вызываемый application, который сервер приложений использует для взаимодействия с вашим кодом. Обычно он это объект с именем application в модуле Python, доступном для сервера.

Команда startproject создает файл <project_name>/wsgi.py, содержащий такой application.

Он используется как сервером разработки Django, так и в продакшене.

Серверы WSGI получают путь к application из своей конфигурации. Встроенный сервер Django, а именно команда runserver считывает его из настройки WSGI_APPLICATION. По умолчанию он установлен на <project_name>.wsgi.application, что указывает на вызываемое application в <project_name>/wsgi.py.

Конфигурирование модуля настроек

Когда сервер WSGI загружает ваше приложение, Django необходимо импортировать модуль настроек — именно там лежат все конфигурации вашего приложения.

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

Если эта переменная не установлена, по умолчанию wsgi.py присваивает ей значение mysite.settings, где mysite — это имя вашего проекта. Вот как runserver по умолчанию обнаруживает файл настроек по умолчанию.

Примечание

Если эта переменная не задана, то по умолчанию wsgi.py устанавливает ее в mysite``settings, где mysite — это имя вашего проекта. Вот как runserver обнаруживает файл настроек по умолчанию.

Чтобы избежать этой проблемы, используйте режим демона mod_wsgi с каждым сайтом или переопределите значение из среды, принудительно включив os.environ["DJANGO_SETTINGS_MODULE"] = "mysite.settings" в вашем wsgi.py.

Применение WSGI middleware

Чтобы применить WSGI middleware, вы можете обернуть объект приложения. Например, вы можете добавить эти строки в конец wsgi.py:

from helloworld.wsgi import HelloWorldApplication

application = HelloWorldApplication(application)

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

Back to Top