【無需docker】mac本地部署dify

環境安裝準備

#安裝 postgresql@13 
brew install postgresql@13
#使用zsh的在全局添加postgresql命令集
echo 'export PATH="/usr/local/opt/postgresql@13/bin:$PATH"' >> ~/.zshrc
# 使得zsh的配置修改生效
source ~/.zshrc
# 啟動postgresql
brew services start postgresql@13
#安裝pyenv
brew install pyenv
#切換python版本至3.12
pyenv install 3.12
pyenv global 3.12
#安裝libmagic
brew install libmagic
#舊版官方教程使用poetry做依賴管理
#安裝poetry
pipx install poetry
pipx ensurepath
source ~/.zshrc
# 新版官方教程使用uv做依賴管理
#安裝uv
pipx install uv
#下載dify代碼
git clone https://github.com/langgenius/dify.git#運行dify-plugin-daemon服務
#克隆dify-plugin-daemon項目
git clone https://github.com/langgenius/dify-plugin-daemon.git
#編譯dify-plugin-daemon項目
cd dify-plugin-daemon
cp .env.example .env
go build \-ldflags "\-X 'github.com/langgenius/dify-plugin-daemon/internal/manifest.VersionX=0.0.9' \-X 'github.com/langgenius/dify-plugin-daemon/internal/manifest.BuildTimeX=$(date -u +%Y-%m-%dT%H:%M:%S%z)'" \-o $(which dify-plugin-daemon) cmd/server/main.go#運行dify-sanbox服務# 運行API服務
#進入api目錄
cd api
#復制環境變量配置文件
cp .env.example .env
#生成隨機密鑰,并替換 .env 中 SECRET_KEY 的值
awk -v key="$(openssl rand -base64 42)" '/^SECRET_KEY=/ {sub(/=.*/, "=" key)} 1' .env > temp_env && mv temp_env .env
#新版官方教程安裝依賴包
#設置uv源為國內源,確保所有依賴都能快速穩定的安裝
#編輯pyproject.toml文件,增加如下內容[[tool.uv.index]]
url = "https://pypi.tuna.tsinghua.edu.cn/simple"
default = true
#安裝依賴包
uv sync
#舊版官方教程安裝依賴包
poetry env use 3.12
poetry install
#執行數據庫遷移
#將數據庫結構遷移至最新版本
createuser -s postgres
createdb dify
#新版官方文檔數據庫遷移命令
uv run flask db upgrade
# 舊版官方教程數據庫遷移命令
poetry run flask db upgrade# 啟動API服務前需要修改redis密碼(如果不是用了項目默認密碼)
# 修改.env文件
REDIS_PASSWORD=你的redis密碼#新版官方文檔啟動API服務
uv run flask run --host 127.0.0.1 --port=5001 --debug
#舊版官方文檔啟動 API 服務
poetry run flask run --host 127.0.0.1 --port=5001 --debug
#正確輸出
* Debug mode: on
INFO:werkzeug:WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.* Running on all addresses (0.0.0.0)* Running on http://127.0.0.1:5001
INFO:werkzeug:Press CTRL+C to quit
INFO:werkzeug: * Restarting with stat
WARNING:werkzeug: * Debugger is active!
INFO:werkzeug: * Debugger PIN: 695-801-919#啟動 Worker 服務
#用于消費異步隊列任務,如知識庫文件導入、更新知識庫文檔等異步操作。 Linux / MacOS 啟動:
#新版官方文檔啟動worker服務
uv run celery -A app.celery worker -P gevent -c 1 --loglevel INFO -Q dataset,generation,mail,ops_trace
#舊版官方教程啟動worker服務
poetry run celery -A app.celery worker -P gevent -c 1 -Q dataset,generation,mail,ops_trace --loglevel INFO
# 注意,如果redis密碼不是difyai123456,需要修改.env配置文件中用于redis建立連接的配置項CELERY_BROKER_URL,否則會出現如下報錯
dify Cannot connect to redis://:**@localhost:6379/1: invalid username-password pair or user is disabled# 啟動成功,狀態展示如下
2025-05-01 03:02:44,463 INFO [connection.py:22]  Connected to redis://:**@localhost:6379/1
2025-05-01 03:02:44,474 INFO [mingle.py:40]  mingle: searching for neighbors
2025-05-01 03:02:45,496 INFO [mingle.py:49]  mingle: all alone
2025-05-01 03:02:45,517 INFO [pidbox.py:111]  pidbox: Connected to redis://:**@localhost:6379/1.
2025-05-01 03:02:45,523 INFO [worker.py:175]  celery@codemonkey-2.local ready.# 設置web服務
# 要啟動 web 前端服務,需要 Node.js v22 (LTS) 和 PNPM v10
#安裝pnpm
npm i -g pnpm
# 進入web目錄
cd web
# 安裝web依賴
pnpm install --frozen-lockfile# 在當前目錄中創建一個名為 .env.local文件, 并從 .env.example 復制內容。根據您的需求修改這些環境變量的值:# For production release, change this to PRODUCTION
NEXT_PUBLIC_DEPLOY_ENV=DEVELOPMENT
# The deployment edition, SELF_HOSTED or CLOUD
NEXT_PUBLIC_EDITION=SELF_HOSTED
# The base URL of console application, refers to the Console base URL of WEB service if console domain is
# different from api or web app domain.
# example: http://cloud.dify.ai/console/api
NEXT_PUBLIC_API_PREFIX=http://localhost:5001/console/api
# The URL for Web APP, refers to the Web App base URL of WEB service if web app domain is different from
# console or api domain.
# example: http://udify.app/api
NEXT_PUBLIC_PUBLIC_API_PREFIX=http://localhost:5001/api# SENTRY
NEXT_PUBLIC_SENTRY_DSN=
NEXT_PUBLIC_SENTRY_ORG=
NEXT_PUBLIC_SENTRY_PROJECT=# 啟動web服務
pnpm start
# 啟動成功如下所示
> dify-web@1.3.1 start /Users/codemonkey/Project/dify/web
> cp -r .next/static .next/standalone/.next/static && cp -r public .next/standalone/public && cross-env PORT=$npm_config_port HOSTNAME=$npm_config_host node .next/standalone/server.js▲ Next.js 15.2.3- Local:        http://localhost:3000- Network:      http://0.0.0.0:3000? Starting...? Ready in 125ms# 大功告成,之后瀏覽器輸入http://localhost:3000訪問dify
# Ps. 為了自身計算機安全,服務啟動時最好不要綁定0.0.0.0的ip地址

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/78638.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/78638.shtml
英文地址,請注明出處:http://en.pswp.cn/web/78638.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

(5)概述 QT 的元對象系統里的類的調用與聯系,及訪問接口

(1) QT 的元對象系統,這幾個字大家都知道,那么 QT 的元對象系統里都包含哪些內容呢,其訪問接口是如何呢? 從 QObject 類的實現里,從其數據成員里就可以看出來: QT 里父容器可以釋放其…

打包 Python 項目為 Windows 可執行文件:高效部署指南

Hypackpy 是一款由白月黑羽開發的 Python 項目打包工具,它與 PyInstaller 等傳統工具不同,通過直接打包解釋器環境和項目代碼,并允許開發者修改配置文件以排除不需要的內容,從而創建方便用戶一鍵運行的可執行程序。以下是使用 Hyp…

MySQL JOIN詳解:掌握數據關聯的核心技能

一、為什么需要JOIN? 在關系型數據庫中,數據通常被拆分到不同的表中以提高存儲效率。當我們需要從多個表中組合數據時,JOIN操作就成為了最關鍵的技能。通過本文,您將全面掌握MySQL中7種JOIN操作,并學會如何在實際場景中…

Kdump 收集器及使用方式

以下是 Linux 系統中 Kdump 轉儲收集器的詳細說明及其使用方法,涵蓋核心工具、配置方法及實際示例: 一、Kdump 收集器分類及作用 Kdump 的核心功能是通過 捕獲內核 生成內存轉儲文件(vmcore),其核心收集器包括&#…

Error: error:0308010C:digital envelope routines::unsupported 高版本node啟動低版本項目運行報錯

我的問題就是高版本node啟動舊版本項目引起的問題,單獨在配置 package.json文件中配置并運行就可以,大概意思就是設置node的openssl "scripts": {"dev": "SET NODE_OPTIONS--openssl-legacy-provider && vue-cli-servi…

松下機器人快速入門指南(2025年更新版)

松下機器人快速入門指南(2025年更新版) 松下機器人以其高精度、穩定性和易用性在工業自動化領域廣泛應用。本文將從硬件配置、參數設置、手動操作、編程基礎到維護保養,全面講解松下機器人的快速入門方法,幫助新手快速掌握核心操…

【CISCO】Se2/0, Se3/0:串行口(Serial) 這里串口的2/0 和 3/0分別都是什么?

在 Cisco IOS 設備上&#xff0c;接口名稱通常遵循這樣一個格式&#xff1a; <類型><槽號>/<端口號>類型&#xff08;Type&#xff09;&#xff1a;表示接口的物理或邏輯類型&#xff0c;比如 Serial&#xff08;串行&#xff09;、FastEthernet、GigabitEt…

開源無人機地面站QGroundControl安卓界面美化與邏輯優化實戰

QGroundControl作為開源無人機地面站軟件,其安卓客戶端界面美化與邏輯優化是提升用戶體驗的重要工程。 通過Qt框架的界面重構和代碼邏輯優化,可以實現視覺升級與性能提升的雙重目標。本文將系統講解QGC安卓客戶端的二次開發全流程,包括開發環境搭建、界面視覺升級、多分辨率…

基于DDPG的自動駕駛小車繞圈任務

1.任務介紹 任務來源: DQN: Deep Q Learning &#xff5c;自動駕駛入門&#xff08;&#xff1f;&#xff09; &#xff5c;算法與實現 任務原始代碼: self-driving car 在上一篇使用了DQN算法完成自動駕駛小車繞圈任務之后&#xff0c;學習了DDPG算法&#xf…

緩存置換:用c++實現最近最少使用(LRU)算法

在計算機的世界里&#xff0c;緩存就像一個“快速倉庫”&#xff0c;它存儲著我們頻繁訪問的數據&#xff0c;大大提升了數據的讀取速度。但這個 “倉庫” 空間有限&#xff0c;當它被裝滿時&#xff0c;就得決定舍棄一些數據&#xff0c;為新數據騰出位置&#xff0c;這個決策…

【YOLO11改進】改進Conv、頸部網絡STFEN、以及引入PIOU用于小目標檢測!

改進后的整體網絡架構 改進一:RFD模塊(Conv) YOLOv11模型的跨步卷積下采樣雖然快速聚合了局部特征,并且實現了較高的計算效率,但其固有的信息壓縮機制會導致細粒度特征的不可逆丟失。針對特征保留與計算效率的平衡問題,本文采用RFD模塊替換跨步卷積下采樣模塊。RFD模塊通…

設計模式每日硬核訓練 Day 18:備忘錄模式(Memento Pattern)完整講解與實戰應用

&#x1f504; 回顧 Day 17&#xff1a;中介者模式小結 在 Day 17 中&#xff0c;我們學習了中介者模式&#xff08;Mediator Pattern&#xff09;&#xff1a; 用一個中介者集中管理對象之間的通信。降低對象之間的耦合&#xff0c;適用于聊天系統、GUI 控件聯動、塔臺調度等…

java單元測試代碼

import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.*; import java.util.List;public class UserServiceTest {Testpublic void testSearchUserByTags() {// 模擬標簽列表List<String> tagNameList List.of("tag1", "…

前端面經-VUE3篇(一)--vue3基礎知識- 插值表達式、ref、reactive

目錄 一、 插值表達式 1、插值表達式 ({{}}) 的本質與作用&#xff1a; 2、與 Vue 響應式系統關系&#xff1a; 二、指令 1、什么是 Vue 指令&#xff1f; 2、指令的分類 1、內置指令 ① 內容綁定&#xff1a;v-text 和 v-html ② 屬性綁定&#xff1a;v-bind ③ 事件綁定…

矩陣置零(中等)

可以用兩個標記數組分別記錄每一行和每一列是否有零出現。 首先遍歷該數組一次&#xff0c;如果某個元素為 0&#xff0c;那么就將該元素所在的行和列所對應標記數組的位置置為 true。然后再次遍歷該數組&#xff0c;用標記數組更新原數組。 class Solution {public void set…

Android 實現一個隱私彈窗

效果圖如下&#xff1a; 1. 設置同意、退出、點擊用戶協議、點擊隱私協議的函數參數 2. 《用戶協議》、《隱私政策》設置成可點擊的&#xff0c;且顏色要區分出來 res/layout/dialog_privacy_policy.xml 文件 <?xml version"1.0" encoding"utf-8"?&…

TCP概念+模擬tcp服務器及客戶端

目錄 一、TCP基本概念 二、ser服務器代碼 三、cil客戶端代碼 四、面試常問問題 4.1 TCP的可靠性怎么保證或怎么實現? 4.2 具體說一下滑動窗口 一、TCP基本概念 TCP&#xff08;Transmission Control Protocol&#xff0c;傳輸控制協議&#xff09;是一種面向連接的、可…

Cocos Creator 自動圖集資源 (Auto Atlas)使用注意事項

1、游戲打包時&#xff0c;自動圖集設置選項中&#xff0c;默認會刪除無關聯的圖片 2、自動圖集設置中&#xff0c;就算勾除(Remove unused ImageAsset from the Bundle)的功能&#xff0c;無關聯的圖片也不會打包進入圖集之中&#xff0c;會獨立存在打包的游戲中。 3、使用自動…

PyTorch 2.0編譯器技術深度解析:如何自動生成高性能CUDA代碼

引言&#xff1a;編譯革命的范式轉移 PyTorch 2.0的torch.compile不僅是簡單的即時編譯器&#xff08;JIT&#xff09;&#xff0c;更標志著深度學習框架從?解釋執行?到?編譯優化?的范式躍遷。本文通過逆向工程編譯過程&#xff0c;揭示PyTorch如何將動態圖轉換為高性能CU…

【AI面試準備】從0-1搭建人工智能模型自動化評估理論與測試,掌握測試數據集建立與優化,熟練數據處理和模型評測工作

面試要求&#xff1a;從0-1搭建人工智能模型自動化評估理論與測試&#xff0c;掌握測試數據集建立與優化&#xff0c;熟練數據處理和模型評測工作。 以下是針對從0-1搭建AI模型自動化評估體系的系統化知識總結&#xff0c;涵蓋核心方法論、技術棧、高頻考點及面試回答模板&…