当前位置: 首页 > web >正文

【无需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
#进入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.xdnf.cn/news/3502.html

相关文章:

  • 从文本到向量:揭秘词向量转换的奥秘与实践
  • C++负载均衡远程调用学习之QPS性能测试
  • 溯因推理思维——AI与思维模型【92】
  • AimRT从入门到精通 - 03Channel发布者和订阅者
  • 18. LangChain分布式任务调度:大规模应用的性能优化
  • 【git】获取特定分支和所有分支
  • 【东枫科技】AMD / Xilinx Alveo™ V80计算加速器卡
  • 文章五《卷积神经网络(CNN)与图像处理》
  • Java大师成长计划之第10天:锁与原子操作
  • AimRT从入门到精通 - 04RPC客户端和服务器
  • 沥青路面裂缝的目标检测与图像分类任务
  • 【Hive入门】Hive性能调优:小文件问题与动态分区合并策略详解
  • React pros比较机制
  • 模拟开发授权平台
  • 【嵌入式Linux】基于ARM-Linux的zero2平台的智慧楼宇管理系统项目
  • 中小企业MES系统数据库设计
  • Spring MVC @RequestHeader 注解怎么用?
  • VMware提供的三种网络连接模式
  • Android WebView加载h5打开麦克风与摄像头的权限问题
  • Haskell Drracket OCaml Prolog 逻辑式编程函数式编程代写代做
  • 从 Eclipse Papyrus / XText 转向.NET —— SCADE MBD技术的演化
  • aab转apk
  • DeepSeek玄学指令大全
  • 【电脑维修】MERCURY水星无线网卡导致 Windows 网络适配器无法连接的一种情况
  • T575729 正经数组
  • IDA pro接入千问大模型
  • Java关键字解析
  • 【dify—7】文本生成应用实战——学员周报生成
  • 「Mac畅玩AIGC与多模态12」开发篇08 - 使用自定义汇率查询插件开发智能体应用
  • 数字智慧方案6146丨智慧学院智能化项目规划设计方案(45页PPT)(文末有下载方式)