Flask项目搭建及部署(完整版!全网最全)

flask搭建及部署

pip 19.2.3

python 3.7.5

Flask 1.1.1

Flask-SQLAlchemy 2.4.1

Pika 1.1.0

Redis 3.3.11

flask-wtf 0.14.2

1、创建flask项目:

创建完成后整个项目结构树:

app.py: 项⽬管理⽂件,通过它管理项⽬。

static: 存放静态文件

templates文件夹:用于放置html模板文件

由于flask属于轻量级web框架, 更加自由、灵活,可扩展性强,第三方库的选择面广,开发时可以结合自己最喜欢用的轮子,也能结合最流行最强大的Python库 。所以这个框架的代码架构需要自己设计。

2、创建项目主要逻辑代码保存目录

手动创建application目录、filter目录及其子目录

application : 项目主要逻辑代码保存目录

_init_.py : 创建flask应用并加载配置,如mysql,redis,rabbitmq,

apps : 专门用于保存每一个项目的蓝图

app1 : app1蓝图目录,在app1下的init_.py中文件中创建蓝图对象,view.py中新增对应的视图文件,在 model.py中写模型代码

settings : 项目配置存储目录

dev.py : 项目开发阶段配置文件

prop.py : 项目生成阶段配置文件

static : 项目静态文件夹(用于存放css一类的文件)

templates : 用于放置html模板文件

filter : 整个项目拦截器目录

requestFilter.py: 针对整个app项目全局路由拦截规则定义

app.py : 项⽬管理⽂件,通过它启动整个项目

2.1 配置mysql数据库,加载配置文件并针对整个app项目定义全局db

2.1.1 settings.py
#全局通用配置类
class Config(object):
    """项目配置核心类"""
    #调试模式
    DEBUG=False
​
    # 配置日志
    # LOG_LEVEL = "DEBUG"
    LOG_LEVEL = "INFO"
​
​
    # 配置redis
    # 项目上线以后,这个地址就会被替换成真实IP地址,mysql也是
    REDIS_HOST = 'your host'
    REDIS_PORT = your port
    REDIS_PASSWORD = 'your password'
    REDIS_POLL = 10
​
    #数据库连接格式
    SQLALCHEMY_DATABASE_URI = "mysql+pymysql://user:password@localhost:3306/test?charset=utf8"
    # 动态追踪修改设置,如未设置只会提示警告
    SQLALCHEMY_TRACK_MODIFICATIONS = False
    # 查询时会显示原始SQL语句
    SQLALCHEMY_ECHO = False
    # 数据库连接池的大小
    SQLALCHEMY_POOL_SIZE=10
    #指定数据库连接池的超时时间
    SQLALCHEMY_POOL_TIMEOUT=10
    # 控制在连接池达到最大值后可以创建的连接数。当这些额外的 连接回收到连接池后将会被断开和抛弃。
    SQLALCHEMY_MAX_OVERFLOW=2
​
​
    #rabbitmq参数配置
    RABBITUSER="user"
    RABBITPASSWORD="password"
    RABBITHOST="your ip"
    RABBITPORT=your port

2.1.2 dev.py
from . import Config
​
class DevelopmentConfig(Config):
    '开发模式下的配置'
    # 查询时会显示原始SQL语句
    SQLALCHEMY_ECHO = True
2.1.3 prop.py
from . import Config
​
class ProductionConfig(Config):
    """生产模式下的配置"""
    DEBUG = False
2.1.4 加载配置文件,定义全局的db( SQLALchemy类的实例 )供项目使用
# 主应用的根目录
app = Flask(__name__)
​
config = {
    'dev': DevelopmentConfig,
    'prop': ProductionConfig,
}
​
# 设置配置类
Config = config['dev']
​
# 加载配置
app.config.from_object(Config)
​
# 创建数据库连接对象
db = SQLAlchemy(app)

dev : 测试环境配置

prop: 生产环境配置

Flask应用app配置加载

通常三种方式

  • 从配置对象中加载:app.config.from_object()

  • 从配置文件中加载:app.config.from_pyfile()-ini文件

  • 从环境变量中加载:app.config.from_envvar()

配置对象

  • 从配置对象中加载,创建配置的类:

# 配置对象,里面定义需要给 APP 添加的一系列配置
class Config(object):
    DEBUG = True
​
​
app = Flask(__name__)
​
# 从配置对象中加载配置
app.config.from_object(Config)
app.run()

配置文件

  • 从配置文件中加载,在目录中定义一个配置文件config.ini

app = Flask(__name__)
​
# 从配置对象中加载配置
app.config.from_pyfile("config.ini")
app.run()

环境变量

app = Flask(__name__)
# 从环境变量中加载
app.config.from_envvar("FLASKCONFIG")
app.run()

2.2 定义model模型,负责和数据库交互

app1.model

from application import db
​
class Wdtest(db.Model):
    __tablename__ = "wdtest" #设置表名
    id = db.Column(db.String(100), primary_key=True, comment="主键ID")
    name = db.Column(db.String(20), index=True, comment="姓名" )
    age = db.Column(db.Integer, default=True, comment="年龄")

模型 表示程序使用的持久化实体. 在Flask-SQLALchemy

### Flask 应用程序的部署教程 #### 1. 创建 Flask 应用 构建一个功能完整的 Flask 应用程序是成功部署的第一步。确保应用程序逻辑清晰并经过充分测试[^1]。 ```python from flask import Flask, jsonify app = Flask(__name__) @app.route('/') def home(): return jsonify({"message": "Welcome to the Flask App!"}) if __name__ == '__main__': app.run(debug=True) ``` #### 2. 组织项目结构 为了便于管理和扩展,建议按照标准的项目结构组织文件。例如: ``` /my_flask_app /app __init__.py routes.py /static /templates requirements.txt wsgi.py ``` 其中 `wsgi.py` 是 Gunicorn 的入口文件,内容如下: ```python from app import create_app application = create_app() ``` #### 3. 配置 Gunicorn Gunicorn 是一种常用的 WSGI HTTP 服务器,用于生产环境中的 Flask 应用部署。可以通过命令行或配置文件设置其参数。 ##### 安装 Gunicorn 通过 pip 安装 Gunicorn: ```bash pip install gunicorn ``` ##### 启动 Gunicorn 使用以下命令启动服务,指定工作进程数和绑定地址: ```bash gunicorn -w $(nproc --all) -b 0.0.0.0:8000 wsgi:application ``` 这里 `-w` 参数表示工作线程的数量,通常推荐设为 CPU 核心数的两倍;`-b` 表示绑定的 IP 和端口。 #### 4. 使用 Docker 进一步优化部署流程 对于更复杂的场景,可以考虑利用 Docker 来容器化应用。以下是安装 Docker Compose 并创建相关配置的方法[^4]。 ##### 安装 Docker Compose 在 Linux 上安装 Docker Compose 可以通过以下命令完成: ```bash curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m) \ -o /usr/local/bin/docker-compose && chmod +x /usr/local/bin/docker-compose docker-compose version ``` ##### 编写 Dockerfile 定义镜像的基础架构以及依赖项: ```Dockerfile FROM python:3.9-slim WORKDIR /app COPY . . RUN pip install --no-cache-dir -r requirements.txt CMD ["gunicorn", "-w", "4", "-b", "0.0.0.0:8000", "wsgi:application"] ``` ##### 编写 docker-compose.yml 文件 简化多容器管理的任务: ```yaml version: '3' services: web: build: . ports: - "8000:8000" volumes: - .:/app ``` 启动容器: ```bash docker-compose up --build ``` #### 5. 测试与验证 最后,在本地运行 Gradio 或其他前端工具来验证接口是否正常返回数据[^5]。 ---
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值