如何在 uWSGI 中使用 Django — Django 文档
如何用 uWSGI 托管 Django
uWSGI 是一个快速、自我修复和开发人员/系统管理员友好的应用程序容器服务器,用纯 C 编码。
前置条件:uWSGI
uWSGI wiki 描述了几个 安装过程 。 使用 Python 包管理器 pip,您可以使用单个命令安装任何 uWSGI 版本。 例如:
# Install current stable version.
$ pip install uwsgi
# Or install LTS (long term support).
$ pip install https://projects.unbit.it/downloads/uwsgi-lts.tar.gz
uWSGI 模块
uWSGI 在客户端-服务器模型上运行。 您的 Web 服务器(例如,nginx、Apache)与 django-uwsgi “worker”进程通信以提供动态内容。
配置并启动用于 Django 的 uWSGI 服务器
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 virtualenv
--daemonize=/var/log/uwsgi/yourproject.log # background the process
这假设您有一个名为 mysite
的顶级项目包,其中包含一个包含 WSGI application
对象的模块 mysite/wsgi.py
。 如果您使用最新版本的 Django 运行 django-admin startproject mysite
(使用您自己的项目名称代替 mysite
),您将拥有此布局。 如果此文件不存在,则需要创建它。 请参阅 How to deploy with WSGI 文档,了解您应该放入该文件的默认内容以及您可以添加的其他内容。
Django 指定的参数如下:
chdir
:需要在Python的导入路径上的目录的路径——即包含mysite
包的目录。module
:要使用的 WSGI 模块——可能是 :djadmin:`startproject` 创建的mysite.wsgi
模块。env
:应该至少包含DJANGO_SETTINGS_MODULE
。home
:项目 virtualenv 的可选路径。
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
如果在上传文件名包含非 ASCII 字符的文件时得到 UnicodeEncodeError
,请确保将 uWSGI 配置为接受非 ASCII 文件名,方法是将其添加到 uwsgi.ini
:
env = LANG=en_US.UTF-8
有关详细信息,请参阅 Unicode 参考指南的 Files 部分。
有关启动、停止和重新加载 uWSGI 工作线程的信息,请参阅 管理 uWSGI 进程 上的 uWSGI 文档。