自动伸缩虚拟机上的 Python / Pip 部署
在云端自动伸缩组(如 AWS ASG、Azure VMSS、GCP MIG)中的虚拟机(VM)上,将 open-webui serve 部署为由 systemd 管理的系统服务进程。
前提条件
在继续之前,请确保您已配置好共享基础设施组件要求——PostgreSQL、Redis、向量数据库、共享存储和内容提取服务。
何时选择此部署模式
- 您的组织拥有极其成熟的基于虚拟机的 IT 基础设施和运维管理实践。
- 外部监管或企业合规性政策强制要求对操作系统级别拥有直接控制权。
- 您的运维团队对容器化编排的经验有限,但拥有深厚的 Linux 系统管理技能。
- 您希望获得一种极简且直接的部署,而不想引入多余的容器编排开销。
架构图
安装配置
在每一台虚拟机上使用带有 [all] 附加项的 pip 命令进行安装(这将自动包含 PostgreSQL 驱动程序):
pip install open-webui[all]创建一个 systemd 配置文件(Unit file)以管理该服务进程:
[Unit]
Description=Open WebUI
After=network.target
[Service]
Type=simple
User=openwebui
EnvironmentFile=/etc/open-webui/env
ExecStart=/usr/local/bin/open-webui serve
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target将您的环境变量配置保存在 /etc/open-webui/env 文件中(参见 核心关键配置)。
水平扩展策略
- 水平扩展:配置您的云端自动伸缩组,使其根据 CPU 利用率或请求量来自动添加或移去虚拟机实例。
- 健康检查:将您的负载均衡器健康检查探针指向
/health接口(在服务正常 运行时返回 HTTP 200)。 - 每台虚拟机仅运行一个进程:保持
UVICORN_WORKERS=1,并全权交由云端自动伸缩器管理容量。这可以极大简化内存核算,并避免默认向量数据库的多进程 fork 安全问题。 - 粘性会话:配置您的负载均衡器使用基于 Cookie 的会话亲和性(Sticky sessions),以确保 WebSocket 连接能够保持路由到相同的虚拟机实例。
关键注意事项
| 注意事项 | 细节详情 |
|---|---|
| 系统补丁 | 您需要全权负责操作系统更新、安全漏洞补丁和 Python 运行时环境的管理维护。 |
| Python 环境 | 锁定您的 Python 版本(推荐使用 3.11),并建议使用虚拟环境(venv)或专用的系统级安装。 |
| 持久化存储 | 使用对象存储(如 S3)或共享文件系统(如 NFS),因为自动伸缩组中的虚拟机不共享本地磁盘文件系统。 |
| Tika 服务 | 在每台虚拟机上启动本地 Tika 服务,或部署为一个集中的共享微服务。共享服务模式能显著简化运维。 |
| 版本升级 | 将自动伸缩组的实例数缩容至 1 台,运行软件包升级命令 (pip install --upgrade open-webui),等待 数据库迁移完全顺利结束后,再将实例扩容还原。 |
有关 pip 安装的一些基础入门知识,请参阅我们的 快速入门指南。
在规划企业级部署时需要帮助? 我们的团队正与全球各地的组织紧密合作,设计并实施生产级的 Open WebUI 环境。