宝塔部署Https形式的PythonFlask接口

前期准备

一个服务器、一个域名、域名的SSL证书、确保服务器有Python3环境

案例源码

test.py文件,一个简单的PythonFlask案例

from flask import Flask, request, jsonify
from flask_cors import CORS

app = Flask(__name__)
app.config['JSON_AS_ASCII'] = False  # 确保中文正常显示
# 启用跨域支持
CORS(app)


@app.route('/api', methods=['GET'])
def test_api():
    # 获取参数 click
    click_param = request.args.get('click')

    # 这里可以添加对 click 参数的处理逻辑(如果需要的话)
    if click_param:
        print(f"接收到 click 参数: {click_param}")

    # 返回固定的 JSON 格式
    response = {
        "status": 1,
        "message": "成功"
    }
    return jsonify(response)


if __name__ == '__main__':
    # 运行在 5555 端口
    app.run(debug=False, host='0.0.0.0', port=5555)

start.sh文件,启动脚本文件

#!/bin/bash
cd /A03FlaskHttp
source venv/bin/activate
gunicorn -w 4 -b 127.0.0.1:5555 -D test:app
echo "Flask app started on 127.0.0.1:5555"

stop.sh文件,停止脚本

#!/bin/bash
cd /A03FlaskHttp

if [ -f gunicorn.pid ]; then
    PID=$(cat gunicorn.pid)
    kill $PID
    rm -f gunicorn.pid
    echo "Flask app (PID: $PID) stopped."
else
    echo "No gunicorn.pid file found."
    PIDS=$(pgrep -f "gunicorn.*test:app")
    if [ ! -z "$PIDS" ]; then
        echo "Found running gunicorn processes: $PIDS"
        echo "Stopping with pkill..."
        pkill -f "gunicorn.*test:app"
    else
        echo "No running gunicorn process found."
    fi
fi

案例注意事项

在上面的py文件中可以看到我们的服务将会启动于5555端口,因此首先得开启5555端口

在上面的sh脚本文件中可以看到幽络源这里主要是操作的服务器根目录下的A03FlaskHttp目录,若自己的目录名不一样需修改文件或者你的目录名

上传文件并创建相关环境

如图幽络源这里将三个文件放置于服务器根目录下自建的A03FlaskHttp目录中

dafd12c9-5308-4e6a-a1de-1adca76c440d

 

如图,确保服务器具备Python3环境,并通过命令 pip3 install virtualenv 下载虚拟环境库

c21ecdf6-b809-468e-91d1-babb416ee606

然后通过如下两条命令创建虚拟环境、激活虚拟环境,如图

virtualenv venv
source venv/bin/activate

5495df3f-8feb-489b-a932-df32a82f9f5e

然后执行如下命令下载该案例所需库

pip install flask flask_cors 
pip install gunicorn

20b78d05-1825-444e-9cb6-979d891c4939

启动进程

因为我的test.py就在/A03FlaskHtpp目录,直接执行 sh start.sh 即可启动,如图

然后还可以通过如下两条命令查看我们是否启动成功

ps aux | grep gunicorn

netstat -tulnp | grep :5000

71a9334e-fd4a-4141-9452-71b358005861

用宝塔配置反向代理与Https(重点)

如图我们在PHP项目下点击创建站点,然后我是用的二级域名做测试,这里的根目录注意了,是我们 flask 所在的目录,然后PHP不用,直接选择纯静态

1f1150ba-25d8-4777-b0f6-e68efb5dccd8

在设置中为其添加我们的证书并保存以开启https

46435087-60e5-4e29-83c1-8cdadb11e9c0

再在反向代理中添加反向代理,注意,这里的目标URL是我们Flask内部的URL,因此填写http://127.0.0.1:5555,注意端口要带上,然后发送域名直接填写$host即可,代理名称随便写,然后确定

3a86d694-4f2a-4e27-bc43-c379617499af

最后测试

最后,我们直接通过我们 绑定的域名+接口路径 进行访问,即可看到接口的返回信息

29672144-c802-4f39-9425-cc01262d09d6

 

THE END
喜欢就支持一下吧
分享