Flask 生产环境部署(Falsk + uWSGI + nginx)

这篇具有很好参考价值的文章主要介绍了Flask 生产环境部署(Falsk + uWSGI + nginx)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

最近自己做了个 Falsk 小项目,在部署上服务器的时候,发现虽然不乏相关教程,但大多都是将自己项目代码复制出来,不讲核心逻辑,不太简洁,于是将自己部署的经验写成内容分享出来。

uWSGI 简介

uWSGI: 一种实现了多种协议(包括 uwsgi、http)并能提供服务器搭建功能的 Python 包

Difference between WSGI , uWSGI and UWSGI

在 Flask 和 nginx 之间使用 uWSGI 的必要性:nginx 并不能直接与 Python 中的 WSGI 通信。WSGI 是 Python 中网络服务的标准。What is the point of uWSGI?

uWSGI 安装

pip 安装,如果失败则用 conda 安装。Error installing uwsgi in virtualenv

Flask 注意

既然看到这篇内容 Flask 程序编写肯定已经不是问题了,不过多介绍。Flask 官网中 Quickstart 的代码为

# app.py
from flask import Flask

app = Flask(__name__)

@app.route("/")
def hello_world():
    return "<p>Hello, World!</p>"

通过 flask --app hello run 启动。

要提的是代码中如果有 app.run(),要将其放在 if __name__ == "__main__": 中,即:

# app.py
if __name__ == "__main__":
    app.run()

快速上手 uWSGI

文件目录下运行:uwsgi --http 0.0.0.0:5001 -w app:app。第一个 app 是 Flask 代码文件名,第一个 app 是代码中 Flask 对象变量名,即赋值为 Flask(__name__) 的变量名。

打开浏览器访问对应端口测试

部署

部署上服务器需要添加名为 uwsgi.ini 的 uwsgi 配置文件,放在项目根目录下。

基本配置:

; uwsgi.ini
[uwsgi]
module = app:app
; http 和 socket 二选一
; socket 用的是 uwsgi 协议通信
; http = 127.0.0.1:3031
socket = 127.0.0.1:3031
daemonize = ./uwsgi/uwsgi.log ; 后台运行
pidfile = ./uwsgi/uwsgi.pid   ; 保存 pid 方便后台运行时的程序管理

并在根目录下创建 uwsgi 文件夹,就能运行最基础的服务器了。

  • 启动:uwsgi --ini uwsgi.ini
  • 关闭:uwsgi --stop ./uwsgi/uwsgi.pid
  • 配置文件更改后:uwsgi --reload ./uwsgi/uwsgi.pid

配置文件中的变量名就是命令行中参数名的全称。

还建议配置:

master = 1
processes = 4
; 上面两个参数配置并发,根据服务器性能配置
enable-threads = 1  ; 开启多线程
stats = 0.0.0.0:9191  ; 开启监控端口,以 json 格式返回当下 uwsgi 运行状态
stats-http = 1        ; 开启 http 访问监控端口

奇怪的是在本地测试时可以在浏览器直接访问 9191 端口,而在服务员上部署成功后却无法访问,但是有返回的内容,可以用 curl 获取内容。

除此之外,要监控 uwsgi 的运行状态,还可以通过 pip 安装 uwsgitop,而后在 shell 中输入 uwsgitop 就能查看监控,就像 linux 中的 top 一样。

nginx 配置

nginx 基础不多介绍,直入正题配合使用 uwsgi 时该如何配置。

location 中照如下设置:

# 如果是用 socket:
location / {
    include uwsgi_params;
    uwsgi_pass 127.0.0.1:3031;    # 端口号和前述配置文件一样
}
# 如果是用 http:
location / {
    proxy_pass http://127.0.0.1:3031;  # 端口号和前述配置文件一样
}

现在可以通过浏览器访问了。文章来源地址https://www.toymoban.com/news/detail-851264.html

到了这里,关于Flask 生产环境部署(Falsk + uWSGI + nginx)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Flask结合gunicorn和nginx反向代理的生产环境部署及踩坑记录

    个人博客:https://xzajyjs.cn 之前自己写的flask使用gunicorn上线生产环境没有什么问题,但是最近搭建了一个现成的flask项目,当使用python直接运行时不会有问题,而使用gunicorn时则会出现一些问题。 这里使用pyenv创建了一个虚拟环境,并安装好依赖 下面是入口函数 run.py : 其中

    2024年02月16日
    浏览(45)
  • docker+mysql+flask+redis+vue3+uwsgi+docker部署

    首先拉取mysql的镜像,这里用的mysql5.7.6 docker pull mysql:5.7.6 镜像拉取完成后启动: 利用dockerfile构建python3.9.11+uwsgi+nginx 构建: docker build -t mydemo . flask配置: 安装:pip install -r requirements.txt celery: 微信支付python的库 --link redis:redis-server flask容器就可以读取redis容器redis服务了:

    2024年02月07日
    浏览(46)
  • 【Django】在Linux上部署Django(nginx+uwsgi)

    1.说明 关于在Linux上使用uwsgi部署Django的项目的过程并不难,主要是配置文件的写法,尤其是nginx的配置文件,本文在Ubuntu20.04上通过uwsgi和nginx部署Django项目 2.安装环境 安装环境主要有Nginx、Python、MySQL、Redis,可以根据你的实际情况进行安装 2.1 安装nginx 大多数发行版Linux都支

    2024年02月12日
    浏览(45)
  • Django使用uwsgi+nginx部署,admin没有样式解决办法

    若在服务器上部署的项目admin没有样式,则检查下一下配置: settings uwsgi.ini urls nginx.conf } 如果使用了虚拟环境则修改nginx.conf文件中的/static/路径为你虚拟环境的路径,没有使用虚拟环境则改为你python安装路径下的static 修改完后,cd/usr/sbin,使用./nginx -s reload,重启nginx,重启项目

    2024年02月14日
    浏览(40)
  • Django笔记四十四之Nginx+uWSGI部署Django以及Nginx负载均衡操作

    本文首发于公众号:Hunter后端 原文链接:Django笔记四十四之Nginx+uWSGI部署Django以及Nginx负载均衡操作 这一篇笔记介绍如何使用 Nginx + uWSGI 来部署 Django。 上一篇笔记中有介绍直接使用 uWSGI 作为 web 服务器来部署 Django,这一篇笔记介绍如何使用 Nginx 来部署。 使用 Nginx 来部署相

    2024年02月05日
    浏览(55)
  • Ubuntu纯净服务器系统使用Nginx+uwsgi部署django项目

    当前文章依赖最新的ubuntu-22.04.3-live-server-amd64服务器系统,python3-10版本,django为5.0版! 该服务器系统我们可以通过虚拟机来在本地安装,也可以使用云服务器,操作方式方法大同小异! 这里我们以开源项目baykeshop为基础来演示! 开源地址:baykeShop: baykeshop是一款python栈采用

    2024年01月17日
    浏览(46)
  • 2-Docker-应用-多容器部署Django+Vue项目(nginx+uwsgi+mysql)

    基于Linux CentOS 7系统(虚拟机),使用Docker,多容器部署Django+Vue项目 整体部署用到了:Django+Vue+nginx+mysql+uwsgi 先每一个容器单独部署,最后用Docker compose 语法整合,统一部署 参考文章:https://blog.csdn.net/qq_45445505/article/details/135563784 章标题:Docker介绍 节标题:Docker安装 总结梳

    2024年03月10日
    浏览(97)
  • Flask用于生产环境

    Flask是一个用Python编写的轻量级Web应用框架,可以用于开发和部署Web服务。要安装Flask,您需要以下步骤: - 安装Python和pip,如果您还没有的话。 - 创建一个虚拟环境,以便隔离您的Flask应用程序和其他Python项目。 - 在虚拟环境中,使用pip安装Flask:`pip install flask` - 将您的Fla

    2024年01月21日
    浏览(37)
  • Python对接微信小程序V3接口进行支付,并使用uwsgi+nginx+django进行https部署

    网上找了很多教程,但是很乱很杂,并且教程资源很少且说的详细。这里就记录一下分享给大家 共分为以下几个步骤: 目录 一、开始前准备信息 二、使用前端code获取用户的openid 三、对接小程序v3接口下单 四、小程序支付的回调 五、安装并启动uwsgi 六、安装并启动nginx 七、

    2024年02月12日
    浏览(41)
  • [Python] flask运行+wsgi切换生产环境+supervisor配置指南

    flask项目本地启动时,控制台会打印如下warning 翻译成 人话就是,“我这个环境就是你开发时用,实际生产的时候可别找我,出事我不负责。” 好家伙呀。 但是他指了另外一条路: Use a production WSGI server 。 依然还是带着问题学习,从本篇文章可以了解如下内容 flask本身自带

    2024年02月03日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包