上一节中我们已经能够成功在nginx返回本地静态资源,没有太多django有关的配置。但是动态资源必须要借助django中的MTV模型来完成了,这一节我们就来看看如何真正将django部署到nginx上。
我是T型人小付,一位坚持终身学习的互联网从业者。喜欢我的博客欢迎在csdn上关注我,如果有问题欢迎在底下的评论区交流,谢谢。
什么是wsgi
wsgi,全称Web Server Gateway Interface,是 PEP 3333中定义的一个python标准。这个标准描述了一个web服务器(例如nginx)如何和web应用(例如django)进行通讯的,同时也描述了多个web应用如何通过级联来对一个请求进行处理的。
如上图所示,这里的uwsgi是对wsgi协议的一种实现,是一个单独组件,可和nginx部署在不同服务器,不过其必须和django安装在一台服务器上。uwsgi中可以配置django的信息,同时又可以暴露ip和端口给nginx来访问,从而完成一个中间件的目的。在接下来的操作中,我们分阶段来完成配置,首先确保uwsgi和django的连接正常,再确保nginx到uwsgi的连接正常。
django框架已经天然支持wsgi协议,如下图所示,新创建的项目目录中会自带一个wsgi.py
文件。这个文件在稍后的操作中会作为django暴露给uwsgi的一个接口
而nginx也天然对uwsgi支持,如果是按照上一节的方式安装的nginx,会发现在配置目录/etc/nginx/
已经有了和uwsgi有关的配置文件。这个配置文件会在稍后的操作中用于转发请求到uwsgi
(therm) (base) [root@ai-therm nginx]# ll *wsgi*
-rw-r--r-- 1 root root 664 Oct 3 2019 uwsgi_params
-rw-r--r-- 1 root root 664 Oct 3 2019 uwsgi_params.default
uwsgi的安装和基本配置
首先要进行uwsgi的安装,直接pip安装即可
pip install uwsgi
我这里安装的是2.0.18版本
(therm) (base) [root@ai-therm therm]# pip freeze
Django==2.2.10
pytz==2020.1
sqlparse==0.3.1
uWSGI==2.0.18
如果出现类似you need a C compiler to