Как развернуть с WSGI ¶
Основная платформа развертывания Django - это WSGI , стандарт Python для веб-серверов и приложений.
startproject
Команда управления Django устанавливает для вас минимальную конфигурацию WSGI по умолчанию, которую вы можете настроить по мере необходимости для своего проекта и указать для использования любой WSGI-совместимый сервер приложений.
Django включает документацию по началу работы для следующих серверов WSGI:
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 другой платформы.