美文网首页
django uwsgi nginx部署

django uwsgi nginx部署

作者: Butter_can_fly | 来源:发表于2019-11-18 09:36 被阅读0次

    处于开发环境

    • 当django处于开发环境时,首先我们settings.py文件中DEBUG="True",ALLOW_HOSTS=['localhost'],我们使用python manage.py runserver 运行django程序,这时我们可以在本地访问到网页。这时其实是用了django自带的runserver服务器,runserver服务器,其中runserver是单进程的,承担不了生产环境。

    处于生产环境

    • 我们接下来会使用uwsgi+Nginx对项目进行生产环境部署,那么首先的,settings.py中的DEGUB我们需要改成True,Allowhosts需要改成['*']。简述一下uwsgi和Nginx,你可以把他们都理解成服务器,其中uwsgi专门处理后端逻辑,Nginx处理静态文件。那么你就想了,那肯定是用户发完请求,Nginx先收到用户请求,并对请求进行判断,如果该请求是动态请求(我理解成是后端逻辑请求),那就将该请求转发给uwsgi;如果该请求是动态请求,就保留请求,并在自己的nginx配置的文件夹中寻找静态文件并直接返回给用户。

    - 配置uwsgi

    • 只有uwsgi服务时
      uwsgi配置.png
    • 当与nginx一块使用


      uwsgi配置2.png

      可见单独运行时使用http,与nginx并用时使用socket,chdir指向项目路径,wsgi-file指向项目wsgi路径,py-autoreload是当python代码发生改动时,重新部署服务,socket设成127.0.0.1:8080是希望外部不会访问到uwsgi,也是为了方便与nginx连接

    - 配置nginx

    nginx配置.png
    listen表示nginx服务运行端口,外部访问端口
    与server_name连在一起 外部通过[server_name]:[listen]访问
    location /{}设置当访问动态资源时,转交给uwsgi服务器,需要指定uwsgi服务位置,像本例中,我是将uwsgi与nginx服务部署在同一机器上,我的uwsgi运行在8080,所以我指定uwsgi_pass 127.0.0.1:8080
    location /{}设置当访问静态资源时,去找文件夹,这个文件夹/home/zwk/workspace/static就是保存静态文件的文件夹(你可以直接指定项目static文件夹,我是用的django自带的python manage.py collectstatic生成的专用文件夹)

    相关文章

      网友评论

          本文标题:django uwsgi nginx部署

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