django nginx +uwsgi 部署分离

2019-09-28  本文已影响0人  spraysss

概念

一个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 项目

做如下假设

/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
上一篇 下一篇

猜你喜欢

热点阅读