#PythonWeb#最近有一些人问我,PythonWeb部署的流程是怎么一回事,说到底,太需要一篇这样一篇文章来详细说清楚,到底什么是WSGI,什么是uWSGI,既然有了uWSGI,为什么需要Apache和Nginx?我自己以前也在这方面走了太多弯路。事实上,基本所有学习PythonWeb框架的书籍都没有讲到这一点。什么是WSGI?开始介绍什么是WSGI之前,一定要说说CGI,因为目前PythonWeb支持这两种方式作为开发,一种是WSGI,一种是CGI。当然,CGI任何语言都可以用来写Web应用,无论是Python,C还是perl,甚至是Shell。WSGI(PythonWebServerGatewayInterface),PythonWeb服务器网关接口,它起初是用来代替CGI这种不够安全的网关协议,用于Web应用和web服务器之间交互的一个协议。WSGI过程如图:值得注意的是,WSGI起源于Python,此后很多编程语言开始效仿Python的WSGI接口,例如:Ruby的Rack、Lua的LuaWSAPI,Perl的PSGI等等,事实上都是受WSGI影响。如果你对WSGI有深入的兴趣,一定要去看看werkzeug这个WSGI工具库。什么又是CGI?CGI(CommonGatewayInterface),通用网关接口。却是如此,任何编程语言都可以使用CGI来写Web应用,因为CGI的过程相当相当简单,不够安全是因为它可以直接执行服务器上的任何可执行文件,这是相当致命的,所以,千万不要用CGI来开发。CGI过程如图:没错,如果你接触过PHP的话,可以想象得到,PHP上面的echo(Hello)和Python上面的print(Hello)实际上是一回事,WebServer只是管道了应用程序的输出作为输入,然后做一系列处理后发送给客户端。值得注意的是,几乎所有的WebServer都集成了CGI支持,所以流畅方面和WSGI最大的区别在于,WSGi多了个中间件。不过这种方式写Web不够安全不说,并且很不方便。Python如何使用CGI方式开发Web,我想我后面会有一篇文章来具体讲讲。WSGI和CGI流程详解先说说CGI流程是如何的:用户request请求-Apache/Nginx(集成CGI支持)-PythonWeb应用WSGI流程则是:用户request-Apache/Nginx-uWSGI/Gunicorn(WSGI支持)-PythonWeb应用CGI流程很简单,一看就懂,那么WSGI中的uWSGI和Gunicorn又是什么东西?uWSGI和Gunicorn(独角兽)是目前流行两款WSGI服务器,它们承载着WSGI协议。那么问题来了,有了uWSGI为什么还需要Apache和Nginx,这个就很好解释了。我总结了以下几点:Apache和Nginx是目前最火的两款WebServer无可否认。1、Apache和Nginx对文件处理速度更佳2、Apache和Nginx对访问限制、速度优化等等效果更佳3、解决虚拟主机、SSL证书问题,Apache和Nginx更适合目前全世界都在用这个你认为多此一举(我以前也是这么认为的)的事,事实上,确实uWSGI和Gunicorn在Web方面确实不如强大的Apache和Nginx。某些CSDN作者请勿复制粘贴,码字不易,请备注出处链接,谢谢理解。斌哥说Python,只专注于Python技术!
转载请注明:http://www.aierlanlan.com/rzfs/5931.html