这个部署,我真的是爬了好久的坑,才爬出来,所以给大家分享一下,避免入坑。
首先我们先了解一下相关知识:
wsgi:
一种实现python解析的通用接口标准/协议,是一种通用的接口标准或者接口协议,实现了python web程序与服务器之间交互的通用性。
利用它,web.py或bottle或者django等等的python web开发框架,就可以轻松地部署在不同的web server上了;
uwsgi:
同WSGI一样是一种通信协议
uwsgi协议是一个uWSGI服务器自有的协议,它用于定义传输信息的类型,它与WSGI相比是两样东西。
uWSGI :一种python web server或称为Server/Gateway
uWSGI类似tornadoweb或者flup,是一种python web server,uWSGI是实现了uwsgi和WSGI两种协议的Web服务器,负责响应python 的web请求。
因为apache、nginx等,它们自己都没有解析动态语言如php的功能,而是分派给其他模块来做,比如apache就可以说内置了php模块,让人感觉好像apache就支持php一样。
uWSGI实现了wsgi协议、uwsgi协议、http等协议。 Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换。
其次了解一下项目流程:
1.首先客户端请求服务资源,
2.nginx作为直接对外的服务接口,接收到客户端发送过来的http请求,会解包、分析,
如果是静态文件请求就根据nginx配置的静态文件目录,返回请求的资源,
如果是动态的请求,nginx就通过配置文件,将请求传递给uWSGI;uWSGI 将接收到的包进行处理,并转发给wsgi,
3.wsgi根据请求调用django工程的某个文件或函数,处理完后django将返回值交给wsgi,
4.wsgi将返回值进行打包,转发给uWSGI,
5.uWSGI接收后转发给nginx,nginx最终将返回值返回给客户端(如浏览器)。
*注:不同的组件之间传递信息涉及到数据格式和协议的转换
接下来请看详细的安装与配置步骤:
1.检测yum是否完好:yum list
2.安装python需要的依赖包:yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make (手敲,任何地方都别复制)
3.下载python包:
linux系统默认安装了python
我们需要的版本是python 3.6.2,在centos上进行python2和3并存
wget https://www.python.org/ftp/python /3.6.2/Python-3.6.2.tar.xz
在根目录的opt下可以查看下载好的python3.6.2的压缩包