Как использовать Django с uWSGI ¶
uWSGI - это быстрый, самовосстанавливающийся и удобный для разработчиков и системных администраторов сервер контейнеров приложений, написанный на чистом C.
Смотрите также
Документы uWSGI предлагают учебное пособие, охватывающее Django, nginx и uWSGI (одна из множества возможных настроек развертывания). Документация ниже посвящена тому, как интегрировать Django с uWSGI.
Предварительное условие: uWSGI ¶
Вики uWSGI описывает несколько процедур установки . Используя pip, менеджер пакетов Python, вы можете установить любую версию uWSGI с помощью одной команды. Например:
# Install current stable version.
$ python -m pip install uwsgi
# Or install LTS (long term support).
$ python -m pip install https://projects.unbit.it/downloads/uwsgi-lts.tar.gz
Модель uWSGI ¶
uWSGI работает по модели клиент-сервер. Ваш веб-сервер (например, nginx, Apache) взаимодействует с django-uwsgi
«рабочим» процессом для обслуживания динамического контента.
Настройка и запуск сервера uWSGI для Django ¶
uWSGI поддерживает несколько способов настройки процесса. См. Документацию по настройке uWSGI .
Вот пример команды для запуска сервера uWSGI:
uwsgi --chdir=/path/to/your/project \
--module=mysite.wsgi:application \
--env DJANGO_SETTINGS_MODULE=mysite.settings \
--master --pidfile=/tmp/project-master.pid \
--socket=127.0.0.1:49152 \ # can also be a file
--processes=5 \ # number of worker processes
--uid=1000 --gid=2000 \ # if root, uwsgi can drop privileges
--harakiri=20 \ # respawn processes taking more than 20 seconds
--max-requests=5000 \ # respawn processes after serving 5000 requests
--vacuum \ # clear environment on exit
--home=/path/to/virtual/env \ # optional path to a virtual environment
--daemonize=/var/log/uwsgi/yourproject.log # background the process
Предполагается, что у вас есть названный пакет проекта верхнего уровня mysite
и внутри него модуль mysite/wsgi.py
, содержащий application
объект WSGI . Это макет, который у вас будет, если вы запустили (используя свое собственное имя проекта вместо ) с последней версией Django. Если этого файла не существует, вам необходимо его создать. См. Документацию по развертыванию с помощью WSGI, чтобы узнать, какое содержимое по умолчанию следует поместить в этот файл и что еще можно добавить к нему.django-admin
startproject mysite
mysite
Вот параметры, специфичные для Django:
chdir
: Путь к каталогу, который должен быть на пути импорта Python, то есть каталог, содержащийmysite
пакет.module
: Модуль WSGI для использования - вероятно,mysite.wsgi
модуль, которыйstartproject
создает.env
: Вероятно, должен содержать как минимумDJANGO_SETTINGS_MODULE
.home
: Необязательный путь к виртуальной среде вашего проекта.
Пример файла конфигурации ini:
[uwsgi]
chdir=/path/to/your/project
module=mysite.wsgi:application
master=True
pidfile=/tmp/project-master.pid
vacuum=True
max-requests=5000
daemonize=/var/log/uwsgi/yourproject.log
Пример использования файла конфигурации ini:
uwsgi --ini uwsgi.ini
Исправление UnicodeEncodeError
загрузки файлов
Если UnicodeEncodeError
при загрузке файлов с именами, содержащими символы, отличные от ASCII, вы получаете значок, убедитесь, что uWSGI настроен на прием имен файлов, отличных от ASCII, добавив это в свой uwsgi.ini
:
env = LANG=en_US.UTF-8
См. Подробности в разделе « Файлы » справочного руководства по Unicode.
Информацию о запуске, остановке и перезагрузке рабочих процессов uWSGI см. В документации uWSGI по управлению процессом uWSGI.