См.также
В документации uWSGI есть tutorial, в котором описана настройка Django, nginx и uWSGI (один из возможных способов установки). В этом разделе мы сфокусируемся на том, как организовать взаимодействие Django и 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 --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 virtualenv
--daemonize=/var/log/uwsgi/yourproject.log # background the process
mysite
, и внутри него модуль mysite/wsgi.py
, который содержит WSGI-объект application
. Такая структура создаётся при запуске django-admin startproject mysite
(где mysite
- имя вашего приложения) последней версии Django. Если же такого файла нет, то надо его создать. Описание содержимого описано в Развёртывание с WSGI.
chdir
: путь к каталогу, который нужен для импорта Python – например, содержащему пакет mysite
.module
: модуль WSGI – mysite.wsgi
, если вы создавали проект командой startproject
.env
: должен содержать как минимум DJANGO_SETTINGS_MODULE
.home
: опциональный путь к виртуальному окружению (virtualenv).[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
uwsgi --ini uwsgi.ini
Исправляем UnicodeEncodeError
при загрузке файлов
Если вы получили UnicodeEncodeError
при загрузке файлов, названия которых содержат не ASCII символы, убедитесь, что uWSGI настроен для загрузки таких файлов. Для этого укажите в uwsgi.ini
:
env = LANG=en_US.UTF-8
Подробности смотрите в разделе Файлы.
июн. 04, 2020