Flask项目如何在测试环境和生产环境部署上线

前言

最近在使用Flask框架,写一个小项目,在项目部署启动后,出现了以下这段提示,这段提示的意思是,该启动方式适用于开发环境中,生产环境要使用WSGI服务器。

WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.

项目结构

以下是该项目的主要结构图:
|— app/
| |— api/
| | |— user_api.py
| | |— init.py
| |— extensions.py
| |— init.py
| |— models/
| | |— user_dao.py
| | |— init.py
| |— service/
| | |— user_service.py
| | |— init.py
|— config/
| |— app_config.py
| |— init.py
|— logs/
|— requirements.txt
|— run.py
|— wsgi.py

项目部署流程

环境介绍

开发环境:本机windows10
测试和生成环境:linux

生成requirements.txt

requirements.txt文件主要是存储该项目需要依赖的库及版本要求,但是如果你在本机电脑使用的python版本和linux上使用的版本不一样,那么在部署到测试和生产环境时会出现不少问题,但是出现问题逐条解决就行了。

#生成requirements.txt
pip freeze > requirements.txt

在这里插入图片描述

项目打包

#这个命令将会创建一个名为 my_flask_app.tar.gz 的压缩文件,并包含了 app、config、logs、mm.py、requirements.txt 和 run.py 这些文件和文件夹。
tar -czvf my_flask_app.tar.gz app config logs mm.py requirements.txt run.py

项目解压

将打包后的文件传入要部署的机器上,使用以下命令解压到指定的文件中

tar -xzvf my_flask_app.tar.gz -C ~/my_flask

新建虚拟环境

为了排除该项目对机器上其他应用的影响,为该项目创建独立的虚拟环境。

  1. 进入 mystery_shopper 文件夹:

cd my_flask

  1. 使用 Python3 的 venv 模块创建一个新的虚拟环境。假设你想要使用 Python3,运行以下命令:

python3 -m venv venv

  1. 激活虚拟环境。在 Linux 中,可以运行以下命令:

source venv/bin/activate

  1. 进入到虚拟环境后,开始安装依赖库:

pip install -r requirements.txt

  1. 编写 WSGI 入口文件:
    创建一个 Python 文件作为 WSGI 入口点。通常,这个文件可以命名为 wsgi.py 或者 app.wsgi。在该文件中,导入你的 Flask 应用并创建一个应用对象。示例代码如下:
from app import create_appapp = create_app()if __name__ == "__main__":app.run()
  1. 安装生产级 WSGI 服务器:

pip install gunicorn

  1. 后台运行 Gunicorn

gunicorn -b 0.0.0.0:5000 wsgi:app --daemon

  1. 检查 Gunicorn 服务是否在运行

ps aux | grep gunicorn

在这里插入图片描述

执行完上面8个步骤之后,项目就在后台启动了,如果想关闭项目,使用以下命令:

kill 25702 25703

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/805575.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

阿里云大学考试Java中级题目及解析-java中级

阿里云大学考试Java中级题目及解析 1.servlet释放资源的方法是? A.int()方法 B.service()方法 C.close() 方法 D.destroy()方法 D servlet释放资源的方法是destroy() 2.order by与 group by的区别? A.order by用于排序,group by用于排序…

从0到1一步一步玩转openEuler--02 openEuler操作系统的安装

从0到1一步一步玩转openEuler–02 openEuler操作系统的安装 安装地址:https://www.jianshu.com/p/f8b8c7b4cc11

OSCP靶场--Zino

OSCP靶场–Zino 考点(CVE-2019-9581 RCE 定时任务脚本可写提权) 1.nmap扫描 ##┌──(root㉿kali)-[~/Desktop] └─# nmap 192.168.173.64 -sV -sC -Pn --min-rate 2500 -p- Starting Nmap 7.92 ( https://nmap.org ) at 2024-04-10 04:18 EDT Nmap scan report for 192.…

自定义注解进行数据转换

前言: Java注解是一种元数据机制,可用于方法,字段,类等程序上以提供关于这些元素的额外信息。 以下内容是我自己写的一个小测试的demo,参考该文章进行编写:https://blog.csdn.net/m0_71621983/article/details/1318164…

【linux】基础IO(四)

在上一篇基础IO中我们主要讲述了文件再磁盘中的存储,当然我们说的也都只是预备知识,为这一篇的文件系统进行铺垫。 目录 搭文件系统的架子:填补细节:inode:datablock[]: 更上层的理解: 搭文件系统的架子&a…

dynamicreports示例

1. 简单段落文本报表 //标题样式StyleBuilder titleStyle DynamicReports.stl.style().setHorizontalTextAlignment(HorizontalTextAlignment.CENTER)//设置对齐方式.setFontSize(50)//设置字体.setBackgroundColor(Color.CYAN);//设置背景颜色//段落样式StyleBuilder paragra…

uniapp 2.0可视化工具:创建与管理Vue文件的实践之旅

引言 在前端开发领域中,Vue以其简洁、易上手的特点,受到了广大开发者的青睐。随着uniapp的不断发展,越来越多的开发者开始利用uniapp的可视化工具来创建和管理Vue文件,以提高开发效率。本文将详细介绍如何使用uniapp 2.0可视化工…

bytetrack复现

一,环境安装 创建虚拟环境 conda create -n bytetrack python=3.8 安装requirements pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple 可能报错,解决办法,安装numpy 安装 pytorch pip install torch==1.12.0+cu113 torchvision==0.13.0+cu1…

redis修改协议改了,有哪些替代品?

Redis 是一款广泛使用的开源内存数据结构存储,它支持多种数据结构,如字符串、哈希表、列表、集合、有序集合等。然而,由于 Redis 最近更改了其开源许可证,一些用户和开发者可能正在寻找替代品。以下是一些 Redis 的替代品&#xf…

解决vue3+ts组件ref定义但是访问不到组件属性

为什么父组件访问不到属性呢 因为使用 <script setup> 语法糖的组件是默认关闭的&#xff0c;也即通过模板 ref 或者 $parent 链获取到的组件的公开实例&#xff0c;不会暴露任何在 <script setup>中声明的绑定。 所以要自己抛出去 解决 为了在 <script setu…

H5动效开发之CSS3动画

动画效果是情感设计的重要手段,在H5开发中,实现动效需要综合利用 JavaScript、CSS(3)、SVG、Canvas 等多种 Web 技术手段才能开发出动人的网页动态效果。 接下来,我们把重心放在 CSS3 动画上面,因为 CSS3 在现如今的网页动效开发中占据着最为重要的一席,作为老大哥 CSS 的…

基于SSM+Jsp+Mysql的超市管理系统

开发语言&#xff1a;Java框架&#xff1a;ssm技术&#xff1a;JSPJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包…

SuperMap GIS基础产品FAQ集锦(202403)

一、SuperMap GIS基础产品桌面GIS-FAQ集锦 问题1&#xff1a;【iDesktop】安装了idesktop 11i&#xff0c;现想进行插件开发&#xff0c;根据安装指南安装SuperMap.Tools.RegisterTemplate.exe&#xff0c;运行多次均失败 【问题原因】该脚本是之前老版本针对VS2010写的&…

【算法】Cordic算法的原理及matlab/verilog应用

一、前言 单片机或者FPGA等计算能力弱的嵌入式设备进行加减运算还是容易实现&#xff0c;但是想要计算三角函数&#xff08;sin、cos、tan&#xff09;&#xff0c;甚至双曲线、指数、对数这样复杂的函数&#xff0c;那就需要费些力了。通常这些函数的计算需要通者查找表或近似…

uniapp开发小程序,点击右上角<重新进入小程序>进行刷新时,设置开屏加载页面

一、需求及问题 问题&#xff1a;使用uniapp开发小程序时&#xff0c;有【学生端】和【企业端】两个入口&#xff0c;一进入小程序默认进入【学生端首页】&#xff0c;但是当前处于【企业端】时&#xff0c;点击右上角<重新进入小程序>进行刷新时&#xff0c;页面默认进…

国内如何实现GPT升级付款

本来想找国外的朋友代付的&#xff0c;但是他告诉我他的信用卡已经被绑定了他也升级了所以只能自己想办法了。就在一位博主下边发现了这个方法真的可以。只是需要与支付宝验证信息。刚开始不敢付款害怕被骗哈哈&#xff0c;我反诈骗意识绝对杠杠的 该方法就是我们办理一张虚拟…

每天五分钟深度学习PyTorch:面对Tensorflow,为何我选择PyTorch

这篇专栏文章不是为了挑起tenserflow和pytorch中哪个更好&#xff0c;众所周知tensorflow诞生以来&#xff0c;已经成为最流行的深度学习框架&#xff0c;可以说github中大多数的深度学习代码实现是以tensorflow实现的&#xff0c;也就是说资源众多&#xff0c;社区强大&#x…

还不会免费将PDF转为Word?赶快试试这3种工具!

PDF文档格式转换是高频且刚需的办公需求&#xff0c;虽然很简单&#xff0c;但其实绝大部分人找不到合适的工具。 将PDF免费转为Word的方法有很多&#xff0c;这里主要介绍三种工具。 第一种使用最常见的Word软件&#xff0c;第二种使用免费转换网站pdf2doc&#xff0c;第三种…

AI论文精读之CSPNet—— 一种加强CNN模型学习能力的主干网络

目录 一、论文摘要部分 二、提出背景 三、本文的方法 3.1 DenseNet 3.2 Cross Stage Partial DenseNet 3.3 引入 partial dense block及partial transition layer的目的 3.3.1 partial dense block 3.3.2 partial transition layer 3.4 将CSPNet应用到其他结构中 3.5 E…

比nestjs更优雅的ioc:跨模块访问资源

使用ts的最佳境界&#xff1a;化类型于无形 在项目中使用ts可以带来类型智能提示与校验的诸多好处。同时&#xff0c;为了减少类型标注&#xff0c;达到化类型于无形的效果&#xff0c;CabloyJS引入了ioc和依赖查找的机制。在上一篇文章中&#xff0c;我们创建了一个业务模块t…