Files
AIclinicalresearch/docs/05-部署文档/03-Dify-ECS部署完全指南.md
HaHafeng 1b53ab9d52 feat(aia): Complete AIA V2.0 with universal streaming capabilities
Major Changes:
- Add StreamingService with OpenAI Compatible format
- Upgrade Chat component V2 with Ant Design X integration
- Implement AIA module with 12 intelligent agents
- Update API routes to unified /api/v1 prefix
- Update system documentation

Backend (~1300 lines):
- common/streaming: OpenAI Compatible adapter
- modules/aia: 12 agents, conversation service, streaming integration
- Update route versions (RVW, PKB to v1)

Frontend (~3500 lines):
- modules/aia: AgentHub + ChatWorkspace (100% prototype restoration)
- shared/Chat: AIStreamChat, ThinkingBlock, useAIStream Hook
- Update API endpoints to v1

Documentation:
- AIA module status guide
- Universal capabilities catalog
- System overview updates
- All module documentation sync

Tested: Stream response verified, authentication working
Status: AIA V2.0 core completed (85%)
2026-01-14 19:15:01 +08:00

1024 lines
29 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Dify ECS <20>函蔡摰<E894A1><E691B0><EFBFBD><EFBFBD><EFBFBD>
**<EFBFBD><EFBFBD><EFBFBD><EFBFBD>𧋦**: v1.1 (靽桀<E99DBD><E6A180>游𦶢<E6B8B8>滨蔭<E6BBA8>躰秤)
**<EFBFBD>𥕦遣<EFBFBD>園𡢿**: 2025-12-13
**<EFBFBD><EFBFBD><EFBFBD>𦒘耨霈?*: 2025-12-13
**<EFBFBD><EFBFBD><EFBFBD><EFBFBD>凒**: AIclinicalresearch 撟喳蝱 - Dify RAG <20>滚𦛚<E6BB9A>函蔡
**<EFBFBD><EFBFBD>霂餉<EFBFBD>?*: 餈鞟輕撌亦<E6928C><EFBFBD><E692A3><EFBFBD><EFBFBD>蝡臬<E89DA1><E887AC>穃極蝔见<E89D94>
**v1.1 <20>湔鰵<E6B994><EFBFBD>**:
- <20>?靽桀<E99DBD>嚗鑹edis <20>滨蔭隞?`localhost` <20>嫣蛹 `redis`<EFBFBD><EFBFBD><EFBFBD>霂荔<EFBFBD>
- <20>?<3F><EFBFBD>嚗锭wap <20><><EFBFBD>滨蔭甇仿炊嚗<E7828A><E59A97><EFBFBD>?OOM嚗?- <20>?靽格迤嚗𡁜撩靚<E692A9><EFBFBD><EFBFBD><E585B8>?docker-compose.yaml嚗<6C><E59A97><EFBFBD>?Nginx 蝵穃<E89DB5>嚗?- <20>?摰<><E691B0>嚗𡁏<E59A97><F0A1818F>𨀣<EFBFBD><F0A880A3><EFBFBD><E4BAA6><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Redis 餈墧𦻖憭梯揖<E6A2AF>?CORS <20>躰秤<E8BAB0><E7A7A4><EFBFBD>單䲮獢?
---
## <20><> <20><><EFBFBD><EFBFBD>
1. [銝箔<EFBFBD><EFBFBD><EFBFBD>㗇𥋘 ECS + Docker Compose](#銝箔<E98A9D><EFBFBD><E98A8B>㗇𥋘-ecs--docker-compose)
2. [<5B>函蔡<E587BD><EFBFBD><E59786>霄(#<23>函蔡<E587BD><EFBFBD><E59786>?
3. [<EFBFBD>滨蔭<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>](#<23>滨蔭<E6BBA8><E894AD><EFBFBD><EFBFBD><E79A9C>)
4. [ECS <20>滚𦛚<E6BB9A><EFBFBD>蝵孫(#ecs-<2D>滚𦛚<E6BB9A><EFBFBD>蝵?
5. [摰㕑<EFBFBD>甇仿炊](#摰㕑<E691B0>甇仿炊)
6. [<EFBFBD>滨蔭霂湔<EFBFBD>](#<23>滨蔭霂湔<E99C82>)
7. [<5B>臬𢆡銝𡡞<E98A9D><EFBFBD>(#<23>臬𢆡銝𡡞<E98A9D>霂?
8. [<5B>烐綉銝𡒊輕<F0A1928A>也(#<23>烐綉銝𡒊輕<F0A1928A>?
9. [<EFBFBD><EFBFBD><EFBFBD><EFBFBD>埝䰻](#<23><><EFBFBD><EFBFBD>埝䰻)
10. [瘜冽<E7989C>鈭钅★銝𡒊<E98A9D>敹䀉(#瘜冽<EFBFBD>鈭钅★銝𡒊<EFBFBD>敹?
---
## 銝箔<E98A9D><EFBFBD><E98A8B>㗇𥋘 ECS + Docker Compose
### <20>?<3F><EFBFBD><E8A9A8><EFBFBD>
#### 1. **<2A>唳旿<E594B3><E697BF><EFBFBD>銝𡡞<E98A9D><EFBFBD><E89D98><EFBFBD><EFBFBD>銵䔶<E98AB5>瑪嚗?*
```
<EFBFBD>?Dify 鈭烐<E988AD><E78390>?(SaaS)嚗𡁏㺭<F0A1818F><EFBFBD>隡惩<E99AA1>蝚砌<E89D9A><E7A08C><EFBFBD><E5AF9E>
<EFBFBD>?ECS <20>芸遣嚗𡁏㺭<F0A1818F>?100% <20>刻䌊撌梁<E6928C><E6A281><EFBFBD>鈭𤏸揭<F0A48FB8><EFBFBD>
```
**敶勗<E695B6>**嚗?- 銝厩睻<E58EA9>駁堺撖寧<E69296><E5AFA7>娍㺭<E5A88D>桀枂<E6A180><EFBFBD><EFBCB8><EFBFBD><EFBFBD>潛恣<E6BD9B>?- <20>典虾隞亙笆摰<E691B0>霂湛<E99C82>"<22>唳旿撠勗銁<E58B97>睲賑<E79DB2><E8B391><EFBFBD><EFBFBD><EFBFBD><E58A90>滚𦛚<E6BB9A><EFBFBD>嚗峕𧊋<E5B395>亙虾<E4BA99>函蔡<E587BD>典龫<E585B8><EFBFBD>蝵?
- 蝚血<E89D9A> PRD 銝剔<E98A9D><E58994><EFBFBD><EFBFBD><E996AC>嚗?<3F>唳旿 100% <20>砍𧑐"
#### 2. **<2A><><EFBFBD><E79285><E288AA><EFBFBD><EFBFBD><EFBFBD><E59A97><EFBFBD><EFBFBD><E58CA7>函蔡<E587BD><EFBFBD>嚗?*
```
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗㇊RD嚗?
<20><EFBFBD> SaaS <20><><EFBFBD>憭𡁶<E686AD><F0A181B6><EFBFBD>
<20><EFBFBD><><E89D98><EFBFBD><EFBFBD>蝵莎<E89DB5><E88E8E>駁堺<E9A781><E5A0BA><EFBFBD>嚗? <20><EFBFBD> <20>閙㦤<E99699><E3A6A4><EFBFBD>Windows/Mac嚗?```
**<2A>喲睸**嚗?- Dify 鈭烐<E988AD><E78390><EFBFBD>瘜閧<E7989C><E996A7><EFBFBD>鈭支<E988AD><EFBFBD><EFBFBD><EFBFBD>蝵烐<E89DB5>瘜閗<E7989C><E99697><EFBFBD><E4BA99><EFBFBD>嚗?- ECS + Docker Compose <20>臭誑<E887AD>湔𦻖<E6B994><EFBFBD><E69E8F>𣂼<EFBFBD><EFBFBD><E98B86><EFBFBD><E59A97>蝏坔龫<E59D94><EFBFBD><EFBFBD><E89D98><EFBFBD><EFBFBD>蝵?- <20>函緵<E587BD><EFBFBD><E587BD><EFBFBD><E59786><EFBFBD>嚗峕糓<E5B395>其蛹<E585B6>芣䔉<E88AA3><E49489><EFBFBD>銝𡁏芋撘誯唍頝?
#### 3. **<2A><><EFBFBD><EFBFBD>蝘餅<E89D98><E9A485>穿<EFBFBD><E7A9BF><EFBFBD>"隞亙<E99A9E><E4BA99><EFBFBD><E6BB9A>墧䔉"<22><><EFBFBD><EFBFBD>**
```
RAG 蝟餌<E89D9F><EFBFBD><EFBFBD><E5AE8F><EFBFBD><EFBFBD><EFBFBD>漲嚗? 1. <20><>﹝鋡怠<E98BA1><E680A0>?(Chunking)
2. <20><><EFBFBD>鋡怠<E98BA1><E680A0><EFBFBD> (Embedding)
3. 摮睃<E691AE><E79D83><EFBFBD><E785BE>唳旿摨?(Weaviate/Qdrant)
4. Dify 鈭烐<E988AD><E78390><EFBFBD><E288A0><EFBFBD><E785BE>唳旿敺<E697BF>𠗕<EFBFBD><EFBFBD>撖澆枂
```
**<2A><EFBFBD>**嚗? 銝芣<E98A9D><E88AA3><EFBFBD><E693A7><EFBFBD><EFBFBD><EFBFBD>芸遣嚗<E981A3><EFBFBD>賡𢒰銝湔<E98A9D><E6B994>厩䰻霂<E4B0BB><E99C82><EFBFBD><EFBFBD><EFBFBD><E996AC><EFBFBD><EFBFBD>隡𨬭<E99AA1><F0A8ACAD><EFBFBD><EFBFBD>啗圾<E59597><EFBFBD><E58390><EFBFBD><EFBFBD><EFBFBD><E595A3>?
#### 4. **蝵𤑳<E89DB5><F0A491B3><EFBFBD>銝擧<E98A9D><E693A7>?*
| 頝臬<E9A09D>撖寞<E69296> | Dify 鈭烐<E988AD><E78390>?| ECS <20>芸遣 |
|---------|-----------|---------|
| 蝵𤑳<E89DB5>頝臬<E9A09D> | SAE <20>?<3F><EFBFBD> <20>?Dify <20>?<3F><EFBFBD> <20>?SAE | SAE <20>?<3F><EFBFBD>鈭穃<E988AD>蝵?VPC) <20>?ECS |
| 撱嗆𧒄 | 100-300ms | 1-5ms |
| 瘚<><E7989A><EFBFBD>鞉𧋦 | 瘨<><E798A8><EFBFBD>蝵穃蒂摰?| <20><><EFBFBD><EFBFBD>滩晶 |
| 憭扳<E686AD>隞嗅<E99A9E><E59785>?| <20><EFBFBD>銝滨迅摰?| 瘥怎<E798A5>蝥批<E89DA5>摨?|
**敶勗<E695B6><E58B97>箸艶**嚗?- PKB 璅<E79285><E288AA><EFBFBD><EFBFBD>𤩺<EFBFBD><EFBFBD><E78DA2>隡?- ASL 璅<E79285><E288AA><EFBFBD>楛摨阡<E691A8>霂?(Deep Read)
- 憭折<E686AD><E68A98><EFBFBD><EFBFBD><EFB99D><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E686AD>
---
## <20>函蔡<E587BD><EFBFBD><E59786>?
```
<EFBFBD>𢞖<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F>? <20><EFBFBD>鈭?VPC (<28><EFBFBD><E494B6><EFBFBD>) <20>?<3F>? <20>?<3F>? <20>𢞖<EFBFBD><F0A29E96><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? <20>𢞖<EFBFBD><F0A29E96><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? <20>?<3F>? <20>? SAE (<28>𡒊垢) <20>?<3F>𣂼<EFBFBD>蝵爗<E89DB5> <20>? ECS (Dify <20>滚𦛚) <20>? <20>?<3F>? <20>? <20>? <20>? <20>? <20>?<3F>? <20>? Node.js <20>? <20>? <20>𢞖<EFBFBD><F0A29E96><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? <20>? <20>?<3F>? <20>? Backend <20>? <20>? <20>? Docker Compose: <20>? <20>? <20>?<3F>? <20>? <20>? <20>? <20>? - Dify API <20>? <20>? <20>?<3F>? <20>? <20>? <20>? <20>? - Weaviate (<28><EFBFBD>DB) <20>? <20>? <20>?<3F>? <20>? <20>? <20>? <20>? - Nginx (<28><EFBFBD><EFBFBD><E99A9E>) <20>? <20>? <20>?<3F>? <20>? <20>? <20>? <20><EFBFBD><E5A999><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? <20>? <20>?<3F>? <20><EFBFBD><E5A999><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? <20><EFBFBD><E5A999><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? <20>?<3F>? <20>? <20>?<3F>? <20><EFBFBD><E5A999><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? RDS PostgreSQL 15 <20>?<3F>? (<28>曹澈<E69BB9>唳旿摨? <20>?<3F><EFBFBD><E5A999><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?```
**<2A>喲睸<E596B2>?*嚗?- SAE <20>?ECS 敹<><EFBFBD><EFBFBD><EFBFBD>銝?VPC嚗<43><E59A97>蝵煾<E89DB5>帋縑嚗?- Dify <20>?PostgreSQL <20>唳旿摨枏虾隞亙<E99A9E><E4BA99>𡒊垢<F0A1928A>梁鍂<E6A281><EFBFBD>銝?RDS 摰硺<E691B0><EFBFBD><E59A97><EFBFBD>?Schema嚗?- <20><EFBFBD><E785BE>唳旿摨?Weaviate 餈鞱<E9A488><E99EB1>?ECS <20>?Docker 銝?
---
## <20>滨蔭<E6BBA8><E894AD><EFBFBD><EFBFBD><E79A9C>
### <20>?敹<><E695B9><EFBFBD><E99F8F>
| 韏<><E99F8F>蝐餃<E89D90> | <20>滨蔭撱箄悅 | 憸<>摯韐寧鍂 | <20><EFBFBD>?|
|---------|---------|---------|-----|
| **ECS <20>滚𦛚<E6BB9A>?* | 2<>?G / 蝟餌<E89D9F><E9A48C>?0GB / <20>唳旿<E594B3>?00GB | ~200<30>?<3F>?| 餈鞱<E9A488> Dify + Weaviate |
| **RDS PostgreSQL** | 撌脫<E6928C><EFBFBD><E59A97><EFBFBD><EFBFBD> | 0<><30><EFBFBD>憓鮋<E68693>嚗?| Dify <20><><EFBFBD><EFBFBD><E6A180>?|
| **OSS 摮睃<E691AE>** | 撌脫<E6928C><EFBFBD><E59A97><EFBFBD><EFBFBD> | <20><EFBFBD>霈∟晶 | <20><>﹝摮睃<E691AE> |
| **VPC 蝵𤑳<E89DB5>** | 撌脫<E6928C>嚗𠄎AE<41><45><EFBFBD>汲PC嚗?| 0<>?| <20><><EFBFBD><EFBFBD>帋縑 |
### <20>?頧臭辣<E887AD><E8BEA3><EFBFBD>
```bash
# <20>砍𧑐撘<F0A79190><E69298>烐㦤<E78390><EFBFBD><EFBFBD><E996AC><EFBFBD><E98B86><EFBFBD><EFBFBD><E585B6><EFBFBD><E588B8><EFBFBD><EFBFBD>𧶏<EFBFBD>
- Docker Desktop
- <20><EFBFBD>鈭?CLI嚗<49><EFBFBD><EFBFBD>
# ECS <20>滚𦛚<E6BB9A><EFBFBD><EFBFBD><E996AC><EFBFBD><E98B86>餈𦦵<E9A488><F0A6A6B5><EFBFBD>嚗?- Docker Engine
- Docker Compose
```
### <20>?韐血噡銝擧<E98A9D><E693A7>?
- <20><EFBFBD>鈭𤏸揭<F0A48FB8><EFBFBD>撌脫<E6928C>嚗?- ECS <20><EFBFBD><E9A483><EFBFBD>嚗𠄎SH撖<48>𤨎撖對<E69296>
- Docker <20>𨅯<EFBFBD>隞枏<E99A9E><EFBFBD><EFBFBD><EFBFBD>摰孵膥<E5ADB5>𨅯<EFBFBD><F0A885AF>滚𦛚 ACR嚗?
---
## ECS <20>滚𦛚<E6BB9A><EFBFBD>蝵?
### 甇仿炊 1嚗朞揚銋?ECS 摰硺<E691B0>
1. **<2A><EFBFBD><E9A483><EFBFBD>鈭烐綉<E78390>嗅蝱** <20>?**鈭烐<E988AD><E78390>膥 ECS** <20>?**<2A>𥕦遣摰硺<E691B0>**
2. **<2A><EFBFBD><E7AE87>滨蔭**嚗? ```
<20><EFBFBD><E595A3><EFBFBD><EFBFBD>典躹: 銝?SAE <20><EFBFBD><EFBFBD><E59A97>嚗𡁜<E59A97>銝?-<2D><EFBFBD>嚗? 摰硺<E691B0><EFBFBD>聢: ecs.t6-c1m2.large (2<>?G)
<20>𨅯<EFBFBD>: Ubuntu 22.04 LTS 64雿? 摮睃<E691AE>:
- 蝟餌<E89D9F><E9A48C>? ESSD鈭𤑳<E988AD> 40GB
- <20>唳旿<E594B3>? ESSD鈭𤑳<E988AD> 100GB (<28><><EFBFBD>?/data)
```
3. **蝵𤑳<E89DB5><F0A491B3>滨蔭**嚗? ```
銝𤘪<E98A9D>蝵𤑳<E89DB5> VPC: <20>㗇𥋘 SAE <20><><EFBFBD><EFBFBD> VPC
摰匧<E691B0>蝏? <20>𥕦遣<F0A595A6><EFBFBD><E595A3><EFBFBD>嚗屸<E59A97>蝵桀<E89DB5><E6A180><EFBFBD><EFBFBD><E996AB><EFBFBD><E59A97>儭?摰匧<E691B0>瑪嚗㚁<E59A97>
<20>?<3F><>捂 22/TCP <20><EFBFBD>嚗𡁏<E59A97><F0A1818F><EFBFBD><EFBFBD><EFBFBD>砍恕<E7A08D><EFBFBD>IP # SSH蝞∠<E89D9E>
<20>?<3F><>捂 80/TCP <20><EFBFBD>嚗?72.17.0.0/16 # Nginx嚗ĀPC<50><43><EFBFBD>霈輸䔮嚗? <20>?<3F><EFBFBD> 5000/TCP <20><EFBFBD>嚗?.0.0.0/0 # Dify API蝳<49><EFBFBD><EFBFBD>霈輸䔮
<20>?<3F><EFBFBD> 6379/TCP <20><EFBFBD>嚗?.0.0.0/0 # Redis蝳<73><EFBFBD><EFBFBD>霈輸䔮
<20>?<3F><EFBFBD> 8080/TCP <20><EFBFBD>嚗?.0.0.0/0 # Weaviate蝳<65><EFBFBD><EFBFBD>霈輸䔮
<20>?<3F><EFBFBD> <20><><EFBFBD>? <20><EFBFBD>嚗?.0.0.0/0 # 暺䁅恕<E48185><EFBFBD>
<20><EFBFBD>IP: <20><><EFBFBD><EFBFBD><EFBFBD>IPv4<76><EFBFBD><EFBFBD>鍂鈭燑SH<53><EFBFBD><E9A483><EFBFBD><E5B1B8><EFBFBD>頧踝<E9A0A7>
<20>𩤃<EFBFBD> 摰匧<E691B0>霅血<E99C85>嚗? - Dify API (5000)<29><>edis (6379)<29><>eaviate (8080) 蝏嘥笆銝滩<E98A9D>撖孵<E69296>蝵穃<E89DB5><E7A983>? - <20><EFBFBD>霈禽PC<50><43><EFBFBD>霈輸䔮嚗?72.17.0.0/16嚗? - 蝡臬藁蝏穃<E89D8F><E7A983>?127.0.0.1嚗<EFBFBD><EFBFBD>docker-compose.yaml<6D>滨蔭嚗? ```
4. **蝟餌<E89D9F><E9A48C>滨蔭**嚗? ```
<20><EFBFBD><E9A483><EFBFBD>: 雿輻鍂撖<E98D82>𤨎撖對<E69296><E5B08D><EFBFBD>嚗㗇<E59A97><EFBFBD><E69296>
摰硺<E691B0><E7A1BA>滨妍: dify-ecs-prod
```
### 甇仿炊 2嚗朞<E59A97><E69C9E><EFBFBD> ECS
```bash
# Windows <20><EFBFBD>雿輻鍂 PowerShell <20>?Git Bash
ssh -i "your-key.pem" root@<ECS<43><EFBFBD>IP>
# 擐𡝗活<F0A19D97><EFBFBD><E9A483>𠬍<EFBFBD><F0A0AC8D>湔鰵蝟餌<E89D9F>
apt update && apt upgrade -y
```
### 甇仿炊 3嚗𡁏<E59A97>頧賣㺭<E8B3A3><EFBFBD>
```bash
# <20><EFBFBD><EFBFBD><E89DA4>
lsblk
# <20><EFBFBD><E6BE86>𡝗㺭<F0A19D97><EFBFBD><EFBFBD><E59A97>霈曆蛹 /dev/vdb嚗?mkfs.ext4 /dev/vdb
# <20>𥕦遣<F0A595A6><E981A3><EFBFBD>?mkdir -p /data
# <20><>
mount /dev/vdb /data
# 霈曄蔭撘<E894AD><E69298>箄䌊<E7AE84><EFBFBD>頧?echo '/dev/vdb /data ext4 defaults 0 0' >> /etc/fstab
# 撉諹<E69289>
df -h
```
### 甇仿炊 4嚗𡁻<E59A97>蝵?Swap <20><>躹嚗<E8BAB9><E59A97><EFBFBD><EFBFBD><E6AEB7><EFBFBD> OOM嚗?
**銝箔<E98A9D><EFBFBD><E98A8B>憿駁<E686BF>蝵?Swap嚗?*
- <20><EFBFBD> ECS <20>?2<>?G <20><><EFBFBD>
- Dify <20>典振獢塚<E78DA2>API+Worker+Web+Redis+Weaviate+Nginx嚗厩征頧賢停<E8B3A2><E5819C>閬?3GB+
- <20>劐犖銝𠹺<E98A9D>憭扳<E686AD>隞嗆<E99A9E>餈𥡝<E9A488><F0A5A19D><EFBFBD><EFBFBD>𧒄嚗峕<E59A97><E5B395><EFBFBD><E69E8F>?OOM嚗<4D><E59A97>摮䀹滯<E480B9><EFBFBD>撏拇<E6928F>
- Swap <20><EFBFBD>摮条<E691AE>"<22>𤑳<EFBFBD><F0A491B3>?嚗<><E59A97><EFBFBD>格𧒄<E6A0BC><EFBFBD>靽肽<E99DBD><E882BD>滚𦛚銝滚援皞?
```bash
# <20>𥕦遣 4GB Swap <20><>
fallocate -l 4G /swapfile
# 霈曄蔭<E69B84><E894AD><EFBFBD><EFBFBD><E59A97>憿餅糓 600嚗<30><EFBFBD><EFBFBD>摰匧<E691B0>嚗?chmod 600 /swapfile
# <20><EFBFBD><E6BE86>碶蛹 Swap
mkswap /swapfile
# <20>舐鍂 Swap
swapon /swapfile
# 霈曄蔭撘<E894AD><E69298>箄䌊<E7AE84><EFBFBD>頧?echo '/swapfile none swap sw 0 0' >> /etc/fstab
# 撉諹<E69289> Swap 撌脣鍳<E884A3>?free -h
# 摨磰砲<E7A3B0><EFBFBD> Swap 銝<>銵峕遬蝷?4GB
# 隡睃<E99AA1> Swap 雿輻鍂蝑𣇉裦嚗<E8A3A6><EFBFBD><EFBFBD>
# swappiness=10 銵函內撠賡<E692A0>雿輻鍂<E8BCBB><EFBFBD><E68B8D><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>𧒄<EFBFBD>?Swap
echo 'vm.swappiness=10' >> /etc/sysctl.conf
sysctl -p
```
### 甇仿炊 5嚗𡁜<E59A97>鋆?Docker
```bash
# 1. <20>貉蝸<E8B289><EFBFBD><E68A92>穿<EFBFBD><EFBFBD><E68692><EFBFBD><EFBFBD>
apt remove docker docker-engine docker.io containerd runc
# 2. 摰㕑<E691B0>靘肽<E99D98>
apt install -y ca-certificates curl gnupg lsb-release
# 3. 瘛餃<E7989B> Docker 摰䀹䲮 GPG key
mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# 4. 霈曄蔭 Docker 隞枏<E99A9E>
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
# 5. 摰㕑<E691B0> Docker Engine
apt update
apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# 6. <20>臬𢆡 Docker
systemctl start docker
systemctl enable docker
# 7. 撉諹<E69289>摰㕑<E691B0>
docker --version
docker compose version
```
### 甇仿炊 6嚗𡁻<E59A97>蝵?Docker <20>𨅯<EFBFBD><F0A885AF>𣳇<EFBFBD><F0A3B387><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E58A90><EFBFBD>嚗?
```bash
# <20><EFBFBD>鈭煾<E988AD><E785BE><EFBFBD><E8AAA9>笔膥嚗<E886A5>蒈敶閖燵<E99696><EFBFBD><E494B6><EFBFBD><E689B9>啗繮<E59597><EFBFBD>撅𧼮𧑐<F0A7BCAE><F0A79190>嚗?mkdir -p /etc/docker
cat > /etc/docker/daemon.json <<EOF
{
"registry-mirrors": ["https://<your-id>.mirror.aliyuncs.com"]
}
EOF
systemctl daemon-reload
systemctl restart docker
```
---
## 摰㕑<E691B0>甇仿炊
### 甇仿炊 1嚗𡁜<E59A97>憭?Dify <20>函蔡<E587BD><EFBFBD>
```bash
# <20>?ECS 銝𠰴<E98A9D>撱箇𤌍敶?mkdir -p /data/dify
cd /data/dify
# <20><EFBFBD> Dify 摰䀹䲮隞枏<E99A9E><EFBFBD><EFBFBD>函迅摰𡁶<E691B0><F0A181B6>穿<EFBFBD>
git clone https://github.com/langgenius/dify.git
cd dify
# <20><><EFBFBD>啁迅摰𡁶<E691B0><F0A181B6>穿<EFBFBD>撱箄悅雿輻鍂<E8BCBB><E98D82><EFBFBD><EFBFBD> release <20><>𧋦嚗?git checkout tags/0.11.2 # <20>踵揢銝箸<E98A9D><E7AEB8>啁迅摰𡁶<E691B0><F0A181B6>?
# 餈𥕦<E9A488> docker <20><EFBFBD>
cd docker
# <20>𩤃<EFBFBD> <20><EFBFBD>嚗帋蝙<E5B88B><EFBFBD><E585B8><EFBFBD> docker-compose.yaml
# 銝滩<E98A9D><E6BBA9>芸楛<E88AB8><EFBFBD><E8A781>硋之撟<E4B98B><E6929F><EFBFBD>𧶏<EFBFBD>摰䀹䲮<E480B9>滨蔭<E6BBA8><E894AD>鉄鈭<E98984><E988AD><EFBFBD><EFBFBD><E6B8A1>滚𦛚嚗<F0A69B9A>鉄 Nginx 蝵穃<E89DB5>嚗?```
### 甇仿炊 2嚗𡁻<E59A97>蝵桃㴓憓<E3B493><E68693><EFBFBD>?
```bash
# 憭滚<E686AD><E6BB9A>滨蔭璅⊥踎
cp .env.example .env
# 蝻𤥁<E89DBB><F0A4A581>滨蔭<E6BBA8><E894AD>
nano .env
```
**<2A>喲睸<E596B2>滨蔭憿?*嚗<><E59A97>憿颱耨<E9A2B1><EFBFBD>嚗?
```bash
# ========= <20><EFBFBD><E8A9A8>滨蔭 =========
# 摰㕑<E691B0><E79285>嚗窃elf-hosted嚗<64>䌊撱綽<E692B1>
INSTALL_MODE=self-hosted
# 撖<>𤨎嚗<F0A4A88E><E59A97>憿颱耨<E9A2B1><EFBFBD>雿輻鍂撘箏<E69298><E7AE8F><EFBFBD><EFBFBD>
SECRET_KEY=<<3C><><EFBFBD><EFBFBD>銝芷<E98A9D><E88AB7><EFBFBD>蝚虫葡嚗諹秐撠?2雿?
# <20><><EFBFBD><EFBFBD><EFBFBD>嚗駅penssl rand -base64 32
# ========= <20>唳旿摨㯄<E691A8>蝵?=========
# 雿輻鍂<E8BCBB><EFBFBD>鈭?RDS PostgreSQL
DB_TYPE=postgres
DB_HOST=<RDS<44><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E59A97>嚗鬏m-xxxx.pg.rds.aliyuncs.com>
DB_PORT=5432
DB_NAME=dify_prod
DB_USERNAME=dify_user
DB_PASSWORD=<your-password>
# 瘜冽<E7989C>嚗𡁻<E59A97><EFBFBD>銁 RDS 銝剖<E98A9D>撱箏<E692B1><E7AE8F><EFBFBD><E7A589>唳旿摨枏<E691A8><E69E8F><EFBFBD>
# <20><EFBFBD>嚗鋴REATE DATABASE dify_prod;
# CREATE USER dify_user WITH PASSWORD 'your-password';
# GRANT ALL PRIVILEGES ON DATABASE dify_prod TO dify_user;
# ========= Redis <20>滨蔭 =========
# Dify 敹<>◆雿輻鍂 Redis嚗<73><E59A97><EFBFBD>賜鍂 Postgres-Only嚗?# <20>𩤃<EFBFBD> <20><EFBFBD>嚗𡁜銁 Docker Compose 蝵𤑳<E89DB5>銝哨<E98A9D>雿輻鍂<E8BCBB>滚𦛚<E6BB9A><EFBFBD><EFBFBD><E494B6>?localhost嚗?REDIS_HOST=redis
REDIS_PORT=6379
REDIS_PASSWORD=<strong-password>
# ========= <20><EFBFBD><E785BE>唳旿摨㯄<E691A8>蝵?=========
# 雿輻鍂 Weaviate嚗㇄ocker Compose <20>芸𢆡<E88AB8>臬𢆡嚗?VECTOR_STORE=weaviate
WEAVIATE_ENDPOINT=http://weaviate:8080
WEAVIATE_API_KEY=<<3C><><EFBFBD><EFBFBD>銝芷<E98A9D><E88AB7><EFBFBD>蝚虫葡>
# ========= 摮睃<E691AE><E79D83>滨蔭 =========
# 雿輻鍂<E8BCBB><EFBFBD>鈭?OSS嚗<53><EFBFBD><EFBFBD>
STORAGE_TYPE=aliyun-oss
ALIYUN_OSS_BUCKET_NAME=<your-bucket-name>
ALIYUN_OSS_REGION=oss-cn-hangzhou
ALIYUN_OSS_ACCESS_KEY_ID=<your-access-key-id>
ALIYUN_OSS_ACCESS_KEY_SECRET=<your-access-key-secret>
# <20>碶蝙<E7A2B6>冽𧋦<E586BD><EFBFBD><E595A3><EFBFBD>銝齿綫<E9BDBF><EFBFBD>
# STORAGE_TYPE=local
# ========= LLM <20>滨蔭 =========
# 暺䁅恕 LLM <20>𣂷<EFBFBD><F0A382B7><EFBFBD><EFBFBD><EFBFBD>典虾隞亙銁 Web UI 銝剜溶<E5899C><EFBFBD>銝迎<E98A9D>
DEFAULT_LLM_PROVIDER=openai-api-compatible
# DeepSeek API嚗<49>內靘页<E99D98>
DEEPSEEK_API_KEY=<your-deepseek-api-key>
DEEPSEEK_API_BASE=https://api.deepseek.com/v1
# ========= API <20>滨蔭 =========
# API <20>滚𦛚<E6BB9A><EFBFBD><EFBFBD><E59A97>蝵穃𧑐<E7A983><F0A79190>嚗?API_URL=http://<ECS<43><53><EFBFBD>IP>:5000
# Web <20>滚𦛚<E6BB9A><EFBFBD><EFBFBD><E59A97><EFBFBD>𣈯<EFBFBD><EFBFBD><EFBFBD>?Dify Web UI嚗?WEB_API_URL=http://<ECS<43><EFBFBD>IP>
WEB_URL=http://<ECS<43><EFBFBD>IP>
# ========= <20><EFBFBD><E4BA99>滨蔭 =========
LOG_LEVEL=INFO
LOG_FILE=/data/logs/dify.log
# ========= <20><EFBFBD><E597A1>滨蔭 =========
# <20>嗅躹
TZ=Asia/Shanghai
# <20>臬炏撘<E7828F><E69298>?Debug
DEBUG=false
```
### 甇仿炊 3嚗𡁏<E59A97><F0A1818F>?Docker Compose <20><>辣嚗<E8BEA3>遣霈桐蝙<E6A190><EFBFBD><E585B8><EFBFBD>蝵殷<E89DB5>
```bash
# <20>𩤃<EFBFBD> 撘箇<E69298>撱箄悅嚗帋<E59A97><EFBFBD><E996AC><EFBFBD>?docker-compose.yaml嚗?# <20>湔𦻖雿輻鍂摰䀹䲮<E480B9><E4B2AE>辣嚗<E8BEA3><E59A97><EFBFBD><EFBFBD>鉄鈭<E98984><E988AD><EFBFBD><EFBFBD><E6B8A1><EFBFBD><EFBFBD>鉄 Nginx 蝵穃<E89DB5>嚗?
# <20><EFBFBD>摰䀹䲮<E480B9>滨蔭
cat docker-compose.yaml
```
**摰䀹䲮<E480B9><EFBFBD><E59786><EFBFBD><EFBFBD><E98984><EFBFBD><EFBFBD>?*嚗?
```yaml
services:
# 1. nginx - <20>亙藁蝵穃<E89DB5><EFBFBD><E59A97><EFBFBD><EFBFBD><EFBFBD><E59A97>
# 雿𦦵鍂嚗朞楝<E69C9E>梯窈瘙<E7AA88><E79899> API <20>?Web嚗諹圾<E8ABB9>?CORS <20><EFBFBD>
# /v1/* <20>?API <20>滚𦛚
# /* <20>?Web <20>滚𦛚
# 2. api - Dify API <20>滚𦛚
# 3. worker - <20>𤾸蝱隞餃𦛚憭<F0A69B9A><E686AD>
# 4. web - Web <20>滨垢<E6BBA8>屸𢒰
# 5. redis - 蝻枏<E89DBB><E69E8F>䔶遙<E494B6><EFBFBD><E28ABF><EFBFBD><EFBFBD><E695B9>嚗? # 6. weaviate - <20><EFBFBD><E785BE>唳旿摨? # 7. sandbox - 隞<><E99A9E><EFBFBD><E996AB><EFBFBD><EFBFBD><E58981><EFBFBD><EFBFBD><EFBFBD>遣霈桐<E99C88><E6A190><EFBFBD>
# 雿𦦵鍂嚗𡁜<E59A97><F0A1819C>𨅯銁 Dify 銝凋蝙<E5878B>?隞<><E99A9E><EFBFBD><E996AB><EFBFBD>?<3F><EFBFBD>
# 憒<><E68692>雿惩<E99BBF><E683A9><EFBFBD> nginx嚗䔶<E59A97><E494B6><EFBFBD><EFBFBD>嚗? # - <20>滨垢霈輸䔮 API <20>?CORS 頝典<E9A09D><E585B8>躰秤
# - API 頝舐眏 404 <20>躰秤
# 憒<><E68692>雿惩<E99BBF><E683A9><EFBFBD> sandbox嚗䔶<E59A97><E494B6><EFBFBD><EFBFBD>嚗? # - "隞<><E99A9E><EFBFBD><E996AB><EFBFBD>?<3F><EFBFBD><E8A098>仿<EFBFBD>
```
**隞<><E99A9E>靽格㺿<E6A0BC><E3BABF><EFBFBD><EFBFBD>?*嚗<><E59A97><EFBFBD>𨀣<EFBFBD><F0A880A3><EFBFBD><E5AF9E><EFBFBD><EFBFBD><E79899>嚗?
```yaml
# <20>𩤃<EFBFBD> 摰匧<E691B0><E58CA7>滨蔭嚗𡁶垢<F0A181B6><E59EA2><EFBFBD>摰𡁜<E691B0><F0A1819C>砍𧑐嚗<F0A79190>俈甇<E79487>蝵𤏸挪<F0A48FB8><EFBFBD>
services:
redis:
ports:
- "127.0.0.1:6379:6379" # <20>𩤃<EFBFBD> <20><EFBFBD><E88AB0>祆𧋦<E7A586><EFBFBD><EFBFBD><EFBFBD><EFBFBD>霈輸䔮
weaviate:
ports:
- "127.0.0.1:8080:8080" # <20>𩤃<EFBFBD> <20><EFBFBD><E88AB0>祆𧋦<E7A586><EFBFBD><EFBFBD><EFBFBD><EFBFBD>霈輸䔮
# 蝷箔<E89DB7>嚗𡁜<E59A97><F0A1819C>𣈯<EFBFBD><EFBFBD><E996AC>蝵𤏸挪<F0A48FB8>?Web UI嚗<49><E59A97><EFBFBD>Nginx嚗? nginx:
ports:
- "80:80" # HTTP嚗<50><E59A97>霈禽PC<50><43><EFBFBD>霈輸䔮嚗? - "443:443" # HTTPS嚗<53><E59A97><EFBFBD><E996AC>蝵株<E89DB5>銋佗<E98A8B>
```
**<2A>𩤃<EFBFBD> 摰匧<E691B0>瑪嚗?*
```yaml
# <20>?蝏嘥笆蝳<E7AC86>迫嚗<E8BFAB><E59A97>鋡急𤫇<E680A5><EFBFBD>
services:
redis:
ports:
- "6379:6379" # <20><EFBFBD><E585B6><EFBFBD>虾霈輸䔮嚗朙edis<69><EFBFBD><E683A9><EFBFBD><EFBFBD>鋡急<E98BA1>蝛?
weaviate:
ports:
- "8080:8080" # <20><EFBFBD><E785BE>唳旿<E594B3><EFBFBD>鋡怎<E98BA1><E6808E>?
api:
ports:
- "5000:5000" # 暺穃恥<E7A983><EFBFBD><EFBFBD><E9A488>蝡舀<E89DA1><E88880>葲LM憸嘥漲
# <20>?甇<><EFBFBD>𡁏<EFBFBD>嚗𡁶<E59A97>摰𡁜<E691B0>127.0.0.1
services:
redis:
ports:
- "127.0.0.1:6379:6379" # <20><EFBFBD><E88ABE>祆㦤霈輸䔮
```
**<2A>?<3F>躰秤<E8BAB0>𡁏<EFBFBD>**嚗?```yaml
# 銝滩<E98A9D><E6BBA9><EFBFBD><E683A9>滚𦛚嚗<F0A69B9A><EFBFBD>嗆糓 nginx
services:
api: ...
worker: ...
# <20>?蝻箏<E89DBB> nginx嚗<78><E59A97>撖潸稲<E6BDB8>滨垢<E6BBA8><EFBFBD>霈輸䔮 API嚗?```
**<2A>?甇<><EFBFBD>𡁏<EFBFBD>**嚗?```bash
# 靽脲<E99DBD>摰䀹䲮 docker-compose.yaml 銝滚<E98A9D>
# <20>芯耨<E88AAF>?.env <20><EFBFBD><E887AC><EFBFBD>
# 憒<><E68692>蝖桀<E89D96><E6A180><EFBFBD><EFBFBD><E996AC><EFBFBD><EFBFBD><E6B99B>芣溶<E88AA3>删垢<E588A0><E59EA2><EFBFBD><EFBFBD><E692A0><EFBFBD>惩拿<E683A9>滨蔭
```
### 甇仿炊 4嚗𡁜<E59A97>撱箏<E692B1><E7AE8F><EFBFBD><EFBFBD><EFBFBD>
```bash
mkdir -p /data/dify/storage
mkdir -p /data/dify/logs
mkdir -p /data/dify/redis
mkdir -p /data/dify/weaviate
# 霈曄蔭<E69B84><E894AD><EFBFBD>
chmod -R 755 /data/dify
```
### 甇仿炊 5嚗𡁜<E59A97>憪见<E686AA><E8A781>唳旿摨?
```bash
# <20>?RDS 銝剖<E98A9D>撱?Dify <20>唳旿摨橒<E691A8>雿輻鍂 psql <20>?DBeaver嚗?# 餈墧𦻖<E5A2A7>?RDS
psql -h <RDS<44><53><EFBFBD><EFBFBD><EFBFBD>> -U postgres -d postgres
# <20><EFBFBD>
CREATE DATABASE dify_prod;
CREATE USER dify_user WITH PASSWORD 'your-password';
GRANT ALL PRIVILEGES ON DATABASE dify_prod TO dify_user;
\q
```
---
## <20>臬𢆡銝𡡞<E98A9D>霂?
### 甇仿炊 1嚗𡁜鍳<F0A1819C>?Dify <20>滚𦛚
```bash
cd /data/dify/docker
# <20><EFBFBD><E58CA7>𨅯<EFBFBD><EFBFBD><E59A97>甈∟<E79488>銵䕘<E98AB5>
docker compose pull
# <20>臬𢆡<E887AC>滚𦛚嚗<F0A69B9A><E59A97><EFBFBD><EFBFBD>銵䕘<E98AB5>
docker compose up -d
# <20><EFBFBD><E4BAA6><EFBFBD>
docker compose logs -f api
# 蝑匧<E89D91><E58CA7>滚𦛚<E6BB9A>臬𢆡嚗<F0A286A1>漲30蝘𡜐<E89D98>
```
### 甇仿炊 2嚗𡁻<E59A97><EFBFBD><E99C82><EFBFBD>∠𠶖<E288A0>?
```bash
# 1. 璉<><E79289>亙捆<E4BA99>函𠶖<E587BD>?docker compose ps
# 摨磰砲<E7A3B0><EFBFBD>隞乩<E99A9E>摰孵膥<E5ADB5>賣糓 Up <20><EFBFBD><E59786><EFBFBD>
# - dify-api
# - dify-worker
# - dify-web (憒<><E68692><EFBFBD>舐鍂)
# - redis
# - weaviate
# 2. 璉<><E79289>?API <20>亙熒<E4BA99><EFBFBD>?curl http://localhost:5000/health
# <20><><EFBFBD>餈𥪜<E9A488>: {"status": "healthy"}
# 3. 璉<><E79289>?Weaviate <20><EFBFBD>?curl http://localhost:8080/v1/meta
# <20><><EFBFBD>餈𥪜<E9A488>: JSON <20><EFBFBD><E6BE86><EFBFBD><EFBFBD><EFBFBD>唳旿
```
### 甇仿炊 3嚗𡁏<E59A97>霂訫<E99C82>蝵𤏸<E89DB5><F0A48FB8>𡁏<EFBFBD>?
```bash
# <20>?SAE <20>𡒊垢<F0A1928A>滚𦛚銝剜<E98A9D>霂𤏪<E99C82><F0A48FAA>硋銁<E7A18B>砍𧑐<E7A08D><EFBFBD> VPN 餈墧𦻖<E5A2A7>?VPC嚗?curl http://<ECS<43><53><EFBFBD>IP>:5000/health
# 憒<><E68692>餈𥪜<E9A488> {"status": "healthy"}嚗諹秩<E8ABB9>𤾸<EFBFBD>蝵𤏸<E89DB5><F0A48FB8>𡁏迤撣?```
### 甇仿炊 4嚗𡁜<E59A97>憪见<E686AA> Dify嚗<79><E59A97>甈⊿<E79488>蝵莎<E89DB5>
1. **霈輸䔮 Dify Web UI**嚗<><E59A97><EFBFBD>𨅯鍳<F0A885AF><EFBFBD>嚗? ```
http://<ECS<43><EFBFBD>IP>
```
2. **<2A>𥕦遣蝞∠<E89D9E><E288A0>䁅揭<E48185>?*嚗? - <20>桃拳嚗惨dmin@your-domain.com
- 撖<><E69296>嚗?strong-password>
3. **<2A>滨蔭 LLM <20>𣂷<EFBFBD><F0A382B7>?*嚗? - 餈𥕦<E9A488> "霈曄蔭" <20>?"璅<E79285><E288AA>𣂷<EFBFBD><F0A382B7>?
- 瘛餃<E7989B> DeepSeek/Qwen 蝑?API Key
### 甇仿炊 5嚗𡁻<E59A97>蝵桀<E89DB5>蝡舐㴓憓<E3B493><E68693><EFBFBD>?
<EFBFBD>?SAE <20>𡒊垢<F0A1928A>滚𦛚<E6BB9A><F0A69B9A>㴓憓<E3B493><E68693><EFBFBD>譍葉瘛餃<E7989B>嚗?
```bash
# Dify API <20>滨蔭
DIFY_API_BASE=http://<ECS<43><53><EFBFBD>IP>:5000
DIFY_API_KEY=<隞?Dify Web UI 銝剛繮<E5899B>?
# <20><EFBFBD> API Key <20><>䲮瘜𤏪<E7989C>
# Dify Web UI <20>?霈曄蔭 <20>?API Keys <20>?<3F>𥕦遣<F0A595A6><EFBFBD><E595A3>?```
---
## <20>滨蔭霂湔<E99C82>
### <20>圲 摮睃<E691AE><E79D83>滨蔭霂西圾
#### <20>厰★ 1嚗𡁻燵<F0A181BB><EFBFBD> OSS嚗<53><EFBFBD><EFBFBD>
**隡睃飵**嚗?- <20>𣳇<EFBFBD><F0A3B387><EFBFBD>
- 擃睃虾<E79D83><EFBFBD>99.9%嚗?- 銝?SAE <20><><EFBFBD><EFBFBD>帋縑嚗屸<E59A97>笔漲敹?
**<2A>滨蔭**嚗?```bash
STORAGE_TYPE=aliyun-oss
ALIYUN_OSS_BUCKET_NAME=your-bucket-name
ALIYUN_OSS_REGION=oss-cn-hangzhou
ALIYUN_OSS_ACCESS_KEY_ID=<your-id>
ALIYUN_OSS_ACCESS_KEY_SECRET=<your-secret>
```
**瘜冽<E7989C>**嚗?- OSS Bucket 敹<><EFBFBD>?ECS <20><EFBFBD><EFBFBD><E98A9D><EFBFBD>
- 撱箄悅雿輻鍂<E8BCBB><E98D82><EFBFBD> Endpoint嚗<74><E59A97>嚗駅ss-cn-hangzhou-internal.aliyuncs.com嚗?- 霈曄蔭<E69B84><E894AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>賢𪂹<E8B3A2><EFBFBD><E8A098><EFBFBD><EFBFBD><E68692>30憭拙<E686AD>頧砍<E9A0A7>摮睃<E691AE>嚗?
#### <20>厰★ 2嚗𡁏𧋦<F0A1818F><EFBFBD><E595A3><EFBFBD>銝齿綫<E9BDBF><EFBFBD>
**蝻箇<E89DBB>**嚗?- 蝤<><E89DA4>蝛粹𡢿<E7B2B9><EFBFBD>
- <20><EFBFBD>璅芸<E79285><E88AB8><EFBFBD>
- <20>唳旿憭<E697BF>遢暻餌<E69ABB>
**隞<><E99A9E><EFBFBD>鍂鈭?*嚗𡁏<E59A97>霂閧㴓憓<E3B493><E68693>撠讛<E692A0>璅⊿<E79285>蝵?
### <20><20>唳旿摨㯄<E691A8>蝵株祕閫?
#### Dify <20>唳旿摨㮖<E691A8><E3AE96>𡒊垢<F0A1928A>唳旿摨枏<E691A8>蝳?
```
RDS PostgreSQL 摰硺<E691B0>
<EFBFBD><EFBFBD> <20>唳旿摨?1: clinical_research (<28>𡒊垢銝餅㺭<E9A485><EFBFBD>)
<EFBFBD>? <20><EFBFBD> Schema: platform_schema
<EFBFBD>? <20><EFBFBD> Schema: asl_schema
<EFBFBD>? <20><EFBFBD> Schema: dc_schema
<EFBFBD>? <20><EFBFBD> ...
<EFBFBD><EFBFBD> <20>唳旿摨?2: dify_prod (Dify <20>唳旿摨?
<20><EFBFBD> Schema: public
<20><EFBFBD> ...
```
**隡睃飵**嚗?- <20>唳旿<E594B3>𠉛氖嚗<E6B096><E59A97><EFBFBD><EFBFBD>
- <20><EFBFBD><EFBFBD>遢蝑𣇉裦
- <20><EFBFBD><EFBFBD><E99F8F>蝡硺<E89DA1>
**餈墧𦻖瘙𣳇<E79899>蝵?*嚗?```bash
# Dify <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E9A2B2><EFBFBD><E59A97>銝箏<E98A9D>甇乩遙<E4B9A9><EFBFBD>嚗?DB_MAX_CONNECTIONS=20
```
### <20>圲 Redis <20>滨蔭霂湔<E99C82>
**銝箔<E98A9D>銋?Dify 敹<><EFBFBD>?Redis嚗?*
- Dify <20><><EFBFBD><EFBFBD><E28ABF>𦯀<EFBFBD>韏?Redis嚗㇃elery嚗?- <20><EFBFBD>蝻枏<E89DBB><EFBFBD><E59A97>嚗鋫PI <20><EFBFBD>嚗?- 銝滩<E98A9D><E6BBA9>?PostgreSQL <20>蹂誨嚗<E8AAA8><E59A97><EFBFBD><EFBFBD><E587BD>𡒊垢 Postgres-Only <20><EFBFBD>銝滚<E98A9D>嚗?
**<2A>喲睸<E596B2>滨蔭嚗<E894AD><E59A97><EFBFBD><EFBFBD><E6BBA9>亙仃韐伐<E99F90>**嚗?```bash
# <20>𩤃<EFBFBD> <20>游𦶢<E6B8B8>躰秤霅血<E99C85>嚗?# <20>?.env 銝哨<E98A9D>REDIS_HOST 敹<>◆霈曄蔭銝箸<E98A9D><E7AEB8><EFBFBD> "redis"
# 銝齿糓 "localhost"嚗?
# <20>?<3F>躰秤<E8BAB0><EFBFBD><EFBFBD><E59A97>撖潸稲 API <20><EFBFBD><E4ADBE>臬𢆡嚗?REDIS_HOST=localhost
# <20>?甇<><EFBFBD><EFBFBD>嚗㇄ocker Compose 蝵𤑳<E89DB5>銝凋蝙<E5878B><EFBFBD><E586BD><EFBFBD>嚗?REDIS_HOST=redis
# <20><EFBFBD>嚗?# - <20>?Docker Compose 銝哨<E98A9D>摰孵膥銋钅𡢿<E99285><EFBFBD><E69C9E>滚𦛚<E6BB9A><EFBFBD>帋縑
# - localhost <20><><EFBFBD><EFBFBD>臬捆<E887AC>刻䌊撌梧<E6928C>銝齿糓 Redis 摰孵膥
# - redis 隡朞◤ Docker 蝵𤑳<E89DB5><EFBFBD><E996AB>銝?Redis 摰孵膥<E5ADB5><E886A5><EFBFBD>蝵?IP
```
**摰匧<E691B0><E58CA7>惩𤐄**嚗?```bash
# 1. 霈曄蔭撘箏<E69298><E7AE8F>?REDIS_PASSWORD=<<3C><EFBFBD>16雿漤<E99BBF><E6BCA4><EFBFBD>蝚虫葡>
# 2. 隞<><E99A9E><EFBFBD><EFBFBD>蝵𡢅<E89DB5>docker-compose 銝剖歇<E58996>滨蔭嚗?# Redis 摰孵膥銝齿𠂔<E9BDBF>脩垢<E884A9><E59EA2><EFBFBD>銝餅㦤嚗䔶<E59A97><E494B6>?Docker 蝵𤑳<E89DB5><F0A491B3><EFBFBD>虾霈輸䔮
# 3. 蝳<><EFBFBD>梢埯<E6A2A2>賭誘嚗<E8AA98><EFBFBD><EFBFBD>
# <20>?docker-compose.yaml 銝凋耨<E5878B>?Redis <20>臬𢆡<E887AC>賭誘
command: >
redis-server
--requirepass ${REDIS_PASSWORD}
--rename-command CONFIG ""
--rename-command FLUSHALL ""
--rename-command FLUSHDB ""
```
---
## <20>烐綉銝𡒊輕<F0A1928A>?
### <20><> <20><EFBFBD>蝞∠<E89D9E>
#### 1. <20><EFBFBD>摰墧𧒄<E5A2A7><EFBFBD>
```bash
cd /data/dify/docker
# <20><EFBFBD><E4BAA6><EFBFBD><EFBFBD><EFBFBD><E39787>⊥𠯫敹?docker compose logs -f
# <20><EFBFBD><E4BAA6><EFBFBD><E5ADB5>滚𦛚<E6BB9A><EFBFBD>
docker compose logs -f api
docker compose logs -f worker
```
#### 2. <20><EFBFBD><E4BA99><EFBFBD>辣雿滨蔭
```
/data/dify/logs/
<EFBFBD><EFBFBD> api.log # API <20>滚𦛚<E6BB9A><EFBFBD>
<EFBFBD><EFBFBD> worker.log # Worker <20><EFBFBD>
<EFBFBD><EFBFBD> error.log # <20>躰秤<E8BAB0><EFBFBD>
```
#### 3. <20><EFBFBD>頧株蓮<E6A0AA>滨蔭
```bash
# 摰㕑<E691B0> logrotate嚗㇎buntu 暺䁅恕撌脣<E6928C><EFBFBD><E98B86>
apt install logrotate
# <20>𥕦遣<F0A595A6>滨蔭<E6BBA8><E894AD>
cat > /etc/logrotate.d/dify <<EOF
/data/dify/logs/*.log {
daily
rotate 30
compress
delaycompress
notifempty
create 0644 root root
sharedscripts
postrotate
docker compose -f /data/dify/docker/docker-compose.yaml restart api worker
endscript
}
EOF
```
### <20><> <20><EFBFBD><E689AF>烐綉
#### 1. 韏<><E99F8F>雿輻鍂<E8BCBB><E98D82><EFBFBD>
```bash
# <20><EFBFBD>摰孵膥韏<E886A5><E99F8F><EFBFBD>删鍂
docker stats
# <20><EFBFBD><EFBFBD><E89DA4>雿輻鍂
df -h /data
# <20><EFBFBD><E4BAA6><EFBFBD><EFBFBD>雿輻鍂
free -h
```
#### 2. <20>唳旿摨栞<E691A8><E6A09E><EFBFBD><E4BAA6>?
```bash
# 餈墧𦻖<E5A2A7>?RDS <20><EFBFBD> Dify <20><><EFBFBD><EFBFBD>交㺭
psql -h <RDS<44><53><EFBFBD><EFBFBD><EFBFBD>> -U postgres -d dify_prod -c "
SELECT count(*)
FROM pg_stat_activity
WHERE datname = 'dify_prod';
"
```
#### 3. Redis <20>烐綉
```bash
# 餈墧𦻖<E5A2A7>?Redis 摰孵膥
docker exec -it dify-redis redis-cli -a <REDIS_PASSWORD>
# <20><EFBFBD>靽⊥<E99DBD>
INFO
INFO memory
INFO stats
```
### <20><> 摰𡁏<E691B0>蝏湔擪隞餃𦛚
#### 瘥誩𪂹隞餃𦛚
```bash
# 1. 皜<><E79A9C> Docker <20><EFBFBD>
truncate -s 0 $(docker inspect --format='{{.LogPath}}' dify-api)
truncate -s 0 $(docker inspect --format='{{.LogPath}}' dify-worker)
# 2. 皜<><E79A9C><EFBFBD>删鍂<E588A0>?Docker 韏<><E99F8F>
docker system prune -a --volumes -f
```
#### 瘥𤩺<E798A5>隞餃𦛚
```bash
# 1. <20>唳旿摨?VACUUM嚗<4D>銁雿𤾸陸<F0A4BEB8><E999B8><EFBFBD>銵䕘<E98AB5>
psql -h <RDS<44><53><EFBFBD><EFBFBD><EFBFBD>> -U dify_user -d dify_prod -c "VACUUM ANALYZE;"
# 2. 璉<><E79289><EFBFBD><E4BAA6><EFBFBD><E69DA1>?e2fsck -f /dev/vdb
# 3. 憭<><EFBFBD>滨蔭<E6BBA8><E894AD>
tar -czf /backup/dify-config-$(date +%Y%m%d).tar.gz /data/dify/docker/.env
```
---
## <20><><EFBFBD><EFBFBD>埝䰻
### <20>𤣳 撣貉<E692A3><E8B289><EFBFBD>
#### <20><EFBFBD> 1嚗鋫PI 摰孵膥<E5ADB5><EFBFBD><E4ADBE>臬𢆡 - Redis 餈墧𦻖憭梯揖嚗<E68F96><E59A97>憸煾<E686B8>霂荔<E99C82>
**<2A><>𠶖**嚗?```bash
docker compose ps
# <20>曄內 dify-api <20><EFBFBD><E59786>蛹 Exit 1 <20><EFBFBD><E7A2B6><EFBFBD><E5899D>?
docker compose logs api
# <20>曄內<E69B84>躰秤嚗?# redis.exceptions.ConnectionError: Error connecting to localhost:6379
# <20>?# Cannot connect to Redis at localhost:6379
```
**<2A>寞𧋦<E5AF9E><EFBFBD>**嚗?```bash
# <20>?.env <20><>辣銝剝<E98A9D>蝵桅<E89DB5>霂?REDIS_HOST=localhost # 餈蹱糓<E8B9B1><EFBFBD>嚗?```
**閫<><E996AB><EFBFBD><EFBFBD>**嚗?```bash
# 1. 蝻𤥁<E89DBB> .env <20><>
nano /data/dify/docker/.env
# 2. 靽格㺿 REDIS_HOST
REDIS_HOST=redis # <20>?<3F>嫣蛹<E5ABA3>滚𦛚<E6BB9A>?
# 3. <20>滚鍳<E6BB9A>滚𦛚
docker compose down
docker compose up -d
# 4. 撉諹<E69289>
docker compose logs api | grep -i redis
# 摨磰砲<E7A3B0><EFBFBD>嚗锭uccessfully connected to Redis
```
#### <20><EFBFBD> 2嚗𡁜<E59A97>蝡航挪<E888AA>?API <20>?CORS <20>躰秤
**<2A><>𠶖**嚗?```
瘚讛<EFBFBD><EFBFBD>冽綉<EFBFBD>嗅蝱<EFBFBD>仿<EFBFBD>嚗?Access to XMLHttpRequest at 'http://xxx/v1/xxx' from origin 'http://yyy'
has been blocked by CORS policy
```
**<2A>寞𧋦<E5AF9E><EFBFBD>**嚗?- 蝻箏<E89DBB> Nginx 蝵穃<E89DB5><E7A983>滚𦛚
- <20>𤥁<EFBFBD>?Nginx <20>滨蔭<E6BBA8>躰秤
**閫<><E996AB><EFBFBD><EFBFBD>**嚗?```bash
# 1. 蝖株恕 Nginx 摰孵膥<E5ADB5>臬炏餈鞱<E9A488>
docker compose ps | grep nginx
# 2. 憒<><E68692>瘝⊥<E7989D> Nginx嚗諹秩<E8ABB9>𦒘<EFBFBD><F0A69298>𣳇膄鈭<E88684><E988AD><EFBFBD><EFBFBD>蝵?# 閫<><E996AB><EFBFBD><EFBFBD>嚗𡁻<E59A97><F0A181BB><EFBFBD><E595A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>摨橒<E691A8>雿輻鍂摰峕㟲<E5B395>?docker-compose.yaml
cd /data/dify
rm -rf dify
git clone https://github.com/langgenius/dify.git
cd dify/docker
cp .env.example .env
# <20>齿鰵<E9BDBF>滨蔭 .env嚗<76><E59A97><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
docker compose up -d
```
#### <20><EFBFBD> 3嚗𡁜捆<F0A1819C><EFBFBD>瘜訫鍳<E8A8AB>?- <20>唳旿摨栞<E691A8><E6A09E>亙仃韐?
**<2A><>𠶖**嚗?```bash
docker compose logs api
# <20>曄內<E69B84>躰秤嚗?# could not connect to server: Connection refused
```
**<2A>埝䰻甇仿炊**嚗?```bash
# 1. 璉<><E79289>?RDS <20><EFBFBD><E8B3A2>?# <20><EFBFBD>鈭烐綉<E78390>嗅蝱 <20>?RDS <20>?<3F>唳旿摰匧<E691B0><E58CA7>?<3F>?<3F><EFBFBD><E8B3A2>閗挽蝵?# 蝖株恕瘛餃<E7989B>鈭?ECS <20><><EFBFBD>蝵?IP
# 2. 璉<><E79289>?.env <20>滨蔭
DB_HOST=<RDS<44><53><EFBFBD><EFBFBD><EFBFBD>> # 銝齿糓<E9BDBF><EFBFBD><E7A589><EFBFBD>嚗?DB_PORT=5432
DB_NAME=dify_prod
DB_USERNAME=dify_user
DB_PASSWORD=<甇<><EFBFBD><EFBC86><EFBFBD><EFBFBD>?
# 3. 瘚贝<E7989A>餈墧𦻖嚗<F0A6BB96>銁 ECS 銝𠺪<E98A9D>
telnet <RDS<44><53><EFBFBD><EFBFBD><EFBFBD>> 5432
# 憒<><E68692>餈墧𦻖憭梯揖嚗峕<E59A97><E5B395><EFBFBD><E4BA99><EFBFBD><E587BD>𣬚蒾<F0A3AC9A><EFBFBD>
```
#### <20><EFBFBD> 4嚗𡁏<E59A97><F0A1818F><EFBFBD>銵䔶<E98AB5>畾菜𧒄<E88F9C><EFBFBD>撏拇<E6928F>嚗㇉OM <20><><EFBFBD>枂嚗?
**<2A><>𠶖**嚗?```bash
dmesg | grep -i kill
# <20>曄內嚗鐾ut of memory: Killed process xxx (dify-api)
docker compose ps
# 摰孵膥銝齿鱏<E9BDBF>滚鍳
```
**<2A>寞𧋦<E5AF9E><EFBFBD>**嚗?- 2<>?G <20><><EFBFBD>銝滩雲
- 瘝⊥<E7989D><E28AA5>滨蔭 Swap <20><>
**閫<><E996AB><EFBFBD><EFBFBD>**嚗?```bash
# 1. 蝡见朖<E8A781>滨蔭 Swap嚗<70><E59A97><EFBFBD><EFBFBD><E99D9D>齿瓷<E9BDBF>滨蔭嚗?fallocate -l 4G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
echo '/swapfile none swap sw 0 0' >> /etc/fstab
# 2. 撉諹<E69289> Swap 撌脣鍳<E884A3>?free -h
# 3. <20>滚鍳<E6BB9A>滚𦛚
docker compose restart
# 4. <20><EFBFBD><E8B8B5><EFBFBD>嚗𡁜<E59A97>蝥?ECS <20>?4<>?G
```
#### <20><EFBFBD> 2嚗鋫PI 餈𥪜<E9A488> 500 <20>躰秤
**<2A>埝䰻甇仿炊**嚗?```bash
# 1. <20><EFBFBD> API <20><EFBFBD>
docker compose logs -f api | grep ERROR
# 2. 璉<><E79289>交㺭<E4BAA4><EFBFBD>餈墧𦻖
docker exec -it dify-api sh
# <20>典捆<E585B8><EFBFBD><E585B8><EFBFBD>
python -c "
import psycopg2
conn = psycopg2.connect(
host='<RDS<44><EFBFBD>>',
database='dify_prod',
user='dify_user',
password='<password>'
)
print('Connection OK')
"
```
#### <20><EFBFBD> 3嚗𡁜<E59A97><F0A1819C>𤩺<EFBFBD>仃韐?
**<2A>埝䰻甇仿炊**嚗?```bash
# 1. 璉<><E79289>?Weaviate <20><EFBFBD>?curl http://localhost:8080/v1/meta
# 2. <20><EFBFBD> Weaviate <20><EFBFBD>
docker compose logs weaviate
# 3. <20>滚遣蝝<E89D9D><EFBFBD><E59A97><EFBFBD><EFBFBD>畾蛛<E795BE>
# <20>?Dify Web UI 銝哨<E98A9D>霈曄蔭 <20>?<3F>唳旿<E594B3>?<3F>?<3F>齿鰵蝝<E89D9D>
```
#### <20><EFBFBD> 4嚗𡁜<E59A97>蝵𤏸<E89DB5><F0A48FB8>亙仃韐伐<E99F90>SAE <20><EFBFBD>霈輸䔮 ECS嚗?
**<2A>埝䰻甇仿炊**嚗?```bash
# 1. 璉<><E79289><EFBFBD><E4BA99><EFBFBD><EFBFBD><E996AB>
# <20><EFBFBD>鈭烐綉<E78390>嗅蝱 <20>?ECS <20>?摰匧<E691B0>蝏?<3F>?蝖株恕撘<E68195><E69298>?5000 蝡臬藁蝏?SAE <20><><EFBFBD><EFBFBD>畾?
# 2. 瘚贝<E7989A>餈鮋<E9A488>𡁏<EFBFBD><EFBFBD><E694B9>?SAE 摰孵膥<E5ADB5><E886A5><EFBFBD>銵䕘<E98AB5>
telnet <ECS<43><53><EFBFBD>IP> 5000
# 3. 璉<><E79289>仿俈<E4BBBF><EFBFBD><EFBFBD>銁 ECS 銝𦠜<E98A9D>銵䕘<E98AB5>
ufw status
# 憒<><E68692><EFBFBD>舐鍂鈭<E98D82><EFBFBD><EFBFBD>嚗峕溶<E5B395><EFBFBD><E3B098><EFBFBD>
ufw allow from <SAE蝵烐挾> to any port 5000
```
### <20><> <20>滚鍳<E6BB9A>滚𦛚
```bash
# <20>滚鍳<E6BB9A><E98DB3><EFBFBD><EFBFBD><E39787>?cd /data/dify/docker
docker compose restart
# <20>滚鍳<E6BB9A>蓥葵<E893A5>滚𦛚
docker compose restart api
# 摰<><E691B0><EFBFBD>滚遣嚗<E981A3><E59A97><EFBFBD>靝耨<E99D9D><EFBFBD> docker-compose.yaml嚗?docker compose down
docker compose up -d
```
---
## 瘜冽<E7989C>鈭钅★銝𡒊<E98A9D>敹?
### <20>?<3F><>雿喳<E99BBF>頝?
1. **摰𡁏<E691B0><EFBFBD>遢**
```bash
# 瘥誩予<E8AAA9>芸𢆡憭<F0A286A1>遢嚗<E981A2><EFBFBD><EFBFBD> crontab嚗? 0 2 * * * pg_dump -h <RDS<44><EFBFBD>> -U dify_user dify_prod | gzip > /backup/dify_$(date +\%Y\%m\%d).sql.gz
```
2. **<2A>烐綉蝤<E7B689><E89DA4>蝛粹𡢿**
```bash
# 霈曄蔭<E69B84>𡃏郎嚗<E9838E><E59A97> /data 雿輻鍂<E8BCBB>?> 80% <20><EFBFBD>𡁶䰻嚗? # <20>臭蝙<E887AD>券燵<E588B8><EFBFBD>鈭𤑳<E988AD><F0A491B3><EFBFBD><E689B3>? ```
3. **雿輻鍂<E8BCBB><E98D82><EFBFBD><EFBFBD><EFBFBD>**
```bash
# 銝?ECS 霈曄蔭<E69B84><E894AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>噶鈭𡒊輕<F0A1928A><EFBFBD>
# <20>?SAE 銝剝<E98A9D>蝵?DIFY_API_BASE=http://dify.internal:5000
# <20><EFBFBD><E494B6><EFBFBD>甇?IP
```
4. **<2A><>𧋦<EFBFBD><F0A78BA6><EFBFBD>**
```bash
# docker-compose.yaml 銝凋蝙<E5878B><EFBFBD>雿梶<E99BBF><E6A2B6>砍噡嚗䔶<E59A97><EFBFBD>鍂 latest
image: langgenius/dify-api:0.11.2 # <20>?<3F><EFBFBD>
# image: langgenius/dify-api:latest # <20>?蝳<>迫嚗<E8BFAB><EFBFBD>賢紡<E8B3A2><EFBFBD><E6B8AF>澆捆嚗? ```
### <20>?蝏嘥笆蝳<E7AC86>
1. **蝳<><EFBFBD>?.env 銝凋蝙<E5878B>?REDIS_HOST=localhost**
```bash
# <20>?<3F>游𦶢<E6B8B8>躰秤嚗<E7A7A4><E59A97>撖潸稲<E6BDB8>滚𦛚<E6BB9A>臬𢆡憭梯揖嚗? REDIS_HOST=localhost
# <20>?甇<><EFBFBD>滨蔭嚗<E894AD>銁 Docker Compose 銝凋蝙<E5878B><EFBFBD><E586BD><EFBFBD>嚗? REDIS_HOST=redis
```
2. **蝳<><EFBFBD><EFBFBD>摰䀹䲮 docker-compose.yaml <20><>瓲敹<E793B2><E695B9><EFBFBD>?*
```bash
# <20>?<3F>梢埯<E6A2A2><EFBFBD><EFBFBD><E59A97>撖潸稲<E6BDB8><EFBFBD><EFBFBD>虜嚗? # - <20>𣳇膄 nginx <20>?<3F>滨垢 CORS <20>躰秤
# - <20>𣳇膄 worker <20>?撘<>郊隞餃𦛚憭梯揖
# - <20>𣳇膄 sandbox <20>?隞<><E99A9E><EFBFBD><E996AB><EFBFBD><EFBFBD><E585B8>賢仃<E8B3A2>?
# <20>?甇<><EFBFBD>𡁏<EFBFBD>
# 雿輻鍂摰䀹䲮摰峕㟲<E5B395>滨蔭嚗䔶<E59A97>靽格㺿 .env <20><EFBFBD><E887AC><EFBFBD>
```
3. **蝳<><EFBFBD>?2<>?G <20>?ECS 銝𠹺<E98A9D><F0A0B9BA>滨蔭 Swap**
```bash
# <20>?<3F>梢埯嚗<E59FAF><E59A97><EFBFBD>?OOM 撏拇<E6928F>嚗? # 瘝⊥<E7989D> Swap嚗<70><E59A97>摮条鍂撠賢<E692A0><E8B3A2>滚𦛚<E6BB9A>湔𦻖鋡?Kill
# <20>?敹<><EFBFBD>滨蔭 Swap
fallocate -l 4G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
```
4. **蝳<><EFBFBD><EFBFBD>鈭抒㴓憓<E3B493><EFBFBD>?DEBUG=true**
```bash
# 隡𡁏𠂔<F0A1818F><EFBFBD><E884AB>煺縑<E785BA><EFBFBD><EFBFBD><E68692>API Key<65><79><EFBFBD><EFBFBD><EFBFBD><E69296>嚗? DEBUG=false # <20>? ```
5. **蝳<>迫雿輻鍂撘勗<E69298><E58B97>?*
```bash
# 敹<>◆雿輻鍂撘箏<E69298><E7AE8F><EFBFBD><EFBFBD><EFBFBD><EFBFBD>16雿㵪<E99BBF><E3B5AA><EFBFBD>鉄憭批<E686AD><E689B9><EFBFBD><E8B8BA>㺭摮𨰜<E691AE><F0A8B09C>鸌畾𠰴<E795BE>蝚佗<E89D9A>
SECRET_KEY=$(openssl rand -base64 32)
REDIS_PASSWORD=$(openssl rand -base64 24)
WEAVIATE_API_KEY=$(openssl rand -base64 24)
```
6. **蝳<><EFBFBD>湧蠧 Redis <20>?Weaviate 蝡臬藁<E887AC><EFBFBD>蝵?*
```bash
# 摰䀹䲮<E480B9>滨蔭暺䁅恕銝齿𠂔<E9BDBF><EFBFBD>鈭𤤿垢<F0A4A4BF><E59EA2><EFBFBD>銝滩<E98A9D><E6BBA9>芸楛瘛餃<E7989B>
# <20>?<3F>梢埯<E6A2A2>滨蔭
services:
redis:
ports:
- "6379:6379" # 隡朞◤<E69C9E>餃稬嚗?
# <20>?甇<><EFBFBD>𡁏<EFBFBD>嚗帋<E59A97><E5B88B>?Docker 蝵𤑳<E89DB5><F0A491B3><EFBFBD><EFBFBD>? ```
7. **蝳<><EFBFBD>湔𦻖靽格㺿<E6A0BC>唳旿摨?*
```bash
# 銝滩<E98A9D><E6BBA9>见𢆡靽格㺿 Dify <20>唳旿摨梶<E691A8>銵函<E98AB5><E587BD><EFBFBD><EFBFBD><EFBFBD>唳旿
# 敹<><EFBFBD><EFBFBD> Dify API <20>?Web UI <20><EFBFBD>
```
8. **蝳<><EFBFBD>?ECS 銝𡃏<E98A9D><EFBFBD><E98AB5>隞𡝗<E99A9E><F0A19D97><EFBFBD><E596AE>?*
```bash
# 餈坔蝱 ECS 銝㯄秄<E3AF84><EFBFBD> Dify嚗䔶<E59A97><EFBFBD><E996AC>蝵脣<E89DB5>隞硋<E99A9E><E7A18B>? # <20><EFBFBD><EFBFBD><E99F8F>蝡硺<E89DA1><E7A1BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E588B8>? ```
### <20>𩤃<EFBFBD> <20><EFBFBD><E6BBA9><EFBFBD>
1. **<2A>唳旿銝餅<E98A9D>**
- <20><><EFBFBD><EFBFBD><E58CA7>𤩺㺭<F0A4A9BA><EFBFBD><E6A180><EFBFBD><EFBFBD><EFBFBD><E8B3A2>典銁<E585B8><EFBFBD> ECS <20>?OSS 銝? - 摰𡁏<E691B0><EFBFBD><E79289>交㺭<E4BAA4><EFBFBD>隞賜<E99A9E>摰峕㟲<E5B395>?
2. **<2A>鞉𧋦<E99E89><EFBFBD>**
- ECS <20><EFBFBD>隞䁅晶 vs <20><><EFBFBD><E58391><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6A180><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㗇𥋘嚗? - <20>烐綉 OSS 摮睃<E691AE><E79D83><EFBFBD><EFBFBD><E7989A><EFBFBD><E59A97><EFBFBD><EFBFBD><E6BBA9><EFBFBD>蝞梹<E89D9E>
3. **<2A><>漣蝑𣇉裦**
```bash
# <20><>漣 Dify <20><>𧋦<EFBFBD><EFBFBD>甇仿炊嚗? # 1. 憭<><EFBFBD>唳旿摨? # 2. <20><EFBFBD>霂閧㴓憓<E3B493><E68693>霂? # 3. <20>㗇𥋘銝𡁜𦛚雿𤾸陸<F0A4BEB8><EFBFBD>蝥? # 4. <20>𡁜末<F0A1819C><EFBFBD><E5A2A7><EFBFBD><EFBFBD>
```
4. **蝘<><E89D98><EFBFBD><EFBFBD>蝵脰楝敺?*
```
敶枏<E695B6><E69E8F><EFBFBD> <20>?<3F>湔𦻖憭滚<E686AD><E6BB9A>啣恥<E595A3>瑞㴓憓? <20><EFBFBD> 撖澆枂 docker-compose.yaml
<20><EFBFBD> 撖澆枂 .env嚗<76><E59A97><EFBFBD>煺縑<E785BA>舀𤜯<E88880><EFBFBD>
<20><EFBFBD> <20><EFBFBD>銝箏<E98A9D><EFBFBD><E98B86><EFBFBD>穿<EFBFBD><EFBFBD><E98A9D><EFBFBD>蝵莎<E89DB5>
<20><EFBFBD> <20>𣂷<EFBFBD><F0A382B7><EFBFBD><E7BE93><EFBFBD><E58CA7>函蔡<E587BD><EFBFBD><E8A781>? ```
---
## <20><> <20><><EFBFBD>
### A. <20><><EFBFBD>撘箏<E69298><E7AE8F><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
```bash
# <20><EFBFBD> 1: 雿輻鍂 openssl
openssl rand -base64 32
# <20><EFBFBD> 2: 雿輻鍂 pwgen
pwgen -s 32 1
# <20><EFBFBD> 3: 雿輻鍂 Python
python3 -c "import secrets; print(secrets.token_urlsafe(32))"
```
### B. Dify API 撣貊鍂蝡舐<E89DA1>
```bash
# <20>亙熒璉<E78692><E79289>?GET http://<ECS<43><53><EFBFBD>IP>:5000/health
# <20>𥕦遣<F0A595A6>唳旿<E594B3>?POST http://<ECS<43><53><EFBFBD>IP>:5000/v1/datasets
Headers: Authorization: Bearer <API_KEY>
Body: {"name": "test-dataset"}
# 銝𠹺<E98A9D><F0A0B9BA><EFBFBD>
POST http://<ECS<43><53><EFBFBD>IP>:5000/v1/datasets/{dataset_id}/documents
Headers: Authorization: Bearer <API_KEY>
Body: (multipart/form-data)
# 霂凋<E99C82><EFBFBD>蝝?POST http://<ECS<43><53><EFBFBD>IP>:5000/v1/datasets/{dataset_id}/retrieve
Headers: Authorization: Bearer <API_KEY>
Body: {"query": "xxx", "top_k": 5}
```
### C. <20><EFBFBD><E8A9A8><EFBFBD><EFBFBD>暹𦻖
- [Dify 摰䀹䲮<E480B9><E4B2AE>](https://docs.dify.ai/)
- [Docker Compose <20><>](https://docs.docker.com/compose/)
- [Weaviate <20><>](https://weaviate.io/developers/weaviate)
- [<EFBFBD><EFBFBD>鈭?ECS <20><>](https://help.aliyun.com/product/25365.html)
- [<EFBFBD><EFBFBD>鈭?OSS <20><>](https://help.aliyun.com/product/31815.html)
---
**<EFBFBD><EFBFBD>﹝蝏湔擪**嚗?- 憒<><E68692><EFBFBD><EFBFBD><E6A185>硋遣霈殷<E99C88>霂瑁<E99C82>蝟餅<E89D9F><E9A485><EFBFBD><EFBFBD>
- <20><><EFBFBD>擧凒<E693A7><EFBFBD>2025-12-13
- 銝𧢲活摰⊥䰻嚗?025-03-13