nginx+uwsgi 和nginx+gunicorn区别、如何部署

2024-05-07 13:58

本文主要是介绍nginx+uwsgi 和nginx+gunicorn区别、如何部署,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

[线上环境部署Django,nginx+uwsgi 和nginx+gunicorn,这两种方案,应该如何选择?]

大家是采用的何种部署方式?

第一种,高并发稳定一点

我们公司使用的是nginx+gunicorn,主要是方便。性能可以从其他方面优化。

随便吧
我们用的是nginx supervisor gunicorn

Instagram由uwsgi转到gunicorn,建议用gunicorn,配置简单方便。

推荐 nginx supervisor gunicorn
配置简单,运维方便。

用的nginx+gunicorn方式,uwsgi没用过所以没法对比,就gunicorn的感受也来讲已经很快了,nginx处理掉了几乎全部的静态文件请求,实际上需要gunicorn再来处理的请求已经很少了。
gunicorn可以用Python文件直接配置,试用起来比较舒服。

我觉得这两种相差不多,根据你们相关的运维人员和开发人员的熟悉程度来决定。
现在的网站其实大部分处理的都是静态文件请求,除了诸如秒杀活动等等特定的业务,一般业务的请求量并不是很大。
所以你可以根据:1、你们当前的业务与以后可能会增加的业务;2、你们的运维人员的技能
来决定,哪个更熟悉就选哪个

[如何使用Nginx和uWSGI或Gunicorn在Ubuntu上部署Flask Web应用]

我在很多的博客中都看过有关Flask应用的部署,也有很多博主在开博后都记录了部署的教程,因为其中的坑可以说不少。一开始我在网上看到相比较与UbuntuCentOS因为更新少作为服务器的操作系统会更加稳定。所以在第一次购买云服务器时,我选择了CentOS,后来由于CentOS不同发行版的Nginx缘故,我又换成了Ubuntu的镜像

首先呢,我们先来了解下关于Web服务器与Web应用还有WSGI之间的联系

一、介绍

WSGI(Web Server Gateway Interface),翻译为Python web服务器网关接口,即PythonWeb应用程序(如Flask)和Web服务器(如Nginx)之间的一种通信协议。也就是说,如果让你的Web应用在任何服务器上运行,就必须遵循这个协议。

那么实现WSGI协议的web服务器有哪些呢?就比如uWSGIgunicorn。两者都可以作为Web服务器。可能你在许多地方看到的都是采用Nginx + uWSGI(或gunicorn)的部署方式。实际上,直接通过uWSGIgunicorn直接部署也是可以让外网访问的,那你可能会说,那要Nginx何用?别急,那么接来下介绍另一个Web服务器——Nginx

Nginx作为一个高性能Web服务器,具有负载均衡、拦截静态请求、高并发...等等许多功能,你可能要问了,这些功能和使用Nginx + WSGI容器的部署方式有什么关系?

首先是负载均衡,如果你了解过OSI模型的话,其实负载均衡器就是该模型中4~7层交换机中的一种,它的作用是能够仅通过一个前端唯一的URL访问分发到后台的多个服务器,这对于并发量非常大的企业级Web站点非常有效。在实际应用中我们通常会让Nginx监听(绑定)80端口,通过多域名或者多个location分发到不同的后端应用。

其次是拦截静态请求,简单来说,Nginx会拦截到静态请求(静态文件,如图片),并交给自己处理。而动态请求内容将会通过WSGI容器交给Web应用处理;

Nginx还有其他很多的功能,这里便不一一介绍。那么前面说了,直接通过uWSGIgunicorn也可以让外网访问到的,但是鉴于Nginx具有高性能、高并发、静态文件缓存、及以上两点、甚至还可以做到限流与访问控制,所以选择Nginx是很有必要的;

这里可以说明,如果你选择的架构是:Nginx + WSGI容器 + web应用,WSGI容器相当于一个中间件;如果选择的架构是uWSGI + web应用,WSGI容器则为一个web服务器

二、实际部署:

该篇部署的教程是在你已经购买好虚拟主机,并且已经搭建好开发环境的前提下进行的,如果你还没有搭建好开发环境,可以参考我写的文档:

阿里云Ubuntu云服务器上搭建Python和Flask的开发环境

普遍的部署方式都是通过让Nginx绑定80端口,并接受客户端的请求将动态内容的请求反向代理给运行在本地端口的uWSGI或者Gunicorn,所以既可以通过Nginx + uWSGI也可以通过Nginx + Gunicorn来部署Flask应用,这篇教程中都将一一介绍这两种方法

当然采用不同的WSGI容器,Nginx中的配置也会有所不同

1. Nginx + uWSGI:

1.1 配置uWSGI:

我们现在虚拟环境下安装好uWSGI


 

这篇关于nginx+uwsgi 和nginx+gunicorn区别、如何部署的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/967547

相关文章

Nginx location匹配模式与规则详解

《Nginxlocation匹配模式与规则详解》:本文主要介绍Nginxlocation匹配模式与规则,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、环境二、匹配模式1. 精准模式2. 前缀模式(不继续匹配正则)3. 前缀模式(继续匹配正则)4. 正则模式(大

springboot上传zip包并解压至服务器nginx目录方式

《springboot上传zip包并解压至服务器nginx目录方式》:本文主要介绍springboot上传zip包并解压至服务器nginx目录方式,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录springboot上传zip包并解压至服务器nginx目录1.首先需要引入zip相关jar包2.然

如何使用Nginx配置将80端口重定向到443端口

《如何使用Nginx配置将80端口重定向到443端口》这篇文章主要为大家详细介绍了如何将Nginx配置为将HTTP(80端口)请求重定向到HTTPS(443端口),文中的示例代码讲解详细,有需要的小伙... 目录1. 创建或编辑Nginx配置文件2. 配置HTTP重定向到HTTPS3. 配置HTTPS服务器

go 指针接收者和值接收者的区别小结

《go指针接收者和值接收者的区别小结》在Go语言中,值接收者和指针接收者是方法定义中的两种接收者类型,本文主要介绍了go指针接收者和值接收者的区别小结,文中通过示例代码介绍的非常详细,需要的朋友们下... 目录go 指针接收者和值接收者的区别易错点辨析go 指针接收者和值接收者的区别指针接收者和值接收者的

售价599元起! 华为路由器X1/Pro发布 配置与区别一览

《售价599元起!华为路由器X1/Pro发布配置与区别一览》华为路由器X1/Pro发布,有朋友留言问华为路由X1和X1Pro怎么选择,关于这个问题,本期图文将对这二款路由器做了期参数对比,大家看... 华为路由 X1 系列已经正式发布并开启预售,将在 4 月 25 日 10:08 正式开售,两款产品分别为华

python3 gunicorn配置文件的用法解读

《python3gunicorn配置文件的用法解读》:本文主要介绍python3gunicorn配置文件的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录python3 gunicorn配置文件配置文件服务启动、重启、关闭启动重启关闭总结python3 gun

Spring Boot项目部署命令java -jar的各种参数及作用详解

《SpringBoot项目部署命令java-jar的各种参数及作用详解》:本文主要介绍SpringBoot项目部署命令java-jar的各种参数及作用的相关资料,包括设置内存大小、垃圾回收... 目录前言一、基础命令结构二、常见的 Java 命令参数1. 设置内存大小2. 配置垃圾回收器3. 配置线程栈大小

Nginx中配置HTTP/2协议的详细指南

《Nginx中配置HTTP/2协议的详细指南》HTTP/2是HTTP协议的下一代版本,旨在提高性能、减少延迟并优化现代网络环境中的通信效率,本文将为大家介绍Nginx配置HTTP/2协议想详细步骤,需... 目录一、HTTP/2 协议概述1.HTTP/22. HTTP/2 的核心特性3. HTTP/2 的优

详解nginx 中location和 proxy_pass的匹配规则

《详解nginx中location和proxy_pass的匹配规则》location是Nginx中用来匹配客户端请求URI的指令,决定如何处理特定路径的请求,它定义了请求的路由规则,后续的配置(如... 目录location 的作用语法示例:location /www.chinasem.cntestproxy

kotlin中const 和val的区别及使用场景分析

《kotlin中const和val的区别及使用场景分析》在Kotlin中,const和val都是用来声明常量的,但它们的使用场景和功能有所不同,下面给大家介绍kotlin中const和val的区别,... 目录kotlin中const 和val的区别1. val:2. const:二 代码示例1 Java