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%)
29 KiB
Dify ECS <20>函蔡摰<E894A1><E691B0><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD>﹝<EFBFBD><EFBFBD>𧋦: v1.1 (靽桀<E99DBD><E6A180>游𦶢<E6B8B8>滨蔭<E6BBA8>躰秤)
<EFBFBD>𥕦遣<EFBFBD>園𡢿: 2025-12-13
**<2A><><EFBFBD>𦒘耨霈?: 2025-12-13
<EFBFBD><EFBFBD>鍂<EFBFBD><EFBFBD>凒: AIclinicalresearch 撟喳蝱 - Dify RAG <20>滚𦛚<E6BB9A>函蔡
**<2A>格<EFBFBD>霂餉<E99C82>?: 餈鞟輕撌亦<E6928C>撣<EFBFBD><E692A3><EFBFBD><EFBFBD>蝡臬<E89DA1><E887AC>穃極蝔见<E89D94>
v1.1 <20>湔鰵<E6B994>亙<EFBFBD>:
- <EFBFBD>?靽桀<E99DBD>嚗鑹edis <20>滨蔭隞?
localhost<20>嫣蛹redis嚗<EFBFBD>稲<EFBFBD>賡<EFBFBD>霂荔<EFBFBD> - <EFBFBD>?<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>單䲮獢?
<EFBFBD><EFBFBD> <20><>﹝<EFBFBD>桀<EFBFBD>
- 銝箔<EFBFBD>銋<EFBFBD><EFBFBD>㗇𥋘 ECS + Docker Compose
- [<5B>函蔡<E587BD>嗆<EFBFBD><E59786>霄(#<23>函蔡<E587BD>嗆<EFBFBD><E59786>?
- <EFBFBD>滨蔭<EFBFBD><EFBFBD><EFBFBD>皜<EFBFBD><EFBFBD>
- [ECS <20>滚𦛚<E6BB9A>券<EFBFBD>蝵孫(#ecs-<2D>滚𦛚<E6BB9A>券<EFBFBD>蝵?
- 摰㕑<EFBFBD>甇仿炊
- <EFBFBD>滨蔭霂湔<EFBFBD>
- [<5B>臬𢆡銝𡡞<E98A9D>霂<EFBFBD>(#<23>臬𢆡銝𡡞<E98A9D>霂?
- [<5B>烐綉銝𡒊輕<F0A1928A>也(#<23>烐綉銝𡒊輕<F0A1928A>?
- <EFBFBD><EFBFBD><EFBFBD><EFBFBD>埝䰻
- [瘜冽<E7989C>鈭钅★銝𡒊<E98A9D>敹䀉(#瘜冽<E7989C>鈭钅★銝𡒊<E98A9D>敹?
銝箔<EFBFBD>銋<EFBFBD><EFBFBD>㗇𥋘 ECS + Docker Compose
<EFBFBD>?<3F>詨<EFBFBD><E8A9A8>笔<EFBFBD>
1. *<EFBFBD>唳旿<EFBFBD><EFBFBD><EFBFBD>銝𡡞<EFBFBD>蝘<EFBFBD><EFBFBD><EFBFBD>餌<EFBFBD>銵䔶<EFBFBD>蝥Y瑪嚗?
<EFBFBD>?Dify 鈭烐<E988AD><E78390>?(SaaS)嚗𡁏㺭<F0A1818F>桐<EFBFBD>隡惩<E99AA1>蝚砌<E89D9A><E7A08C>寞<EFBFBD><E5AF9E>∪膥
<0A>?ECS <20>芸遣嚗𡁏㺭<F0A1818F>?100% <20>刻䌊撌梁<E6928C><E6A281>輸<EFBFBD>鈭𤏸揭<F0A48FB8>瑕<EFBFBD>
**敶勗<E695B6>**嚗?- 銝厩睻<E58EA9>駁堺撖寧<E69296><E5AFA7>娍㺭<E5A88D>桀枂<E6A180>X<EFBFBD><EFBCB8><EFBFBD>艇<EFBFBD>潛恣<E6BD9B>?- <20>典虾隞亙笆摰X<E691B0>霂湛<E99C82>"<22>唳旿撠勗銁<E58B97>睲賑<E79DB2><E8B391><EFBFBD><EFBFBD>劐<EFBFBD><E58A90>滚𦛚<E6BB9A>其<EFBFBD>嚗峕𧊋<E5B395>亙虾<E4BA99>函蔡<E587BD>典龫<E585B8>W<EFBFBD>蝵?
- 蝚血<EFBFBD> PRD 銝剔<E98A9D><E58994>詨<EFBFBD>閬<EFBFBD><E996AC>嚗?<3F>唳旿 100% <20>砍𧑐"
2. *<EFBFBD><EFBFBD><EFBFBD>璅∪<EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗<EFBFBD><EFBFBD><EFBFBD>匧<EFBFBD><EFBFBD>函蔡<EFBFBD>賢<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>W<EFBFBD>蝵烐<E89DB5>瘜閗<E7989C><E99697>亙<EFBFBD><E4BA99>劐<EFBFBD>嚗?- ECS + Docker Compose <20>臭誑<E887AD>湔𦻖<E6B994>枏<EFBFBD><E69E8F>𣂼<EFBFBD>鋆<EFBFBD><E98B86>嚗<EFBFBD><E59A97>蝏坔龫<E59D94>W<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>V<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 銝?
<EFBFBD>滨蔭<EFBFBD><EFBFBD><EFBFBD>皜<EFBFBD><EFBFBD>
<EFBFBD>?敹<><E695B9>韏<EFBFBD><E99F8F>
| 韏<EFBFBD><EFBFBD>蝐餃<EFBFBD> | <EFBFBD>滨蔭撱箄悅 | 憸<EFBFBD>摯韐寧鍂 | <EFBFBD>券<EFBFBD>? |
|---|---|---|---|
| *ECS <20>滚𦛚<E6BB9A>? | 2<EFBFBD>?G / 蝟餌<E89D9F><E9A48C>?0GB / <20>唳旿<E594B3>?00GB | ~200<30>?<3F>? | 餈鞱<EFBFBD> Dify + Weaviate |
| RDS PostgreSQL | 撌脫<EFBFBD>嚗<EFBFBD><EFBFBD><EFBFBD>剁<EFBFBD> | 0<EFBFBD><EFBFBD><EFBFBD>憓鮋<EFBFBD>嚗? | Dify <20><>㺭<EFBFBD>桀<EFBFBD><E6A180>? |
| OSS 摮睃<E691AE> | 撌脫<EFBFBD>嚗<EFBFBD><EFBFBD><EFBFBD>剁<EFBFBD> | <EFBFBD>厰<EFBFBD>霈∟晶 | <EFBFBD><EFBFBD>﹝摮睃<EFBFBD> |
| VPC 蝵𤑳<E89DB5> | 撌脫<EFBFBD>嚗𠄎AE<EFBFBD><EFBFBD><EFBFBD>汲PC嚗? | 0<EFBFBD>? | <EFBFBD><EFBFBD><EFBFBD><EFBFBD>帋縑 |
<EFBFBD>?頧臭辣<E887AD><E8BEA3><EFBFBD>
# <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
<EFBFBD>?韐血噡銝擧<E98A9D><E693A7>?
- <EFBFBD>輸<EFBFBD>鈭𤏸揭<EFBFBD>瘀<EFBFBD>撌脫<EFBFBD>嚗?- 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>
-
<EFBFBD>餃<EFBFBD><EFBFBD>輸<EFBFBD>鈭烐綉<EFBFBD>嗅蝱 <20>?鈭烐<EFBFBD><EFBFBD>∪膥 ECS <20>?<EFBFBD>𥕦遣摰硺<EFBFBD>
-
<EFBFBD>箇<EFBFBD><EFBFBD>滨蔭嚗? ``` <0A>啣<EFBFBD><E595A3><EFBFBD>虾<EFBFBD>典躹: 銝?SAE <20>詨<EFBFBD>嚗<EFBFBD><E59A97>嚗𡁜<E59A97>銝?-<2D>剖<EFBFBD>嚗? 摰硺<E691B0>閫<EFBFBD>聢: ecs.t6-c1m2.large (2<>?G) <0A>𨅯<EFBFBD>: Ubuntu 22.04 LTS 64雿? 摮睃<E691AE>:
- 蝟餌<EFBFBD><EFBFBD>? ESSD鈭𤑳<E988AD> 40GB
- <EFBFBD>唳旿<EFBFBD>? ESSD鈭𤑳<E988AD> 100GB (<28><>蝸<EFBFBD>?/data)
-
蝵𤑳<EFBFBD><EFBFBD>滨蔭嚗? ``` 銝𤘪<E98A9D>蝵𤑳<E89DB5> VPC: <20>㗇𥋘 SAE <20><><EFBFBD>函<EFBFBD> VPC 摰匧<E691B0>蝏? <20>𥕦遣<F0A595A6>啣<EFBFBD><E595A3>函<EFBFBD>嚗屸<E59A97>蝵桀<E89DB5><E6A180>孵<EFBFBD>閫<EFBFBD><E996AB>嚗<EFBFBD><E59A97>儭?摰匧<E691B0>蝥Y瑪嚗㚁<E59A97> <0A>?<3F><>捂 22/TCP <20>交<EFBFBD>嚗𡁏<E59A97><F0A1818F><EFBFBD><EFBFBD><EFBFBD>砍恕<E7A08D>祉<EFBFBD>IP # SSH蝞∠<E89D9E> <0A>?<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>霈輸䔮 <0A>?<3F>垍<EFBFBD> 6379/TCP <20>交<EFBFBD>嚗?.0.0.0/0 # Redis蝳<73>迫<EFBFBD>祉<EFBFBD>霈輸䔮 <0A>?<3F>垍<EFBFBD> 8080/TCP <20>交<EFBFBD>嚗?.0.0.0/0 # Weaviate蝳<65>迫<EFBFBD>祉<EFBFBD>霈輸䔮 <0A>?<3F>垍<EFBFBD> <20><><EFBFBD>? <20>交<EFBFBD>嚗?.0.0.0/0 # 暺䁅恕<E48185>垍<EFBFBD> <0A>祉<EFBFBD>IP: <20><><EFBFBD><EFBFBD>祉<EFBFBD>IPv4<76>啣<EFBFBD>嚗<EFBFBD>鍂鈭燑SH<53>餃<EFBFBD><E9A483>屸<EFBFBD><E5B1B8>譍<EFBFBD>頧踝<E9A0A7>
<EFBFBD>𩤃<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>滨蔭嚗? ```
-
蝟餌<EFBFBD><EFBFBD>滨蔭嚗? ``` <0A>餃<EFBFBD><E9A483>剛<EFBFBD>: 雿輻鍂撖<E98D82>𤨎撖對<E69296><E5B08D>刻<EFBFBD>嚗㗇<E59A97>撖<EFBFBD><E69296> 摰硺<E691B0><E7A1BA>滨妍: dify-ecs-prod
甇仿炊 2嚗朞<E59A97><E69C9E>亙<EFBFBD> ECS
# 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>
# <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嚗?
*銝箔<EFBFBD>銋<EFBFBD><EFBFBD>憿駁<EFBFBD>蝵?Swap嚗?
- <EFBFBD>函<EFBFBD> ECS <20>?2<>?G <20><><EFBFBD>
- Dify <20>典振獢塚<E78DA2>API+Worker+Web+Redis+Weaviate+Nginx嚗厩征頧賢停<E8B3A2><E5819C>閬?3GB+
- <EFBFBD>劐犖銝𠹺<EFBFBD>憭扳<EFBFBD>隞嗆<EFBFBD>餈𥡝<EFBFBD><EFBFBD>煾<EFBFBD>璉<EFBFBD>蝝X𧒄嚗峕<EFBFBD><EFBFBD>枏<EFBFBD><EFBFBD>?OOM嚗<4D><E59A97>摮䀹滯<E480B9>綽<EFBFBD>撏拇<E6928F>
- Swap <20>臬<EFBFBD>摮条<E691AE>"<22>𤑳<EFBFBD><F0A491B3>?嚗<><E59A97><EFBFBD>格𧒄<E6A0BC>餉<EFBFBD>靽肽<E99DBD><E882BD>滚𦛚銝滚援皞?
# <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
# 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>嚗?
# <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
摰㕑<EFBFBD>甇仿炊
甇仿炊 1嚗𡁜<E59A97>憭?Dify <20>函蔡<E587BD>桀<EFBFBD>
# <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>嚗?
# ========= <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>
# <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>?*嚗?
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>嚗?
# <20>𩤃<EFBFBD> 摰匧<E691B0><E58CA7>滨蔭嚗𡁶垢<F0A181B6><E59EA2><EFBFBD>摰𡁜<E691B0><F0A1819C>砍𧑐嚗<F0A79190>俈甇W<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>
*<EFBFBD>𩤃<EFBFBD> 摰匧<E691B0>蝥Y瑪嚗?
# <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
銝滩<EFBFBD><EFBFBD>惩<EFBFBD><EFBFBD>滚𦛚嚗<EFBFBD>陘<EFBFBD>嗆糓 nginx
services: api: ... worker: ...
<EFBFBD>?蝻箏<E89DBB> nginx嚗<78><E59A97>撖潸稲<E6BDB8>滨垢<E6BBA8>䭾<EFBFBD>霈輸䔮 API嚗?```
**<2A>?甇<>&<EFBFBD>𡁏<EFBFBD>**嚗?```bash
靽脲<EFBFBD>摰䀹䲮 docker-compose.yaml 銝滚<E98A9D>
<EFBFBD>芯耨<EFBFBD>?.env <20>臬<EFBFBD><E887AC>㗛<EFBFBD>
憒<EFBFBD><EFBFBD>蝖桀<EFBFBD><EFBFBD><EFBFBD>閬<EFBFBD><EFBFBD><EFBFBD>湛<EFBFBD><EFBFBD>芣溶<EFBFBD>删垢<EFBFBD><EFBFBD><EFBFBD>撠<EFBFBD><EFBFBD><EFBFBD>惩拿<EFBFBD>滨蔭
### 甇仿炊 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>唳旿摨?
# <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
<EFBFBD>臬𢆡銝𡡞<EFBFBD>霂?
甇仿炊 1嚗𡁜鍳<F0A1819C>?Dify <20>滚𦛚
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>?
# 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>?
# <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>
-
**<2A>𥕦遣蝞∠<E89D9E><E288A0>䁅揭<E48185>?*嚗? - <20>桃拳嚗惨dmin@your-domain.com
- 撖<EFBFBD><EFBFBD>嚗?strong-password>
-
**<2A>滨蔭 LLM <20>𣂷<EFBFBD><F0A382B7>?*嚗? - 餈𥕦<E9A488> "霈曄蔭" <20>?"璅∪<E79285><E288AA>𣂷<EFBFBD><F0A382B7>?
- 瘛餃<EFBFBD> DeepSeek/Qwen 蝑?API Key
甇仿炊 5嚗𡁻<E59A97>蝵桀<E89DB5>蝡舐㴓憓<E3B493><E68693><EFBFBD>?
<EFBFBD>?SAE <20>𡒊垢<F0A1928A>滚𦛚<E6BB9A><F0A69B9A>㴓憓<E3B493><E68693><EFBFBD>譍葉瘛餃<E7989B>嚗?
# 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>
- 撱箄悅雿輻鍂<EFBFBD><EFBFBD><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>嚗?
<EFBFBD>厰★ 2嚗𡁏𧋦<F0A1818F>啣<EFBFBD><E595A3>剁<EFBFBD>銝齿綫<E9BDBF>琜<EFBFBD>
**蝻箇<E89DBB>**嚗?- 蝤<><E89DA4>蝛粹𡢿<E7B2B9>厰<EFBFBD>
- <EFBFBD>䭾<EFBFBD>璅芸<EFBFBD><EFBFBD>拙<EFBFBD>
- <EFBFBD>唳旿憭<EFBFBD>遢暻餌<EFBFBD>
**隞<><E99A9E><EFBFBD>鍂鈭?*嚗𡁏<E59A97>霂閧㴓憓<E3B493><E68693>撠讛<E692A0>璅⊿<E79285>蝵?
<EFBFBD>圲 <20>唳旿摨㯄<E691A8>蝵株祕閫?
Dify <20>唳旿摨㮖<E691A8><E3AE96>𡒊垢<F0A1928A>唳旿摨枏<E691A8>蝳?
RDS PostgreSQL 摰硺<E691B0>
<0A>鎿<EFBFBD> <20>唳旿摨?1: clinical_research (<28>𡒊垢銝餅㺭<E9A485>桀<EFBFBD>)
<0A>? <20>鎿<EFBFBD> Schema: platform_schema
<0A>? <20>鎿<EFBFBD> Schema: asl_schema
<0A>? <20>鎿<EFBFBD> Schema: dc_schema
<0A>? <20>婙<EFBFBD> ...
<0A>婙<EFBFBD> <20>唳旿摨?2: dify_prod (Dify <20>唳旿摨?
<20>鎿<EFBFBD> Schema: public
<20>婙<EFBFBD> ...
隡睃飵嚗?- <20>唳旿<E594B3>𠉛氖嚗<E6B096><E59A97><EFBFBD>剁<EFBFBD>
- <EFBFBD>祉<EFBFBD>憭<EFBFBD>遢蝑𣇉裦
- <EFBFBD>踹<EFBFBD>韏<EFBFBD><EFBFBD>蝡硺<EFBFBD>
**餈墧𦻖瘙𣳇<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
摰匧<EFBFBD><EFBFBD>惩𤐄嚗?```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>
<EFBFBD>?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/
<0A>鎿<EFBFBD> api.log # API <20>滚𦛚<E6BB9A>亙<EFBFBD>
<0A>鎿<EFBFBD> worker.log # Worker <20>亙<EFBFBD>
<0A>婙<EFBFBD> error.log # <20>躰秤<E8BAB0>亙<EFBFBD>
3. <20>亙<EFBFBD>頧株蓮<E6A0AA>滨蔭
# 摰㕑<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
<EFBFBD><EFBFBD> <20>扯<EFBFBD><E689AF>烐綉
1. 韏<><E99F8F>雿輻鍂<E8BCBB><E98D82><EFBFBD>
# <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>?
# 餈墧𦻖<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>烐綉
# 餈墧𦻖<E5A2A7>?Redis 摰孵膥
docker exec -it dify-redis redis-cli -a <REDIS_PASSWORD>
# <20>亦<EFBFBD>靽⊥<E99DBD>
INFO
INFO memory
INFO stats
<EFBFBD><EFBFBD> 摰𡁏<E691B0>蝏湔擪隞餃𦛚
瘥誩𪂹隞餃𦛚
# 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
瘥𤩺<EFBFBD>隞餃𦛚
# 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
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>埝䰻
<EFBFBD>𤣳 撣貉<E692A3><E8B289>桅<EFBFBD>
<EFBFBD>桅<EFBFBD> 1嚗鋫PI 摰孵膥<E5ADB5>䭾<EFBFBD><E4ADBE>臬𢆡 - Redis 餈墧𦻖憭梯揖嚗<E68F96><E59A97>憸煾<E686B8>霂荔<E99C82>
<EFBFBD><EFBFBD>𠶖嚗?```bash docker compose ps
<EFBFBD>曄內 dify-api <20>嗆<EFBFBD><E59786>蛹 Exit 1 <20>碶<EFBFBD><E7A2B6>剝<EFBFBD><E5899D>?
docker compose logs api
<EFBFBD>曄內<EFBFBD>躰秤嚗?# redis.exceptions.ConnectionError: Error connecting to localhost:6379
<EFBFBD>?# 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
<EFBFBD>桅<EFBFBD> 2嚗𡁜<E59A97>蝡航挪<E888AA>?API <20>?CORS <20>躰秤
<EFBFBD><EFBFBD>𠶖嚗?``` 瘚讛<E7989A><E8AE9B>冽綉<E586BD>嗅蝱<E59785>仿<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
<EFBFBD>桅<EFBFBD> 3嚗𡁜捆<F0A1819C>冽<EFBFBD>瘜訫鍳<E8A8AB>?- <20>唳旿摨栞<E691A8><E6A09E>亙仃韐?
<EFBFBD><EFBFBD>𠶖嚗?```bash docker compose logs api
<EFBFBD>曄內<EFBFBD>躰秤嚗?# 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>
<EFBFBD>桅<EFBFBD> 4嚗𡁏<E59A97><F0A1818F>∟<EFBFBD>銵䔶<E98AB5>畾菜𧒄<E88F9C>游<EFBFBD>撏拇<E6928F>嚗㇉OM <20><><EFBFBD>皞W枂嚗?
<EFBFBD><EFBFBD>𠶖嚗?```bash dmesg | grep -i kill
<EFBFBD>曄內嚗鐾ut of memory: Killed process xxx (dify-api)
docker compose ps
摰孵膥銝齿鱏<EFBFBD>滚鍳
**<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
<EFBFBD>桅<EFBFBD> 2嚗鋫PI 餈𥪜<E9A488> 500 <20>躰秤
<EFBFBD>埝䰻甇仿炊嚗?```bash
1. <20>亦<EFBFBD> API <20>亙<EFBFBD>
docker compose logs -f api | grep ERROR
2. 璉<><E79289>交㺭<E4BAA4>桀<EFBFBD>餈墧𦻖
docker exec -it dify-api sh
<EFBFBD>典捆<EFBFBD>典<EFBFBD><EFBFBD>扯<EFBFBD>
python -c " import psycopg2 conn = psycopg2.connect( host='<RDS<44>啣<EFBFBD>>', database='dify_prod', user='dify_user', password='' ) print('Connection OK') "
#### <20>桅<EFBFBD> 3嚗𡁜<E59A97><F0A1819C>𤩺<EFBFBD>蝝W仃韐?
**<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>滚遣蝝W<E89D9D>嚗<EFBFBD><E59A97><EFBFBD>擧<EFBFBD>畾蛛<E795BE>
# <20>?Dify Web UI 銝哨<E98A9D>霈曄蔭 <20>?<3F>唳旿<E594B3>?<3F>?<3F>齿鰵蝝W<E89D9D>
<EFBFBD>桅<EFBFBD> 4嚗𡁜<E59A97>蝵𤏸<E89DB5><F0A48FB8>亙仃韐伐<E99F90>SAE <20>䭾<EFBFBD>霈輸䔮 ECS嚗?
<EFBFBD>埝䰻甇仿炊嚗?```bash
1. 璉<><E79289>亙<EFBFBD><E4BA99>函<EFBFBD>閫<EFBFBD><E996AB>
<EFBFBD>輸<EFBFBD>鈭烐綉<EFBFBD>嗅蝱 <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
憒<EFBFBD><EFBFBD><EFBFBD>舐鍂鈭<EFBFBD>俈<EFBFBD>怠<EFBFBD>嚗峕溶<EFBFBD>㰘<EFBFBD><EFBFBD>辷<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
瘜冽<EFBFBD>鈭钅★銝𡒊<EFBFBD>敹?
<EFBFBD>?<3F><>雿喳<E99BBF>頝?
-
摰𡁏<EFBFBD>憭<EFBFBD>遢
# 瘥誩予<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 -
<EFBFBD>烐綉蝤<EFBFBD><EFBFBD>蝛粹𡢿
# 霈曄蔭<E69B84>𡃏郎嚗<E9838E><E59A97> /data 雿輻鍂<E8BCBB>?> 80% <20>園<EFBFBD>𡁶䰻嚗? # <20>臭蝙<E887AD>券燵<E588B8>䔶<EFBFBD>鈭𤑳<E988AD><F0A491B3>扳<EFBFBD><E689B3>? ``` -
雿輻鍂<EFBFBD><EFBFBD><EFBFBD><EFBFBD>笔<EFBFBD>
# 銝?ECS 霈曄蔭<E69B84><E894AD><EFBFBD><EFBFBD>笔<EFBFBD>嚗<EFBFBD>噶鈭𡒊輕<F0A1928A>歹<EFBFBD> # <20>?SAE 銝剝<E98A9D>蝵?DIFY_API_BASE=http://dify.internal:5000 # <20>䔶<EFBFBD><E494B6>臬<EFBFBD>甇?IP -
<EFBFBD><EFBFBD>𧋦<EFBFBD><EFBFBD><EFBFBD>
# 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>澆捆嚗? ```
<EFBFBD>?蝏嘥笆蝳<E7AC86>迫
-
蝳<EFBFBD>迫<EFBFBD>?.env 銝凋蝙<E5878B>?REDIS_HOST=localhost
# <20>?<3F>游𦶢<E6B8B8>躰秤嚗<E7A7A4><E59A97>撖潸稲<E6BDB8>滚𦛚<E6BB9A>臬𢆡憭梯揖嚗? REDIS_HOST=localhost # <20>?甇<>&<EFBFBD>滨蔭嚗<E894AD>銁 Docker Compose 銝凋蝙<E5878B>冽<EFBFBD><E586BD>∪<EFBFBD>嚗? REDIS_HOST=redis -
*蝳<EFBFBD>迫<EFBFBD>惩<EFBFBD>摰䀹䲮 docker-compose.yaml <20><>瓲敹<E793B2><E695B9><EFBFBD>?
# <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> -
蝳<EFBFBD>迫<EFBFBD>?2<>?G <20>?ECS 銝𠹺<E98A9D><F0A0B9BA>滨蔭 Swap
# <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 -
蝳<EFBFBD>迫<EFBFBD>函<EFBFBD>鈭抒㴓憓<EFBFBD>蝙<EFBFBD>?DEBUG=true
# 隡𡁏𠂔<F0A1818F>脫<EFBFBD><E884AB>煺縑<E785BA>荔<EFBFBD>憒<EFBFBD><E68692>API Key<65><79>㺭<EFBFBD>桀<EFBFBD>撖<EFBFBD><E69296>嚗? DEBUG=false # <20>? ``` -
*蝳<EFBFBD>迫雿輻鍂撘勗<EFBFBD><EFBFBD>?
# 敹<>◆雿輻鍂撘箏<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) -
*蝳<EFBFBD>迫<EFBFBD>湧蠧 Redis <20>?Weaviate 蝡臬藁<E887AC>啣<EFBFBD>蝵?
# 摰䀹䲮<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>? ``` -
*蝳<EFBFBD>迫<EFBFBD>湔𦻖靽格㺿<EFBFBD>唳旿摨?
# 銝滩<E98A9D><E6BBA9>见𢆡靽格㺿 Dify <20>唳旿摨梶<E691A8>銵函<E98AB5><E587BD><EFBFBD><EFBFBD><EFBFBD>唳旿 # 敹<>◆<EFBFBD>朞<EFBFBD> Dify API <20>?Web UI <20>滢<EFBFBD> -
*蝳<EFBFBD>迫<EFBFBD>?ECS 銝𡃏<E98A9D>銵<EFBFBD><E98AB5>隞𡝗<E99A9E><F0A19D97>單<EFBFBD><E596AE>?
# 餈坔蝱 ECS 銝㯄秄<E3AF84>其<EFBFBD> Dify嚗䔶<E59A97>閬<EFBFBD><E996AC>蝵脣<E89DB5>隞硋<E99A9E><E7A18B>? # <20>踹<EFBFBD>韏<EFBFBD><E99F8F>蝡硺<E89DA1><E7A1BA><EFBFBD><EFBFBD><EFBFBD>券<EFBFBD><E588B8>? ```
<EFBFBD>𩤃<EFBFBD> <20>滩<EFBFBD><E6BBA9>鞾<EFBFBD>
-
<EFBFBD>唳旿銝餅<EFBFBD>
- <EFBFBD><EFBFBD><EFBFBD>匧<EFBFBD><EFBFBD>𤩺㺭<EFBFBD>桀<EFBFBD><EFBFBD><EFBFBD>﹝<EFBFBD>賢<EFBFBD><EFBFBD>典銁<EFBFBD>函<EFBFBD> ECS <20>?OSS 銝? - 摰𡁏<E691B0>璉<EFBFBD><E79289>交㺭<E4BAA4>桀<EFBFBD>隞賜<E99A9E>摰峕㟲<E5B395>?
-
<EFBFBD>鞉𧋦<EFBFBD>批<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>
-
<EFBFBD><EFBFBD>漣蝑𣇉裦
# <20><>漣 Dify <20><>𧋦<EFBFBD>滨<EFBFBD>甇仿炊嚗? # 1. 憭<>遢<EFBFBD>唳旿摨? # 2. <20>冽<EFBFBD>霂閧㴓憓<E3B493><E68693>霂? # 3. <20>㗇𥋘銝𡁜𦛚雿𤾸陸<F0A4BEB8>笔<EFBFBD>蝥? # 4. <20>𡁜末<F0A1819C>墧<EFBFBD><E5A2A7><EFBFBD><EFBFBD> -
*蝘<EFBFBD><EFBFBD><EFBFBD>㚚<EFBFBD>蝵脰楝敺?
敶枏<EFBFBD><EFBFBD>嗆<EFBFBD> <20>?<3F>湔𦻖憭滚<E686AD><E6BB9A>啣恥<E595A3>瑞㴓憓? <20>鎿<EFBFBD> 撖澆枂 docker-compose.yaml <0A>鎿<EFBFBD> 撖澆枂 .env嚗<76><E59A97><EFBFBD>煺縑<E785BA>舀𤜯<E88880>g<EFBFBD> <0A>鎿<EFBFBD> <20>枏<EFBFBD>銝箏<E98A9D>鋆<EFBFBD><E98B86><EFBFBD>穿<EFBFBD>銝<EFBFBD><E98A9D>桅<EFBFBD>蝵莎<E89DB5> <0A>婙<EFBFBD> <20>𣂷<EFBFBD><F0A382B7>羓<EFBFBD><E7BE93>匧<EFBFBD><E58CA7>函蔡<E587BD>见<EFBFBD><E8A781>? ```
<EFBFBD><EFBFBD> <20><><EFBFBD>
A. <20><><EFBFBD>撘箏<E69298><E7AE8F><EFBFBD><EFBFBD><EFBFBD>寞<EFBFBD>
# <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>
# <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>﹝
- Docker Compose <20><>﹝
- Weaviate <20><>﹝
- <EFBFBD>輸<EFBFBD>鈭?ECS <20><>﹝
- <EFBFBD>輸<EFBFBD>鈭?OSS <20><>﹝
<EFBFBD><EFBFBD>﹝蝏湔擪嚗?- 憒<><E68692><EFBFBD>桅<EFBFBD><E6A185>硋遣霈殷<E99C88>霂瑁<E99C82>蝟餅<E89D9F><E9A485>航<EFBFBD>韐<EFBFBD>犖
- <EFBFBD><EFBFBD><EFBFBD>擧凒<EFBFBD>堆<EFBFBD>2025-12-13
- 銝𧢲活摰⊥䰻嚗?025-03-13