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_app

app = 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

相关推荐

  1. 推荐收藏!Python Flask 项目生产环境部署指南

    2024-04-11 15:50:01       27 阅读
  2. Flask用于生产环境

    2024-04-11 15:50:01       55 阅读
  3. 使用FlaskGunicorn部署Python Web应用到生产环境

    2024-04-11 15:50:01       42 阅读
  4. python的Flask生产环境部署说明照做成功

    2024-04-11 15:50:01       44 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-11 15:50:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-11 15:50:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-11 15:50:01       82 阅读
  4. Python语言-面向对象

    2024-04-11 15:50:01       91 阅读

热门阅读

  1. 蓝桥杯练习题 —— 十六进制转八进制(python)

    2024-04-11 15:50:01       39 阅读
  2. 【如何应用OpenCV对图像进行二值化】

    2024-04-11 15:50:01       34 阅读
  3. SpringBoot整合RabbitMQ

    2024-04-11 15:50:01       26 阅读
  4. 计算机专业考研考哪些专业课

    2024-04-11 15:50:01       32 阅读
  5. 《策略模式(极简c++)》

    2024-04-11 15:50:01       38 阅读
  6. 选择成为一名程序员的原因

    2024-04-11 15:50:01       32 阅读
  7. 2017NOIP普及组真题 2. 图书管理员

    2024-04-11 15:50:01       35 阅读
  8. tcp/ip细节

    2024-04-11 15:50:01       30 阅读
  9. 运维监控管理系统的数据分析与可视化实践

    2024-04-11 15:50:01       29 阅读
  10. Linux链接大师:深入解析ln命令的奥秘

    2024-04-11 15:50:01       35 阅读
  11. 17、子矩阵的和(含源码)

    2024-04-11 15:50:01       30 阅读