华为云ECS一键部署Dify:构建可视化LLM应用开发平台
1. 项目概述为什么选择Dify与华为云最近在折腾AI应用开发发现很多朋友卡在了第一步环境部署。模型推理、API对接、知识库构建、工作流编排……每个环节都能劝退一波人。这时候一个能把这些能力“打包”起来的平台就显得格外重要。Dify就是这个领域的明星选手它把大语言模型LLM的应用开发流程做了可视化封装让你能像搭积木一样构建AI应用而无需从零开始写复杂的后端代码。但Dify本身只是一个软件你需要一个地方来运行它。自己买服务器要操心网络、安全、运维。用海外云服务延迟、合规性又是问题。所以我把目光投向了华为云。它提供稳定可靠的云服务器ECS、高速的对象存储OBS、以及灵活的容器服务CCE非常适合作为这类AI平台的“地基”。更重要的是对于国内开发者而言华为云的访问速度和本地化服务支持能省去很多不必要的麻烦。这个项目就是把我从零开始在华为云上部署Dify并配置成一个可用AI开发平台的完整过程记录下来。目标很明确通过一个尽可能自动化的“一键部署”思路降低技术门槛让开发者能快速拥有一个属于自己的、功能完整的LLM应用开发环境。无论你是想快速验证一个AI点子还是为团队搭建一个内部的智能体开发平台这套流程都能提供直接的参考。2. 核心设计思路与方案选型部署一个像Dify这样的复杂应用尤其是涉及到AI模型服务不能简单地“点一下”就完事。我们需要一个清晰、可靠且易于维护的架构。我的核心思路是“环境标准化、部署自动化、服务解耦化”。2.1 为什么是“基于华为云”首先我们需要一个运行环境。方案无非几种本地物理机、虚拟机、公有云、私有云。本地部署最大的问题是公网访问。你需要处理内网穿透、固定IP或者动态域名对于需要对外提供服务的AI应用来说配置复杂且网络质量无法保证。传统虚拟机/VPS需要自己安装操作系统、配置安全组、管理依赖每一步都是手动操作容易出错且不易复制。容器化部署这是当前云原生应用的标准。通过Docker和Kubernetes可以实现应用及其依赖的打包、分发和一致性运行。华为云提供了完美的容器化舞台弹性云服务器ECS作为我们的“宿主机”运行Docker和Docker Compose。选择华为云ECS看中的是其稳定的性能、丰富的规格选择和便捷的控制台管理。容器镜像服务SWR我们可以将部署好的Dify环境连同其配置打包成自定义的Docker镜像推送到SWR。这样在任何一台华为云ECS上拉取镜像就能快速启动一个完全相同的环境实现了真正的“一键部署”潜力。对象存储服务OBSDify的知识库功能需要存储大量的文档PDF、Word、TXT等。将这些文件存储在ECS本地磁盘上是危险且不专业的。使用OBS可以将文件存储与计算分离知识库文件上传到OBS的特定桶Bucket中Dify通过API进行读取这样即使ECS实例重置知识库数据也不会丢失。云容器引擎CCE对于更复杂、需要高可用和弹性伸缩的生产环境我们可以将Dify部署到Kubernetes集群CCE中。但为了简化初次部署本项目先采用单机Docker Compose方案后续可以平滑迁移至CCE。2.2 Dify的部署模式选择Dify官方提供了几种部署方式Docker Compose、Shell脚本、Kubernetes Helm Chart。Shell脚本虽然号称一键但往往隐藏了太多细节对环境要求严格出问题时排查困难。Kubernetes功能强大适合生产级集群但学习曲线陡峭对于只想快速用起来的个人或小团队来说过于复杂。Docker Compose这是本次选择的方案。它通过一个docker-compose.yml文件清晰地定义了Dify所需的所有服务Web前端、后端API、数据库等及其关系、配置和网络。我们能够完全掌控整个部署栈修改配置直观并且可以轻松地在单台服务器上启动所有服务。它是在简易性和可控性之间最好的平衡点。2.3 “一键部署”脚本的设计哲学所谓的“一键”并不是一个魔法黑盒。我设计的部署脚本本质上是将一系列标准化的手动操作步骤用Bash脚本串联起来并增加了环境检查、依赖安装、配置引导和状态验证等环节。其核心流程如下环境预检检查服务器操作系统、内核版本、内存、磁盘空间确认Docker和Docker Compose是否已安装。依赖安装如果未安装Docker等脚本自动安装。配置生成交互式引导用户输入关键配置如数据库密码、外部模型API密钥如OpenAI、国内大模型、OBS访问密钥等并自动生成对应的环境变量文件(.env)。服务启动执行docker-compose up -d拉取镜像并启动所有容器。健康检查等待服务启动后自动检查Web界面和API接口是否可访问并给出访问地址和初始账号信息。这样用户只需执行一条命令然后根据提示输入必要信息即可完成部署。脚本透明化了过程即使失败用户也能根据脚本输出的日志定位到具体哪一步出了问题。3. 华为云环境准备与配置实操在运行部署脚本之前我们需要在华为云上准备好基础资源。这一步是后续所有操作的基石。3.1 创建并配置弹性云服务器ECS登录华为云控制台进入ECS服务。选择地域与可用区选择一个离你目标用户近的地域例如“华北-北京四”。对于高可用要求不高的个人项目单可用区即可。选择镜像推荐使用Ubuntu 22.04 Server或CentOS 7.9。这两个系统社区支持完善Docker兼容性好。本次以Ubuntu 22.04为例。选择规格Dify本身资源消耗不大但其运行的LLM模型是资源消耗大户。如果只使用远程API如调用OpenAI那么2核4GB的ECS就足够如s6.large.2。但如果你计划在本地部署开源模型如Llama 3、Qwen等那么需要至少4核8GB如s6.xlarge.2或更高规格具体取决于模型参数量。存储盘建议40GB以上用于存放Docker镜像和日志。配置网络选择或新建一个VPC和子网。务必分配弹性公网IP这是从外网访问你Dify服务的关键。带宽按需选择初期测试1-5Mbps即可。设置安全组这是服务器的防火墙必须谨慎配置。新建一个安全组例如命名为dify-sg。添加入方向规则规则1允许TCP 22端口SSH源地址可以设置为你的办公IP或0.0.0.0/0允许任何IP有风险仅限测试。规则2允许TCP 80端口HTTP源地址0.0.0.0/0。规则3允许TCP 443端口HTTPS源地址0.0.0.0/0如果你后续配置了SSL证书。规则4允许TCP 3000端口Dify默认前端端口源地址0.0.0.0/0。规则5允许TCP 5001端口Dify后端API端口源地址0.0.0/0。设置登录密钥创建或导入一个SSH密钥对例如dify-key.pem这是安全登录ECS的唯一方式比密码更安全。创建完成后记下ECS的弹性公网IP地址。使用SSH客户端如Termius, FinalShell或系统终端通过密钥连接服务器。注意生产环境强烈建议将源地址设置为特定的IP段而不是0.0.0.0/0并且尽快配置域名和SSL证书HTTPS将服务端口从3000/5001迁移到80/443。3.2 准备对象存储OBS用于知识库进入华为云OBS控制台。创建桶Bucket桶名全局唯一例如dify-knowledge-你的名字。区域选择与ECS相同的地域以获取最低延迟。存储类别选择“标准存储”桶策略选择“私有”。创建访问密钥AK/SK在华为云“我的凭证”页面创建一对访问密钥Access Key ID和Secret Access Key。这组密钥将用于让Dify服务端程序以编程方式访问OBS桶。配置桶策略可选但推荐为了更精细的权限控制可以创建一个自定义桶策略仅允许特定的ECS实例角色或指定的AK/SK对桶内knowledge/前缀下的对象进行读写。但对于初次部署可以先使用AK/SK方式。3.3 服务器基础环境配置通过SSH登录后操作登录到你的ECS后首先进行系统更新和基础工具安装。# 更新软件包列表和系统 sudo apt update sudo apt upgrade -y # 安装常用工具 sudo apt install -y curl wget vim git net-tools4. 部署脚本详解与核心环节实现现在我们进入核心的部署环节。我将部署过程封装成了一个脚本deploy_dify_on_huaweicloud.sh。你可以直接下载并运行它。4.1 部署脚本源码解析以下是脚本的核心部分我将其拆解并加上详细注释。#!/bin/bash set -e # 遇到任何错误即停止执行 echo echo Dify on Huawei Cloud 一键部署脚本 v1.0 echo # 1. 环境检查与依赖安装 echo [1/5] 检查系统环境... # 检查是否为Ubuntu/CentOS OS_ID$(grep ^ID /etc/os-release | cut -d -f2 | tr -d ) if [[ $OS_ID ! ubuntu $OS_ID ! centos ]]; then echo 错误本脚本仅支持 Ubuntu 或 CentOS 系统。 exit 1 fi # 检查Docker if ! command -v docker /dev/null; then echo Docker 未安装开始安装... if [[ $OS_ID ubuntu ]]; then curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh sudo usermod -aG docker $USER # 将当前用户加入docker组避免每次用sudo echo 请注销并重新登录或执行 newgrp docker 使组更改生效。 exit 0 # 需要重新登录脚本终止 else # CentOS安装步骤略原理类似 echo CentOS Docker安装步骤请参考官方文档。 exit 1 fi else echo Docker 已安装版本: $(docker --version) fi # 检查Docker Compose if ! command -v docker-compose /dev/null; then echo Docker Compose 未安装开始安装... # 安装Docker Compose v2 sudo curl -L https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose sudo chmod x /usr/local/bin/docker-compose # 创建软链接以便直接使用 docker compose 命令 sudo ln -sf /usr/local/bin/docker-compose /usr/bin/docker-compose fi echo Docker Compose 已安装版本: $(docker-compose --version) # 2. 获取Dify官方部署文件 echo [2/5] 下载Dify部署文件... DEPLOY_DIR./dify-deploy if [ -d $DEPLOY_DIR ]; then echo 部署目录已存在是否覆盖(y/N) read -r OVERWRITE if [[ $OVERWRITE ! y $OVERWRITE ! Y ]]; then echo 操作取消。 exit 0 fi rm -rf $DEPLOY_DIR fi git clone https://github.com/langgenius/dify.git $DEPLOY_DIR cd $DEPLOY_DIR/docker # 3. 交互式配置生成 echo [3/5] 生成环境配置文件 (.env) ... # 复制模板文件 cp .env.example .env # 使用一个简单的文本编辑器sed来修改关键配置更友好的方式是使用dialog或whiptail这里简化处理 echo 请依次配置以下关键信息直接回车将使用默认值或留空 # 设置数据库密码 read -p 请输入 PostgreSQL 数据库密码 (默认: difyai123): DB_PASSWORD DB_PASSWORD${DB_PASSWORD:-difyai123} sed -i s#^DB_PASSWORD.*#DB_PASSWORD$DB_PASSWORD# .env # 设置Redis密码 read -p 请输入 Redis 密码 (默认: difyai123): REDIS_PASSWORD REDIS_PASSWORD${REDIS_PASSWORD:-difyai123} sed -i s#^REDIS_PASSWORD.*#REDIS_PASSWORD$REDIS_PASSWORD# .env # 配置外部模型API以OpenAI为例 echo --- 配置大模型API --- read -p 请输入 OpenAI API Key (留空则跳过): OPENAI_API_KEY if [ -n $OPENAI_API_KEY ]; then sed -i s#^OPENAI_API_KEY.*#OPENAI_API_KEY$OPENAI_API_KEY# .env fi # 可以继续添加其他模型配置如Azure, Anthropic等 # 配置华为云OBS用于知识库文件存储 echo --- 配置华为云OBS --- read -p 是否配置华为云OBS作为知识库存储(y/N): USE_OBS if [[ $USE_OBS y || $USE_OBS Y ]]; then read -p 请输入 OBS 访问密钥(AK): OBS_AK read -p 请输入 OBS 秘密密钥(SK): OBS_SK read -p 请输入 OBS 桶名称 (Bucket Name): OBS_BUCKET read -p 请输入 OBS 终端节点 (Endpoint如 obs.cn-north-4.myhuaweicloud.com): OBS_ENDPOINT read -p 请输入 OBS 区域 (Region如 cn-north-4): OBS_REGION # 在.env文件中追加OBS配置 cat .env EOF # Huawei Cloud OBS Configuration STORAGE_TYPEobject S3_ENDPOINThttps://${OBS_ENDPOINT} S3_REGION${OBS_REGION} S3_BUCKET_NAME${OBS_BUCKET} S3_ACCESS_KEY${OBS_AK} S3_SECRET_KEY${OBS_SK} S3_FORCE_PATH_STYLEfalse EOF echo OBS配置已添加。知识库文件将存储于华为云OBS。 else echo 未配置OBS知识库文件将存储在服务器本地不推荐生产环境。 fi # 4. 启动Dify服务 echo [4/5] 启动Dify服务 (这可能需要几分钟取决于网络速度)... sudo docker-compose up -d # 5. 服务健康检查与信息输出 echo [5/5] 等待服务启动并检查状态... sleep 30 # 等待容器初步启动 # 检查关键容器状态 if sudo docker-compose ps | grep -q Up; then echo ✅ Dify 服务启动成功 ECS_IP$(curl -s ifconfig.me) # 获取ECS公网IP也可手动替换 echo echo 访问信息 echo 前端界面: http://${ECS_IP}:3000 echo 后端API: http://${ECS_IP}:5001 echo 初始账号: admindify.ai echo 初始密码: 请查看容器日志获取或执行以下命令 echo sudo docker logs dify-docker-web-1 21 | grep password echo echo echo 接下来请打开浏览器访问前端界面使用初始账号登录。 echo 登录后请务必在【设置】-【团队成员】中修改admin密码 else echo ❌ 服务启动可能存在问题。请检查日志 echo sudo docker-compose logs exit 1 fi4.2 关键配置项深度解析脚本中交互式配置的部分是核心理解每个配置的作用至关重要数据库密码 (DB_PASSWORD)Dify使用PostgreSQL存储应用配置、工作流定义、对话历史等核心元数据。一个强密码是必须的。Redis密码 (REDIS_PASSWORD)用于缓存会话、任务队列等提升性能。大模型API密钥这是Dify的“大脑”。你需要至少配置一个可用的LLM API。OpenAI填入OPENAI_API_KEY。这是最通用的选择。国内模型如通义千问、智谱GLM、月之暗面Kimi等。需要在Dify的Web界面中进入“模型供应商”设置进行配置通常需要API Key和自定义的Base URL。本地模型如果你在ECS上部署了Ollama或vLLM等本地推理服务可以将API地址指向http://localhost:11434等。华为云OBS配置这是将知识库文件存储从服务器本地分离的关键。STORAGE_TYPEobject告诉Dify使用对象存储。S3_ENDPOINT华为云OBS的REST API地址格式为https://obs.region.myhuaweicloud.com。S3_BUCKET_NAME你创建的桶名。S3_ACCESS_KEYS3_SECRET_KEY你的AK/SK。重要确保该AK/SK具有对应OBS桶的读写权限PutObject,GetObject,ListBucket等。4.3 执行部署与验证将上述脚本保存到你的ECS服务器例如deploy_dify.sh。赋予执行权限并运行chmod x deploy_dify.sh ./deploy_dify.sh跟随脚本提示输入数据库密码、OBS配置等信息。脚本运行完毕后如果成功你会看到访问地址和初始账号信息。打开浏览器访问http://你的ECS公网IP:3000。使用脚本输出的初始账号登录。首次登录后立即修改admin用户密码路径左下角头像 - “设置” - “团队成员” - 编辑admin用户 - 修改密码。5. 部署后配置与核心功能上手成功登录Dify后才算真正开始。平台界面清爽但功能强大。我们快速过一下核心功能的配置和使用。5.1 配置模型供应商这是让Dify“活”起来的第一步。进入“设置” - “模型供应商”。OpenAI如果你在.env文件里配置了OPENAI_API_KEY这里应该已经自动出现了。检查状态是否为“正常”。添加国内模型以“通义千问”为例。点击“添加模型供应商”选择“自定义”。供应商名称Qwen模型类型选择LLM文本生成和Text Embedding文本向量化用于知识库。在“LLM”配置中模型名称qwen-max(或其他你拥有API的模型名)模型类型QwenAPI Key填入从阿里云灵积平台获取的API Key。API Basehttps://dashscope.aliyuncs.com/compatible-mode/v1在“Text Embedding”配置中模型名称text-embedding-v2API Key同上。API Base同上。保存后点击“校验”状态应为“正常”。5.2 创建你的第一个AI应用智能客服助手我们通过一个“电商客服助手”的案例快速体验Dify的工作流。创建应用在“应用”页面点击“创建应用”选择“对话型应用”命名为“电商智能客服”。配置提示词Prompt这是应用的核心逻辑。在“提示词编排”页面系统预置了对话开场白和上下文变量。我们可以这样设计你是一个专业的电商客服助手负责回答用户关于订单、物流、商品、退换货的问题。 请根据以下已知信息用简洁、友好、专业的中文回答用户的问题。如果无法从中得到答案请说“根据现有信息我暂时无法回答这个问题您可以联系人工客服获取进一步帮助。” 已知信息 {context} 用户问题 {query}这里的{context}和{query}是变量会在工作流中被填充。连接知识库在左侧边栏点击“知识库”创建知识库例如“电商客服QA”。选择“文件上传”模式将你的产品手册、常见问题文档PDF、Word、TXT上传。注意如果你配置了OBS文件实际上传到了华为云OBS而不是服务器本地。上传后点击“处理”Dify会自动将文档切片、向量化并存入向量数据库Weaviate已在Docker Compose中部署。构建工作流这是Dify最强大的部分。切换到“工作流”视图。从左侧拖入节点开始节点连接“用户问题”变量。知识库检索节点连接到“开始”节点。选择我们刚创建的“电商客服QA”知识库将“查询文本”关联到“用户问题”变量。LLM节点连接到“知识库检索”节点。选择配置好的模型如Qwen。在“系统提示词”中填入我们刚才编写的客服提示词。将“上下文”变量关联到知识库节点的“内容”输出将“问题”关联到“用户问题”。结束节点连接到LLM节点将LLM的“回复文本”作为最终输出。这样一个简单的“检索增强生成RAG”工作流就搭建完成了。它实现了用户提问 - 从知识库找相关资料 - 将资料和问题一起交给LLM - 生成基于资料的精准回答。发布与测试点击右上角“发布”。发布后你可以直接在右侧的聊天窗口测试也可以获得一个可嵌入的Web链接或API接口。5.3 配置自定义域名与HTTPS提升安全性长期使用IP端口访问既不专业也不安全。我们需要绑定域名并启用HTTPS。购买域名并解析在任意域名服务商处购买域名并添加一条A记录将域名如dify.yourdomain.com指向你的ECS弹性公网IP。在ECS上安装Nginx作为反向代理sudo apt install -y nginx配置Nginx站点创建配置文件/etc/nginx/sites-available/dify。server { listen 80; server_name dify.yourdomain.com; # 替换为你的域名 location / { proxy_pass http://localhost:3000; # 转发到Dify前端 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } # 可选将API也通过子路径代理统一域名 location /api/ { proxy_pass http://localhost:5001/; proxy_set_header Host $host; # ... 其他proxy_set_header } }启用站点并测试sudo ln -s /etc/nginx/sites-available/dify /etc/nginx/sites-enabled/ sudo nginx -t # 测试配置语法 sudo systemctl reload nginx # 重载配置申请SSL证书可以使用Let‘s Encrypt的免费证书通过Certbot工具自动获取和配置。sudo apt install -y certbot python3-certbot-nginx sudo certbot --nginx -d dify.yourdomain.comCertbot会自动修改Nginx配置将HTTP重定向到HTTPS。修改Dify配置最后需要告诉Dify它正在被HTTPS代理。修改docker-compose.yml同级目录下的.env文件添加或修改# 告知Dify使用HTTPS CONSOLE_API_URLhttps://dify.yourdomain.com/api CONSOLE_WEB_URLhttps://dify.yourdomain.com APP_API_URLhttps://dify.yourdomain.com/api修改后重启Dify服务sudo docker-compose down sudo docker-compose up -d。现在你就可以通过https://dify.yourdomain.com安全地访问你的Dify平台了。6. 运维、监控与故障排查实录部署完成只是开始稳定的运行离不开日常的运维和问题排查。6.1 日常运维命令所有操作均在dify-deploy/docker目录下进行。查看服务状态sudo docker-compose ps查看实时日志sudo docker-compose logs -f [服务名]例如sudo docker-compose logs -f web查看前端日志。停止服务sudo docker-compose down启动服务sudo docker-compose up -d重启单个服务sudo docker-compose restart [服务名]更新Dify版本拉取最新代码git pull origin main拉取新镜像sudo docker-compose pull重启服务sudo docker-compose up -d注意大版本升级前务必备份数据库执行sudo docker-compose exec db pg_dump -U postgres dify backup_$(date %Y%m%d).sql。6.2 数据备份策略数据库备份定期备份PostgreSQL数据。可以写一个定时任务Cron Job。# 编辑crontab: crontab -e # 每天凌晨2点备份 0 2 * * * cd /path/to/dify-deploy/docker sudo docker-compose exec -T db pg_dump -U postgres dify /path/to/backups/dify_db_$(date \%Y\%m\%d).sql文件备份如果你使用了OBS华为云OBS本身提供多AZ冗余可靠性很高。你也可以开启OBS的版本控制功能防止文件误删。对于本地存储的配置文件整个dify-deploy目录也应定期打包备份到OBS或其他地方。6.3 常见问题与排查技巧以下是我在部署和使用过程中遇到的典型问题及解决方法问题现象可能原因排查步骤与解决方案访问http://IP:3000无法连接1. 安全组未放行3000端口。2. Docker Compose服务未成功启动。3. 服务器防火墙如ufw阻止了端口。1.检查安全组登录华为云控制台确认ECS安全组已添加入方向规则允许3000端口。2.检查服务状态sudo docker-compose ps查看所有容器是否为Up状态。若有Exit用sudo docker-compose logs [服务名]查看错误日志。3.检查服务器防火墙sudo ufw status若激活需sudo ufw allow 3000。登录后提示“模型不可用”或对话无响应1. 模型API密钥错误或余额不足。2. 网络问题导致无法访问模型API特别是国外API。3. 模型供应商配置错误。1.检查API密钥在Dify“模型供应商”设置中点击“校验”按钮。如果失败检查密钥是否正确、是否有余额。2.测试网络连通性在ECS上执行curl https://api.openai.com/v1/models替换为你的API地址看是否返回错误或超时。如果访问国外API慢可考虑配置代理或使用国内模型。3.检查配置确认API Base URL填写正确特别是自定义模型。知识库文件上传失败或处理卡住1. OBS配置错误权限不足。2. 文件格式不支持或文件过大。3. 向量数据库Weaviate服务异常。1.检查OBS配置确认.env中的AK/SK、Bucket名称、Endpoint正确无误。可以在ECS上用s3cmd或AWS CLI测试OBS连接。2.检查文件Dify支持常见文本格式单个文件建议不要超过50MB。过大的PDF或图片PDF解析较慢。3.检查Weaviate日志sudo docker-compose logs -f weaviate看是否有错误输出。应用运行一段时间后变慢或卡死1. 服务器内存或CPU资源耗尽。2. 数据库连接数过多或未优化。3. Redis内存不足。1.监控资源使用htop或docker stats命令查看容器资源占用。如果运行本地大模型内存消耗极大需升级ECS规格。2.优化数据库检查PostgreSQL连接数max_connections设置默认可能较低可在docker-compose.yml的db服务环境变量中调整。3.清理Redis可以定期重启Redis服务或检查是否有内存泄漏。Docker Compose up 时提示端口冲突3000或5001端口已被其他进程占用。使用sudo netstat -tlnp一个真实的踩坑记录有一次更新Dify版本后前端一直白屏。查看浏览器控制台发现大量/api请求404。排查发现新版本的CONSOLE_API_URL环境变量配置发生了变化而我的Nginx配置里代理/api的路径规则与新版不匹配。通过对比更新日志和查看容器内Nginx的配置最终修正了Nginx的location规则。教训是更新前务必阅读官方Release Notes并做好完整备份。7. 进阶基于CCE的弹性高可用部署展望对于企业级或高流量场景单机Docker Compose部署存在单点故障风险。我们可以将架构升级到华为云CCE云容器引擎。核心思路容器化将Dify的每个服务Web、API、Worker等构建成独立的Docker镜像推送至华为云SWR。Kubernetes编排编写Kubernetes的Deployment、Service、Ingress等YAML文件定义服务如何运行、如何暴露、如何伸缩。配置外置将数据库PostgreSQL、缓存Redis、向量数据库Weaviate和对象存储OBS全部使用华为云的云服务RDS for PostgreSQL, DCS for Redis, 自建Weaviate集群或使用云服务OBS不变实现计算与存储分离。部署到CCE在CCE中创建Kubernetes集群通过kubectl apply部署所有YAML文件。配置弹性伸缩HPA根据CPU/内存使用率自动增加或减少后端API和Worker的Pod数量。通过Ingress暴露服务使用CCE的Ingress绑定ELB弹性负载均衡并配置域名和HTTPS证书。这套架构能实现高可用多个Pod实例某个实例故障不影响服务。弹性伸缩应对流量高峰。易于管理通过Kubernetes统一管理生命周期。专业运维利用云服务的监控、告警、备份能力。当然这套方案的复杂度和成本也显著高于单机部署。建议在业务需求明确、团队具备一定K8s运维能力后再考虑迁移。部署完成后你的华为云ECS上就运行着一个功能完备的Dify AI应用开发平台了。从配置模型、构建知识库、设计工作流到最终发布为Web应用或API你都可以在这个可视化的平台上完成。它极大地降低了LLM应用开发的门槛让你能更专注于业务逻辑和创新本身。