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服务器 )的主要内容,如果未能解决你的问题,请参考以下文章