希望在阿里云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”,它使用四个字节来表示任何传输的数据类型


三者中有两个都是协议(WSGIuwsgi),只需要理解它们的区别和联系便可,真正需要我们进行配置的就只有uWSGI这个Web服务器了。

实际上,有uWSGI Web服务器接收并转发客户端请求,再加上Flask应用程序框架对请求进行处理,就已经可以实现网站的功能了,那么为什么还要需要用到提到的Nginx呢?

Why Nginx?

当网站访问量较小时,当然可以直接利用uWSGI+Flask进行处理,但一旦访问量过大,uWSGI服务器处理速度降低,客户端请求就要进行长时间的等待,为解决这一问题,我们可以多用几台Web服务器,都对请求进行处理,但这又导致一个问题,一个请求究竟应该用哪一台服务器进行响应呢?我们需要一个网管,而Nginx就是这个网管

                                               图片来源:CHENYAoo

Nginx

Nginx可以作为高效的Web服务器,也可以用作反向代理服务器,其常用有三大功能:HTTP代理、负载均衡、Web缓存,详细功能与实现可以参考菜鸟教程,在配置的过程中可以体会到它是如何实现负载均衡的,这里主要让其担任反向代理服务器,对于正反向代理,通过这张图很方便理解

图片来源:菜鸟教程


所需各个模块的主要作用和功能就介绍到这里,下篇记录我们的管家与二兄弟——NginxuWSGI的详细安装与配置

提醒:要回去看第一张图啊!

除文中所列参考文章外,主要参考文章还有:

中杯可乐不加冰:https://www.cnblogs.com/fengchong/p/10230266.html

谢谢以上各位!

服务器配置:ECS+Nginx+uWSGI+Flask——各部分详细介绍的更多相关文章

  1. nginx+uwsgi+flask 服务器配置

    注:每个机器,软件版本可能不一样,虽然网上有很多类似的帖子,但是我在搭建的时候遇到了不少的坑,此文仅供参考. 请求流程: 1.安装uwsgi uwsgi是一个应用服务器,非静态文件的网络请求就必须通过 ...

  2. Ubuntu下使用Nginx+uWSGI+Flask(初体验)

    Ubuntu 18.04,Nginx 1.14.0, uWSGI 2.0.17.1,Flask, 前言 Windows不支持uWSGI!为了上线自己的项目,只能选择Linux. 自己前面开发了一个Fl ...

  3. nginx+uwsgi+flask+supervisor 项目部署

    环境 - Linux: Ubuntu 16.04 - uWSGI 2.0.18 - Flask 1.0.2 - supervisor 3.2.0 - nginx/1.8.1 首先区分几个概念 WSGI ...

  4. Ubuntu下nginx+uwsgi+flask的执行环境搭建

    选择web framwork是个非常艰难的事情, 主要分为轻量级和重量级框架. 因为没有搭建站点这样的须要, 所以回避SSH, Django这样的框架, 而选择一个轻量级框架. 自己也比較青睐pyth ...

  5. 一次请求中,经过 nginx+uWSGI+flask应用程序搭建服务的执行过程

    Flask框架有自带的http server,但是缺点非常明显,并发能力,及时响应非常差,只适合开发时自测使用. 在我接触过的项目中,生产环境使用nginx+uWSGI+flask应用程序进行部署服务 ...

  6. Docker构建nginx+uwsgi+flask镜像(二)

    Dockerfile搭建环境并打包应用 在上一章Docker构建nginx+uwsgi+flask镜像(一)的学习中,我们学会用命令行一句一句在alpine环境中搭建nginx+uwsgi+flask ...

  7. Docker构建nginx+uwsgi+flask镜像(一)

    前言 笔者之前是从事Java方面的工作,自从18年5月左右来到新的公司,接触到Python,被其简单优雅的语法风格深深吸引,同时,新公司也帮助笔者打开Docker世界的大门,让笔者体会到“一次打包,到 ...

  8. 微服务架构学习与思考(10):微服务网关和开源 API 网关01-以 Nginx 为基础的 API 网关详细介绍

    微服务架构学习与思考(10):微服务网关和开源 API 网关01-以 Nginx 为基础的 API 网关详细介绍 一.为什么会有 API Gateway 网关 随着微服务架构的流行,很多公司把原有的单 ...

  9. nginx uwsgi flask相关配置

    一.安装Nginx 在 /home/download下下载压缩包 wget https://nginx.org/download/nginx-1.12.2.tar.gz 解压缩 tar zxvf ng ...

随机推荐

  1. phpStudy后门漏洞利用复现

    phpStudy后门漏洞利用复现 一.漏洞描述 Phpstudy软件是国内的一款免费的PHP调试环境的程序集成包,通过集成Apache.PHP.MySQL.phpMyAdmin.ZendOptimiz ...

  2. phaser学习总结之Tween详解

    前言 在上一章phaser学习总结之phaser入门教程中,我们已经初步入门了phaser,并通过一个案例了解了phaser,现在我们需要对phaser中的对象进行讲解,本章需要讲解的是tween,即 ...

  3. 为什么用Markdown,而不用Word?

    写博客.写文章比较多的人都知道 Markdown 是什么. Markdown 是一种轻量级标记语言,创始人为 John Gruber.它允许人们「使用易读易写的纯文本格式编写文档,然后转换成有效的 X ...

  4. 启动一个Activity的几种方式

    在Android中我们可以通过下面两种方式来启动一个新的Activity,注意这里是怎么启动,而非 启动模式!!分为显示启动和隐式启动! 1. 显式启动:通过包名来启动,写法如下: ①最常见的: st ...

  5. WebGL简易教程(十一):纹理

    目录 1. 概述 2. 实例 2.1. 准备纹理 2.2. 配置纹理 2.3. 使用纹理 3. 结果 4. 参考 1. 概述 在之前的之前的教程<WebGL简易教程(九):综合实例:地形的绘制& ...

  6. InfluxDB从原理到实战 - InfluxDB常用的基础操作

    0x00 基础操作介绍 在本文中将介绍InfluxDB常用的基础操作,帮助读者建立对InfluxDB的感性认识,快速的动手玩起来,持续查询(Continuous Queies).Group by.Se ...

  7. stm32填坑之旅 - stm32f103c8t6点亮板载贴片蓝色LED

    转载请注明:https://www.cnblogs.com/rockyf/p/11691622.html 开篇 开篇一定要精彩,不然路人不理睬!下述是笔者作为arm小白的填坑之旅 没错,这个之前一直从 ...

  8. django数据库迁移时候异常

    django数据库迁移时候异常 一.错误信息 Django在根据models生成数据库表时报 init() missing 1 required positional argument: 'on_de ...

  9. 经典的Redis的主从复制搭建

    ##### 配置服务器   1).打开redis.conf文件修改 bind 指定的ip地址: ![image](https://img2018.cnblogs.com/blog/1334966/20 ...

  10. ThinkPHP5 远程命令执行漏洞分析

    本文首发自安全脉搏,转载请注明出处. 前言 ThinkPHP官方最近修复了一个严重的远程代码执行漏洞.这个主要漏洞原因是由于框架对控制器名没有进行足够的校验导致在没有开启强制路由的情况下可以构造恶意语 ...