Как развернуть с помощью WSGI
Основной платформой развертывания Django является WSGI, стандарт Python для веб-серверов и приложений.
Команда управления startproject Django настраивает минимальную конфигурацию WSGI по умолчанию, которую вы можете настроить по мере необходимости для вашего проекта, и указать на её использование любому совместимому с WSGI серверу приложений.
Django включает в себя документацию по началу работы со следующими WSGI-серверами:
- Как использовать Django с Gunicorn
- Как использовать Django с uWSGI
- Как использовать Django с Apache и
mod_wsgi - Как выполнить аутентификацию с использованием базы данных пользователей Django из Apache
Объект 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 middleware, вы можете обернуть объект приложения. Например, вы можете добавить эти строки в конец 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/5.2/howto/deployment/wsgi/index/