Linux nginx+uwsgi+flask部署笔记02(各种小白问答以及疑难解答)

昨天和大家草草讲了一下如何用最简陋的方式部署一个uwsgi+flask的服务器项目。
今天先和大家感性谈一谈为什么以及怎么用nginx+uwsgi+flask以及解答一些很多和以前的我一样迷茫的人的疑点。
Q:直接运行flask脚本不也可以开启一个服务器程序,也可以供外网访问吗?一定要用uwsgi和nginx吗?
A:可是可以,但是再怎么说flask只是一个web框架直接运行是在开发、测试环境下图方便用的,而不是在生产环境下使用的。直接用必然导致性能、效率、利用率不高、资源访问慢、不安全等特点(虽然有些高性能的服务器也能撑很久,但还是不要这么干)。可以这么说,无论是纯flask,还是flask+uwsgi或是flask+uwsgi+nginx都可以成功在服务器上部署flask项目,但是在效果上面肯定一个比一个好。
Q:我知道flask部署要配合uwsgi部署了而且也效果很不错可是,Nginx又是什么,打酱油的吗?
A:nginx是一个高性能http和反向代理服务,可以理解成一个容器,就好像python的装饰器一样,它可以封装其他的对象而不改变其属性,同时附加上一些新的属性(懂得人自然懂,不懂没关系)。通过我昨天的教程:https://blog.csdn.net/weixin_42744102/article/details/86941137 大家已经可以轻易用uwsgi部署一个flask项目了,这个uwsgi也是一个容器,里面承载了一个flask程序,然而直接通过uwsgi部署的服务如果通过外网访问,依然存在稳定、效率以及安全问题(例如可能还是无法防护部分ddos攻击),因此我们需要把它一个更大的容器里面——这个更大的容器就是Nginx。阿帕奇大家肯定知道(就是服务器程序的那个阿帕奇,不是美军直升机的那个阿帕奇),Nginx也是一个服务器程序,是一个俄罗斯工程用C语言开发并开源的服务器,比阿帕奇更轻量、更好支持反向代理、负载均衡、高并发等等。把uwsgi放进Nginx这个容器里面也非常简单,我在下一个笔记里面会放上教程。
Q:什么是负载均衡,反向代理?
A:其他其他博客有很多讲的很好的,我这里就接别人的口水沫。负载均衡,顾名思义,我们打个比方:你写了一个博客,这个博客访问量很小,因此你只需要一台每个月九块九的服务器来运行你的项目,因为访问的人不多,负载不大,这台服务器最多的负荷可能是1000,但是由于流量小你的实际负荷可能只有10,这时候我们不需要负载均衡,因为一个服务器足矣。但是,当你的网站人气越来越高,最终达到了和(.*?)hub一样的访问量相当的时候你就会发现你的九块九包月的服务器要吃不消了,变得很卡顿甚至宕机。这个时候,你就需要负载均衡了,简单说就是你需要租N个九块九的服务器组成了一个服务器集群,然后在你的每一个服务器上面部署相同的服务器程序,用一个机制来把用户的访问的请求分发给这些服务器,这下子,你的网站就又活起来了;这个“通过一个机制来将这些请求分发给不同服务器,并转发消息”的过程便可以看作是一个反向代理的过程。真正处理事件的那些服务器们不知道真实的访问来自于哪个地址,只知道他们的上一个节点是一个负载均衡的分发器,这就是反向代理。
Q:接昨天的uwsgi部署的问题:uwsgi的配置文件里面,配置参数http=0.0.0.0:8080和socket=0.0.0.0:8080有什么区别?
A:首先,http是一个协议,socket是套接字不是协议,配置了http参数之后,运行uwsgi服务就可以直接在公网进行访问了,因为它是http协议。但是如果只配置了socket,意味着这个配置只是为了告诉操作系统:“这个0.0.0.0:80的套接字我uwsgi占用了,我要用它干大事,别给其他人用”但运行uwsgi之后,无法通过外网访问项目。那这么做的意义是什么呢?首先,如果我们配置了http参数的话,意味着uwsgi本身就是一个服务了,就无法将它放进nginx这个容器中,如果你强行把它放进去,nginx一定会报错,说的就是XX端口被谁谁谁占用了!因此,如果我们需要把uwsgi继续放进nginx容器的话,我们就必须要只配置socket字段而不配置http参数(套接字都是0.0.0.0:80,没问题)。

问答到此结束,由于本人水平有限,如果有任何表述上或者理解上有误的地方烦请大家帮忙指出,我一定在第一时间更正以免误导大家!本人工作邮箱:1012950361@qq.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值