ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Systemd 部署 Uvicorn‑FastAPI 生产服务

Systemd 部署 Uvicorn‑FastAPI 生产服务 uvicorn 详细介绍-CSDN博客nohup 后台启动 uvicorn仅测试 / 临时运行-CSDN博客简介uvicorn 新版本已经移除 daemon守护进程参数不支持自带后台运行。生产环境推荐使用 Linux systemd 管理 FastAPI 服务具备开机自启、程序异常自动重启、统一日志管理、服务状态管控能力。项目使用 Python 虚拟环境无需手动执行source activate激活环境直接调用虚拟环境内的 uvicorn 可执行文件。注意systemd 配置中所有路径必须使用绝对路径禁止相对路径。1、编写 systemd 服务配置文件编辑 service 单元文件vim /etc/systemd/system/backend.service模板内容替换为你服务器上真实的绝对路径[Unit] DescriptionFastAPI Backend Service Afternetwork.target [Service] Userroot # 项目根目录绝对路径 WorkingDirectory/opt/backend # 直接调用虚拟环境内的uvicorn不要source激活虚拟环境 ExecStart/opt/backend/venv/bin/uvicorn app.main:app --host 0.0.0.0 --port 8000 # 进程异常自动重启 Restartalways # 崩溃后等待3秒重启 RestartSec3 [Install] # 系统开机时启动该服务 WantedBymulti-user.target参数说明WorkingDirectory项目所在目录app.main需要在此目录下可以找到。ExecStart使用虚拟环境 bin 目录下的 uvicorn 二进制程序。Restartalways无论程序 crash、被 kill都会自动重新拉起服务。RestartSec3服务停止后延迟 3 秒再重启。2、systemd 常用管理命令修改完 service 文件后必须重载 systemd 配置# 重载配置 systemctl daemon-reload # 启动服务 systemctl start backend # 设置开机自启 systemctl enable backend # 查看服务运行状态 systemctl status backend # 实时跟踪服务日志 journalctl -u backend -f # 修改代码后重启服务 systemctl restart backend # 停止服务 systemctl stop backend3、排错技巧服务启动失败优先执行systemctl status backend看报错信息排查端口占用ss -tulnp | grep 8000不要在 service 里写source ../venv/bin/activatesystemd 不支持 shell source 操作直接调用 venv/bin 下可执行文件。对比说明对比 nohup 临时方案nohup 适合测试进程崩溃不会自动恢复、服务器重启服务丢失。systemd 适合正式上线保证服务稳定性。生产额外建议uvicorn 建议搭配 gunicorn 多工作进程使用不建议单 uvicorn 直接对外暴露公网前面搭配 Nginx 反向代理。
返回列表