Как развернуть с WSGI
Основной платформой развертывания Django является WSGI, стандарт Python для веб-серверов и приложений.
Команда управления Django startproject настраивает для вас простую конфигурацию WSGI по умолчанию, которую вы можете настроить по мере необходимости для вашего проекта и направить любой сервер приложений, совместимый с WSGI, для использования.
Django включает документацию по началу работы для следующих серверов WSGI:
- Как использовать Django с Apache и
mod_wsgi - Аутентификация по базе данных пользователей Django из Apache
- Как использовать Django с Gunicorn
- Как использовать Django с uWSGI
Объект application
Ключевым понятием при развертывании с WSGI является вызываемый объект application, который сервер приложений использует для взаимодействия с вашим кодом. Он обычно предоставляется как объект с именем application в модуле Python, доступном для сервера.
Команда startproject создает файл <project_name>/wsgi.py, который содержит такой вызываемый объект application.
Он используется как сервером разработки Django, так и при развертывании WSGI в рабочей среде.
Серверы 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 по умолчанию обнаруживает файл настроек по умолчанию.
Примечание
Поскольку переменные окружения относятся ко всему процессу, это не работает, когда вы запускаете несколько сайтов Django в одном процессе. Это происходит с mod_wsgi.
Чтобы избежать этой проблемы, используйте режим демона mod_wsgi с каждым сайтом в собственном процессе демона или переопределите значение из среды, установив os.environ["DJANGO_SETTINGS_MODULE"] = "mysite.settings" в вашем wsgi.py.
Применение WSGI-миддлвеара
Чтобы применить WSGI-миддлвеар, можно просто обернуть объект приложения. Например, вы можете добавить эти строки в конец wsgi.py:
from helloworld.wsgi import HelloWorldApplication application = HelloWorldApplication(application)
Также можно заменить приложение Django WSGI на пользовательское приложение WSGI, которое впоследствии делегирует выполнение Django WSGI-приложению, если вы хотите объединить приложение Django с WSGI-приложением другого фреймворка.
© Django Software Foundation and individual contributors
Licensed under the BSD License.
https://docs.djangoproject.com/en/1.11/howto/deployment/wsgi/index/