Django项目部署(nginx+uWSGI+django+virtualenv+supervisor发布web服务器 )

Posted xingyemdd

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django项目部署(nginx+uWSGI+django+virtualenv+supervisor发布web服务器 )相关的知识,希望对你有一定的参考价值。

一、简介

WSGI是Web服务器网关接口。它是一个规范,描述了Web服务器如何与Web应用程序通信,以及Web应用程序如何链接在一起以处理一个请求,(接收请求,处理请求,响应请求)
基于wsgi运行的框架有bottle,DJango,Flask,用于解析动态HTTP请求
支持WSGI的服务器
    wsgiref
        python自带的web服务器
    Gunicorn
        用于linux的 python wsgi Http服务器,常用于各种django,flask结合部署服务器。
    mode_wsgi
        实现了Apache与wsgi应用程序的结合
    uWSGI
        C语言开发,快速,自我修复,开发人员友好的WSGI服务器,用于Python Web应用程序的专业部署和开发。

在部署python程序web应用程序时,可以根据性能的需求,选择合适的wsgi server,不同的wsgi server区别在于并发支持上,有单线程,多进程,多线程,协程的区别,其功能还是近似,无非是请求路由,执行对应的函数,返回处理结果。


Django部署

Django的主要部署平台是 WSGI,这是用于Web服务器和应用程序的Python标准。

Django的 startproject管理命令设置一个简单的默认WSGI配置,可以根据需要为您的项目进行调整,并指示任何符合WSGI的应用程序服务器使用。

application 
使用WSGI部署的关键概念是应用程序服务器用于与代码通信的 application 可调用。它通常在服务器可访问的Python模块中作为名为 application 的对象提供。

startproject 命令创建包含这样的 application 可调用的文件 <project_name>/wsgi.py. ,它被Django的开发服务器和生产WSGI部署使用。
WSGI服务器从其配置中获取 application 可调用的路径。 Django的内置服务器,即 runserver 命令,从 WSGI_APPLICATION 设置读取它。
uwsgi 
    django默认启动 python  manager.py  runserver  它调用wsgiref单机web服务器模块,性能很差
    在线上启动django项目,选择的是 uWSGI + django  ,使用多进程高性能的web服务器运行,支持并发性更好
    
nginx
        1.因为nginx处理并发的良好性
        2.nginx对静态文件处理的良好性
        3.nginx负载均衡的一个作用

supervisor
            1、不在通过命令行的方式,启动项目
            2、进行进程管理(python、mysql、redis、nginx)
            3、通过supervisr统一化管理linux进程
            4、检测到你服务挂了,自动重启

重点标记:
 django创建时,会产生wsgi.py文件
 mysite/mysite/wsgi.py
  #wsgi.py产生的application应用
  application = get_wsgi_application()
 可能出现的坑:
  1. no  application  xxxxxx   这个问题就是说,你指定的wsgi.py文件不正确

 

以上是关于Django项目部署(nginx+uWSGI+django+virtualenv+supervisor发布web服务器 )的主要内容,如果未能解决你的问题,请参考以下文章

Django部署——uwsgi+Nginx(超详细)

使用Nginx+uWSGI部署Django项目

Nginx+uWSGI+Django部署web服务器

在centos上使用nginx+uwsgi部署django项目

nginx + uwsgi 部署 Django+Vue项目

django项目的生产环境部署,利用nginx+uwsgi