Как развертывать приложение 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 другого фреймворка.