美文网首页
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