美文网首页
django nginx +uwsgi 部署分离

django nginx +uwsgi 部署分离

作者: spraysss | 来源:发表于2019-09-28 22:13 被阅读0次

概念

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

相关文章

网友评论

      本文标题:django nginx +uwsgi 部署分离

      本文链接:https://www.haomeiwen.com/subject/cvmpiqtx.html