36 在云平台上部署FastAPI应用
在上一篇中,我们探讨了如何使用Docker来部署FastAPI应用。这种容器化的方法非常灵活,但如果你希望简化部署流程,或者希望利用云服务提供的可扩展性与高可用性,云平台部署将是一个极佳的选择。在本篇中,我们将详细讨论如何在云平台上部署FastAPI应用。
选择云平台
常见的云平台有很多,包括:
- AWS(Amazon Web Services)
- Google Cloud Platform(GCP)
- Microsoft Azure
- Heroku(适合快速部署)
- DigitalOcean
对于本教程,我们将以 Heroku 为例,它非常友好且适合小型应用的快速部署。
第一步:准备FastAPI应用
假设我们之前已经有一个简单的FastAPI应用,代码如下:
1 | from fastapi import FastAPI |
将以上代码保存为 main.py
文件。
第二步:创建依赖描述文件
在Heroku上运行Python应用需要一个依赖文件,通常为 requirements.txt
文件。你可以使用以下命令自动生成:
1 | pip freeze > requirements.txt |
确保 requirements.txt
文件中包含 fastapi
和 uvicorn
这两个必要的库。例如:
1 | fastapi==0.75.0 |
此外,我们需要定义一个 Procfile
文件,以告诉Heroku如何启动应用。创建一个名为 Procfile
的文件,内容如下:
1 | web: uvicorn main:app --host 0.0.0.0 --port ${PORT:-5000} |
在上面的命令中,main
是包含 FastAPI 应用的 Python 文件名(不带 .py
后缀),app
是 FastAPI 应用实例的名字。
第三步:创建Heroku账号并安装Heroku CLI
访问 Heroku官网 注册一个账户,并按以下步骤安装Heroku CLI:
- 下载并安装Heroku CLI:Heroku CLI下载链接
- 安装后,使用以下命令登录:
1 | heroku login |
第四步:创建Heroku应用
通过以下命令在 Heroku 上创建一个新的应用:
1 | heroku create my-fastapi-app |
my-fastapi-app
可以替换为你想要的任何应用名称,全局唯一。
第五步:部署FastAPI应用
接下来,我们将代码提交到Heroku。根据以下步骤操作:
- 初始化Git仓库(如果还未初始化):
1 | git init |
- 添加文件并提交:
1 | git add . |
- 将Heroku远程仓库添加到本地Git:
1 | heroku git:remote -a my-fastapi-app |
- 推送代码到Heroku:
1 | git push heroku master |
在推送过程中,Heroku会自动检测到你的 requirements.txt
和 Procfile
,并会安装依赖。
第六步:访问你的应用
一旦部署完成,Heroku会提供应用的URL,可以通过以下命令获取:
1 | heroku open |
在浏览器中打开后,你应该能看到返回的 JSON 响应如:
1 | {"Hello": "World"} |
你也可以通过访问 /items/1?q=foo
来测试不同的API路由。
第七步:监控与日志
你可以通过以下命令查看Heroku上的实时日志,以监控应用的运行状况:
1 | heroku logs --tail |
小结
在本教程中,我们介绍了如何在云平台(以Heroku为例)上部署FastAPI应用。我们从创建FastAPI应用开始,经过创建必要的依赖文件,最终实现应用的部署和访问。这一过程展示了在云环境中快速上线应用的便利性,未来我们将讨论如何在其他云平台(如AWS、GCP等)上部署FastAPI应用。
36 在云平台上部署FastAPI应用