服务器配置:ECS+Nginx+uWSGI+Flask——各部分详细介绍
希望在阿里云ECS上搭建一个flask框架的web应用,经典的形式便是flask+uWSGI+nginx模式
服务器:CentOS 7.3
python版本:3.8.0
先贴一张全局图,这张图很清楚的展示了各个部分之间的联系和它们的作用,对照着可以更好的理解下文的概念,看完文章一定要回来再捋一捋
图片来源:L&P Essay
在了解uWSGI之前,还需要知道与其形式非常相似的另外两个东西WSGI和uwsgi(区分大小写)
首先介绍它们三个之间的老大哥——WSGI
WSGI
WSGI,全称是Web Server Gateway Interface,或者Python Web Server Gateway Interface,WSGI不是服务器、Python模块、框架或者任何软件,它只是一种规范,就像HTTP协议一样,它是为Python语言定义的Web服务器和Web应用程序(框架)之间的简单而通用的协议。它可以分为Web服务器端和Web应用程序两个部分。
上文中提到的Web服务器(Web Server)和Web应用程序(Web Application),常见的Web应用程序有Flask、Django等,Web服务器有加下来将要提到的uWSGI
uWSGI
uWSGI是一种Web服务器(作用就像Apache一样),它实现了WSGI协议,所以可以接收客户端的请求,转发到响应的程序,而我们之后要进行配置的就是这个二兄弟uWSGI
uwsgi
三兄弟中最小的那个(没有大写字母)uwsgi,和老大一样,也是一种协议,它是uWSGI服务器自然支持的协议
官网:“the native protocol used by the uWSGI server”,它使用四个字节来表示任何传输的数据类型
三者中有两个都是协议(WSGI、uwsgi),只需要理解它们的区别和联系便可,真正需要我们进行配置的就只有uWSGI这个Web服务器了。
实际上,有uWSGI Web服务器接收并转发客户端请求,再加上Flask应用程序框架对请求进行处理,就已经可以实现网站的功能了,那么为什么还要需要用到提到的Nginx呢?
Why Nginx?
当网站访问量较小时,当然可以直接利用uWSGI+Flask进行处理,但一旦访问量过大,uWSGI服务器处理速度降低,客户端请求就要进行长时间的等待,为解决这一问题,我们可以多用几台Web服务器,都对请求进行处理,但这又导致一个问题,一个请求究竟应该用哪一台服务器进行响应呢?我们需要一个网管,而Nginx就是这个网管
图片来源:CHENYAoo
Nginx
Nginx可以作为高效的Web服务器,也可以用作反向代理服务器,其常用有三大功能:HTTP代理、负载均衡、Web缓存,详细功能与实现可以参考菜鸟教程,在配置的过程中可以体会到它是如何实现负载均衡的,这里主要让其担任反向代理服务器,对于正反向代理,通过这张图很方便理解
图片来源:菜鸟教程
所需各个模块的主要作用和功能就介绍到这里,下篇记录我们的管家与二兄弟——Nginx与uWSGI的详细安装与配置
提醒:要回去看第一张图啊!
除文中所列参考文章外,主要参考文章还有:
中杯可乐不加冰:https://www.cnblogs.com/fengchong/p/10230266.html
谢谢以上各位!