概念
一个web服务器面对的是外部世界。它能直接从文件系统提供文件 (HTML, 图像, CSS等等)。然而,它无法直接与Django应用通信;它需要借助一些工具的帮助,接收来自web客户端(例如浏览器)的请求,然后返回响应。
一个Web服务器网关接口(Web Server Gateway Interface) - WSGI - 就是干这活的。 WSGI 是一种Python标准。
uWSGI是一种WSGI实现。在这个教程中,我们将设置uWSGI,让它创建一个Unix socket,并且通过WSGI协议提供响应到web服务器。最后,我们完整的组件栈看起来将是这样的:
the web client <-> the web server <-> the socket <-> uwsgi <-> Django
django 项目
做如下假设
- 项目名称
myapp
- myapp项目部署主机
host001
,nginx 主机为host002
- 项目路径
/usr/local/myapp
- myapp uwsgi配置文件为
/etc/myappwsgi.ini
- myapp pid 文件为
/var/run/myapp.pid
/etc/myappwsgi.ini
[uwsgi]
socket=host001:8000
chdir=/usr/local/myapp
module=myapp.wsgi:application
master=True
pidfile=/var/run/myapp.pid
vacuum=True
max-requests=5000
daemonize=/tmp/myapp.log
buffer-size = 8192
static-map=/static=/usr/local/myapp/static
static-map=/media=/usr/local/myapp/media
enable-threads = true
processes = 4
nginx 配置
server {
listen 9000;
server_name host002.example.com;
location / {
include uwsgi_params;
uwsgi_pass host001:8000;
client_max_body_size 35m;
}
}
uwsgi启动与停止命令
uwsgi --ini /etc/myappwsgi.in
uwsgi --stop /var/run/myapp.pid
访问
最后你可以下面nginx 地址愉快的访问django程序了
http://host002.example.com:9000
网友评论