顾乔芝士网

持续更新的前后端开发技术栈

flask-api 部署

1. 创建项目目录

mkdir simple-flask-api
cd simple-flask-api

2. 设置 Python 虚拟环境(可选但推荐)

# 创建虚拟环境
python -m venv venv

# 激活虚拟环境
# Windows:
venv\Scripts\activate
# Linux/MacOS:
source venv/bin/activate

3. 安装 Flask 基础包

pip install flask

4. 创建最简单的项目结构

simple-flask-api/
├── app.py          # 主应用文件
└── requirements.txt # 依赖文件(可选)

5. 创建 app.py文件

from flask import Flask, jsonify

app = Flask(__name__)

@app.route('/')
def hello():
    return jsonify({"message": "Hello, World!"})

@app.route('/api/greet/<name>')
def greet(name):
    return jsonify({"greeting": f"Hello, {name}!"})

if __name__ == '__main__':
    app.run(debug=True)

6. 运行应用

python app.py

访问以下 URL 测试:

  • http://127.0.0.1:5000/ - 返回 {"message": "Hello, World!"}
  • http://127.0.0.1:5000/api/greet/Alice - 返回 {"greeting": "Hello, Alice!"}

7. 可选步骤:创建 requirements.txt

pip freeze > requirements.txt

8. 额外功能(按需添加)

添加 CORS 支持(如果前端需要访问)

pip install flask-cors


修改 app.py:

from flask_cors import CORS

app = Flask(__name__)
CORS(app)  # 允许所有来源的跨域请求

添加配置管理

创建 config.py:

class Config:
    DEBUG = True
    SECRET_KEY = 'your-secret-key-here'

修改 app.py:

from config import Config

app = Flask(__name__)
app.config.from_object(Config)

9. 生产环境运行(可选)

如果需要部署到生产环境:

pip install gunicorn
gunicorn -w 4 -b 0.0.0.0:5000 app:app

这个最简单的配置已经可以满足基本 API 开发需求,无需数据库,代码量极少但功能完整。

二、进阶版

项目结构

your_app/
├── app/
│   ├── __init__.py    # 初始化应用
│   └── routes.py      # API端点定义
├── run.py             # 启动脚本
└── requirements.txt   # 依赖文件

1. 文件内容配置

app/__init__.py

from flask import Flask
from flask_restful import Api

app = Flask(__name__)
api = Api(app)

# 必须在app和api创建后导入,避免循环依赖
from app import routes

app/routes.py

from flask_restful import Resource
from app import api

class HelloWorld(Resource):
    def get(self):
        return {'message': 'Hello, World!'}

class GreetUser(Resource):
    def get(self, name):
        return {'greeting': f'Hello, {name}!'}

# 注册路由
api.add_resource(HelloWorld, '/')
api.add_resource(GreetUser, '/greet/<string:name>')

run.py

from app import app

if __name__ == '__main__':
    app.run(debug=True, host='0.0.0.0', port=5000)

2. 环境配置步骤

(1) 创建虚拟环境(推荐)


python -m venv venv
source venv/bin/activate  # Linux/Mac
venv\Scripts\activate    # Windows

(2) 安装依赖


pip install flask flask-restful
pip freeze > requirements.txt

(3) 运行开发服务器

python run.py

访问测试:

  • http://localhost:5000/
  • http://localhost:5000/greet/Alice

3. 生产环境部署

(1) 安装生产服务器

bash

pip install gunicorn

(2) 使用 Gunicorn 运行

bash

gunicorn -w 4 -b 0.0.0.0:5000 "run:app"

参数说明
-w 4:4个工作进程
-b 0.0.0.0:5000:绑定所有网络接口
"run:app":从run.py导入app对象

(3) 添加Nginx配置(可选)

nginx

server {
    listen 80;
    server_name yourdomain.com;

    location / {
        proxy_pass http://127.0.0.1:5000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

(4) Systemd服务文件(Linux)

创建
/etc/systemd/system/flaskapi.service:

ini

[Unit]
Description=Flask RESTful API
After=network.target

[Service]
User=your_user
WorkingDirectory=/path/to/your_app
ExecStart=/path/to/venv/bin/gunicorn -w 4 -b 127.0.0.1:5000 "run:app"
Restart=always

[Install]
WantedBy=multi-user.target

启用服务:

bash

sudo systemctl daemon-reload
sudo systemctl start flaskapi
sudo systemctl enable flaskapi

4. 关键注意事项

  1. 路由注册顺序
    routes.py 必须在 __init__.py 中最后导入,避免循环依赖
  2. 生产环境配置
    • 禁用debug模式(移除 debug=True)

添加密钥配置:

    • python
# app/__init__.py
app.config['SECRET_KEY'] = 'your-secret-key-here'

跨域处理(如需)
安装并配置CORS:

  • bash

pip install flask-cors

python

# app/__init__.py
from flask_cors import CORS
CORS(app)  # 允许所有跨域请求

日志管理
Gunicorn日志配置:

  • bash
  1. --access-logfile - --error-logfile -

5. 完整部署流程示例

bash

# 服务器上操作
git clone your_repository
cd your_app
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt

# 测试运行
gunicorn -w 4 -b 127.0.0.1:5000 "run:app"

# 设置系统服务
sudo nano /etc/systemd/system/flaskapi.service
# 粘贴上述service配置
sudo systemctl start flaskapi
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言