Skip to content

部署与运行 ​

部署究竟做什么 ​

部署就是把应用放到持续运行的环境中,让预期客户端能够访问。除了代码,还涉及依赖、进程、网络、配置和持久数据。

先会本机运行,再研究服务器或容器部署。初学阶段不必立即掌握整套运维系统。

开发命令与运行命令 ​

开发时:

powershell
python -m uvicorn app.main:app --reload

服务器运行的基本命令:

powershell
python -m uvicorn app.main:app --host 0.0.0.0 --port 8000

安装标准依赖后,官方 CLI 也提供 fastapi run app/main.py。官方服务器启动说明

0.0.0.0 表示监听所有可用网络接口,它不是客户端通常应填写的访问地址。客户端访问实际服务器 IP 或域名。能够从外部访问,还取决于防火墙、端口映射和代理设置。

多工作进程 ​

例如根据环境选择:

powershell
python -m uvicorn app.main:app --host 0.0.0.0 --port 8000 --workers 2

多个工作进程可以利用多核并承载更多工作,但会增加内存使用,各进程不共享普通 Python 全局变量。进程数需要结合负载、内存、CPU 和部署平台确定。官方多工作进程说明

--reload 用于开发,不用于正式运行,也不要和 --workers 一起作为生产配置。数据库池、缓存和 lifespan 都要考虑进程数量。

依赖记录 ​

在干净的项目虚拟环境中可以保存已安装版本:

powershell
python -m pip freeze > requirements.txt
python -m pip install -r requirements.txt

第一条在本地记录依赖;第二条是在准备另一个环境时按文件安装。更完整的项目可以用 pyproject.toml 与锁文件管理,不必在刚入门时同时掌握所有工具。

从本机到服务器要考虑的事项 ​

方面需要解决的问题
配置数据库地址、密钥、允许来源从哪里读取
进程管理退出后谁来重启,机器重启后如何启动
HTTPS 与代理如何对外提供加密连接,代理头如何配置
数据库连接能力、迁移步骤、备份与恢复
日志如何定位一次请求的错误与耗时
健康检查如何判断进程存活与关键依赖是否可用
资源限制上传体积、请求超时、并发与工作进程

这些是部署时需要落实的能力,不是仅运行一条命令就自动拥有的功能。MySQL 使用独立数据库服务;如果将 MySQL 放在容器里,数据目录需要持久卷,备份与恢复也要单独落实。官方部署概念、官方容器部署说明

本章练习 ​

使用不带 --reload 的命令启动项目,检查接口文档、日志和数据库持久化。写清从零准备另一个本地环境的步骤。

过关标准:能解释监听地址、端口、模块入口、工作进程和数据持久化。