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