很长一段时间我在寻找如何优雅地部署 Python 的 Flask/Fastapi 项目,最终找到了 Vercel。Vercel 的优势是部署简单,这个过程不需要关心服务器、域名、https 证书这些琐事。
本文以部署 Flask 为例进行部署,Fastapi 的部署方式类似。
创建项目,目录结构如下:
|-- vercel-flask-demo
|-- api
|-- app.py
|-- requirements.txt
|-- vercel.json
vercel 会自动将 api 目录下的文件识别为 Functions,将 Flask 的主程序放在 api 目录下。
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello, World!"
将项目依赖第三方包写入 requirements.txt 文件,vercel 会在部署时根据它安装依赖包。
Flask==3.0.3
将所有路由都指向 Flask 主程序。如果没有这个配置,部署之后会显示 404 错误。
{
"rewrites": [
{ "source": "/(.*)", "destination": "/api/app" }
]
}
准备工作到这里就结束了,下面开始进行部署。
首先确保你已有 Github 仓库并将第二步创建的项目提交到了 Github 里面。
如果你的项目需要返回 restful api、使用 html 模板动态渲染、查询数据库等,
可以参考这个功能更丰富的示例: vercel-python-flask-demo
如果你不会操作 Github,可以使用 vercel-cli 命令行工具进行部署。
参考 官方文档安装 vercel-cli 在本机安装 vercel 命令行工具。
vercel dev
$ vercel dev
dev 命令在开发时经常使用,第一次执行命令会确认一些信息,都按回车使用默认回答就可以。
如果使用 vercel 部署 github 项目失败,你的调试过程是: 修改代码,提交到 github,然后触发 vercel 部署,再验证是否部署成功,这个过程有点繁琐。
使用 vercel dev 相当于在本机模拟这个过程,如果 vercel dev 能把项目跑起来,那么提交到 github 部署也会成功。
vercel --prod
$ vercel --prod
这个命令是将当前目录部署到 vercel 上,部署成功后终端会显示一个访问域名。
↶ 返回首页