如何在 Ubuntu 服务器上手动部署 FastAPI?
How can I deploy FastAPI manually on a Ubuntu Server?
我有一个非常简单的 API(2 条路由),它只有 GET 请求,目前不需要任何身份验证或任何东西。
我想知道部署我的 API 用于生产的最佳和适当方法是什么。我无法使用 docker,想用服务器的方式来做。
所以我有几个问题:
- 在 fastapi 文档上它说你可以
uvicorn main:app --host 0.0.0.0 --port 80
但我在想这是否是正确的生产方式?我是否只输入该命令,API 会自动开始侦听服务器 IP 地址吗?这种方法是否有效,是否能够处理所有请求?或者我会改变什么让它更快?
- 我什么时候应该使用流程管理器?
- 我什么时候应该使用多个工人?它们提供了哪些好处?
- 我什么时候应该使用此处提到的 Gunicorn? https://www.uvicorn.org/deployment/#gunicorn
我对如何部署它有点困惑,因为一篇文章说这样做,另一篇文章说这样做。
如果出于某种原因您不喜欢使用 Docker-Ce,最好的方法是为您的应用程序创建一个 systemd-service
单元,这样每次出现故障时,systemd 都会尝试重新启动它,然后 运行 使用像 wgsi
或 gunicorn
.
这样的服务器
这个 link 也可以帮助系统服务:
https://blog.miguelgrinberg.com/post/running-a-flask-application-as-a-service-with-systemd
P.S 请注意,您为 gunicorn 提供服务的方式与 docker 或 systemd-service 并没有真正的关系,对于这两种方法,您都需要配置 gunicorn。
回答您的问题:
How can I deploy FastAPI manually on a Ubuntu Server?
您可以查看此视频教程,了解如何
Deploy FastAPI on Ubuntu
部署在单个 Ubuntu VM 中具有以下体系结构。
当您查看上面的 FastAPI 部署架构图时,它显示了单个 VM 部署。
在 Ubuntu VM 中,有两个系统服务,即 caddy.service
和 gunicorn.service
up 以及 运行。 gunicorn.service
运行 FastAPI 应用程序,caddy.service
在 uvicorn.workers.UvicornWorker
worker class 的帮助下将 Gunicorn 上的 FastAPI 应用程序 运行 作为反向代理公开。除此之外,我们的 FastAPI 在 databases 包的帮助下以异步方式与 PostgreSQL 数据库服务器通信,该包为 PostgreSQL 数据库提供简单的 asyncio
支持。
我有一个非常简单的 API(2 条路由),它只有 GET 请求,目前不需要任何身份验证或任何东西。
我想知道部署我的 API 用于生产的最佳和适当方法是什么。我无法使用 docker,想用服务器的方式来做。
所以我有几个问题:
- 在 fastapi 文档上它说你可以
uvicorn main:app --host 0.0.0.0 --port 80
但我在想这是否是正确的生产方式?我是否只输入该命令,API 会自动开始侦听服务器 IP 地址吗?这种方法是否有效,是否能够处理所有请求?或者我会改变什么让它更快? - 我什么时候应该使用流程管理器?
- 我什么时候应该使用多个工人?它们提供了哪些好处?
- 我什么时候应该使用此处提到的 Gunicorn? https://www.uvicorn.org/deployment/#gunicorn
我对如何部署它有点困惑,因为一篇文章说这样做,另一篇文章说这样做。
如果出于某种原因您不喜欢使用 Docker-Ce,最好的方法是为您的应用程序创建一个 systemd-service
单元,这样每次出现故障时,systemd 都会尝试重新启动它,然后 运行 使用像 wgsi
或 gunicorn
.
这个 link 也可以帮助系统服务:
https://blog.miguelgrinberg.com/post/running-a-flask-application-as-a-service-with-systemd
P.S 请注意,您为 gunicorn 提供服务的方式与 docker 或 systemd-service 并没有真正的关系,对于这两种方法,您都需要配置 gunicorn。
回答您的问题:
How can I deploy FastAPI manually on a Ubuntu Server?
您可以查看此视频教程,了解如何 Deploy FastAPI on Ubuntu
部署在单个 Ubuntu VM 中具有以下体系结构。
当您查看上面的 FastAPI 部署架构图时,它显示了单个 VM 部署。
在 Ubuntu VM 中,有两个系统服务,即 caddy.service
和 gunicorn.service
up 以及 运行。 gunicorn.service
运行 FastAPI 应用程序,caddy.service
在 uvicorn.workers.UvicornWorker
worker class 的帮助下将 Gunicorn 上的 FastAPI 应用程序 运行 作为反向代理公开。除此之外,我们的 FastAPI 在 databases 包的帮助下以异步方式与 PostgreSQL 数据库服务器通信,该包为 PostgreSQL 数据库提供简单的 asyncio
支持。