uWSGI 是一个快速、自我修复、开发人员/系统管理员友好的容器服务器,代码完全用C 编写。
另见
uWSGI 文档提供一个教程,覆盖Django、nginx 和uWSGI(多种部署方式中的一种)。下面的文档集中在如何将Django 与uWSGI 集成。
uWSGI 的Wiki 讲述了几个安装过程。使用Python 包管理器pip,你只用一个命令即可安装任何版本的uWSGI。例如:
# Install current stable version.
$ pip install uwsgi
# Or install LTS (long term support).
$ pip install http://projects.unbit.it/downloads/uwsgi-lts.tar.gz
警告
某些发行版本包括Debian 和Ubuntu,原生带有一个过时的uWSGI 版本,它们不遵循WSGI 的规范。1.2.6 之前的版本在处理一个请求后,不调用响应对象的close。 在这些情况下,不会发送request_finished 信号。它将导致数据库和memcache 服务器的空闲连接。
uWSGI 以客户端-服务器模型运作。你的Web 服务器(例如nginx、Apache)与一个django-uwsgi 进程交互来服务动态的内容。参见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)。如果这个文件不存在,你需要创建它。这个文件的默认内容以及可以添加的其它内容,参见如何使用WSGI 部署 的文档。
与Django 相关的选项是:
示例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
参见uWSGI 关于管理uWSGI 进程 的文档,以获得启动、停止和重新加载uWSGI 工作者进程的信息。
2015年5月13日