Развертывание 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 содержащий объект WSGI application . Это макет, полученный при запуске команды (заменив ее собственным именем проекта) любой последней версией 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.

Copyright ©2020 All rights reserved