admin管理员组

文章数量:1037775

大模型系统dify本地源码启动

1.下载源码

代码语言:javascript代码运行次数:0运行复制
git clone .git

在启用业务服务之前,需要先部署 PostgreSQL / Redis / Weaviate(如果本地没有的话),可以通过以下命令启动: 依赖安装高版本的docker-compose

代码语言:javascript代码运行次数:0运行复制
cd docker
cp middleware.env.example middleware.env
docker compose -f docker-compose.middleware.yaml up -d

需要对docker-compose.middleware.yaml的镜像地址进行替换。

代码语言:javascript代码运行次数:0运行复制
/

2. 安装python

dify依赖的python版本是 Python 3.12。下面是rocky linux安装Python 3.12的步骤 查看当前系统安装的Python版本

代码语言:javascript代码运行次数:0运行复制
yum list python3

搜索Python 3.12

代码语言:javascript代码运行次数:0运行复制
yum search python3.12

安装Python 3.12

代码语言:javascript代码运行次数:0运行复制
yum install -y python3.12.x86_64

3. 后端启动服务

3.1 进入 api 目录

代码语言:javascript代码运行次数:0运行复制
cd api

3.2 复制环境变量配置文件

代码语言:javascript代码运行次数:0运行复制
cp .env.example .env

3.3 生成随机密钥,并替换 .env 中 SECRET_KEY 的值

代码语言:javascript代码运行次数:0运行复制
awk -v key="$(openssl rand -base64 42)" '/^SECRET_KEY=/ {sub(/=.*/, "=" key)} 1' .env > temp_env && mv temp_env .env

提示是否覆盖,直接覆盖即可。

3.4 安装依赖包

Dify API 服务使用 Poetry 来管理依赖。你可以执行 poetry shell 来激活环境。

代码语言:javascript代码运行次数:0运行复制
poetry env use 3.12
poetry install

3.5 执行数据库迁移

将数据库结构迁移至最新版本。

代码语言:javascript代码运行次数:0运行复制
poetry shell
flask db upgrade

3.6 启动 API 服务

代码语言:javascript代码运行次数:0运行复制
poetry shell
flask run --host 0.0.0.0 --port=5001 --debug

正确输出:

代码语言:javascript代码运行次数:0运行复制
2025-03-12 06:15:07,607 INFO [utils.py:162]  NumExpr defaulting to 4 threads.
 * Debug mode: on
2025-03-12 06:15:29,759 INFO [_internal.py:97]  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
 * Running on :5001
2025-03-12 06:15:29,759 INFO [_internal.py:97]  Press CTRL+C to quit
2025-03-12 06:15:29,769 INFO [_internal.py:97]   * Restarting with stat
2025-03-12 06:15:31,752 INFO [utils.py:162]  NumExpr defaulting to 4 threads.
2025-03-12 06:15:34,703 WARNING [_internal.py:97]   * Debugger is active!
2025-03-12 06:15:34,703 INFO [_internal.py:97]   * Debugger PIN: 119-829-848

3.7 启动 Worker 服务

用于消费异步队列任务,如知识库文件导入、更新知识库文档等异步操作。 Linux / MacOS 启动:

代码语言:javascript代码运行次数:0运行复制
poetry shell
celery -A app.celery worker -P gevent -c 1 -Q dataset,generation,mail,ops_trace --loglevel INFO

如果使用 Windows 系统启动,请替换为该命令:

代码语言:javascript代码运行次数:0运行复制
celery -A app.celery worker -P solo --without-gossip --without-mingle -Q dataset,generation,mail,ops_trace --loglevel INFO

正确输出:

代码语言:javascript代码运行次数:0运行复制
2025-03-12 06:15:07,607 INFO [utils.py:162]  NumExpr defaulting to 4 threads.
/root/dify/dify-main/api/.venv/lib/python3.12/site-packages/celery/platforms.py:829: SecurityWarning: You're running the worker with superuser privileges: this is
absolutely not recommended!

Please specify a different user using the --uid option.

User information: uid=0 euid=0 gid=0 egid=0

  warnings.warn(SecurityWarning(ROOT_DISCOURAGED.format(
 
 -------------- celery@mk8s-master v5.4.0 (opalescent)
--- ***** ----- 
-- ******* ---- Linux-6.11.9-1.el9.elrepo.x86_64-x86_64-with-glibc2.34 2025-03-12 06:15:31
- *** --- * --- 
- ** ---------- [config]
- ** ---------- .> app:         app_factory:0x7fd60823c7d0
- ** ---------- .> transport:   redis://:**@localhost:6379/1
- ** ---------- .> results:     postgresql://postgres:**@localhost:5432/dify
- *** --- * --- .> concurrency: 1 (gevent)
-- ******* ---- .> task events: OFF (enable -E to monitor tasks in this worker)
--- ***** ----- 
 -------------- [queues]
                .> dataset          exchange=dataset(direct) key=dataset
                .> generation       exchange=generation(direct) key=generation
                .> mail             exchange=mail(direct) key=mail
                .> ops_trace        exchange=ops_trace(direct) key=ops_trace

[tasks]
   ....省略....
  
2025-03-12 06:15:31,511 INFO [connection.py:22]  Connected to redis://:**@localhost:6379/1
2025-03-12 06:15:31,524 INFO [mingle.py:40]  mingle: searching for neighbors
2025-03-12 06:15:32,623 INFO [mingle.py:49]  mingle: all alone
2025-03-12 06:15:32,676 INFO [worker.py:175]  celery@mk8s-master ready.
2025-03-12 06:15:32,683 INFO [pidbox.py:111]  pidbox: Connected to redis://:**@localhost:6379/1.

4. 前端页面部署

进入 ,选择对应操作系统的 v18.x 以上的安装包下载并安装,建议 stable 版本。

4.1 进入 web 目录

代码语言:javascript代码运行次数:0运行复制
cd web

4.2 安装依赖包

代码语言:javascript代码运行次数:0运行复制
npm install pnpm -g --registry=/
pnpm install --registry=/

4.3 配置环境变量

在当前目录下创建文件 .env.local,并复制.env.example中的内容。根据需求修改这些环境变量的值。

代码语言:javascript代码运行次数:0运行复制
# For production release, change this to PRODUCTION
NEXT_PUBLIC_DEPLOY_ENV=DEVELOPMENT
# The deployment edition, SELF_HOSTED
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: 
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: /api
NEXT_PUBLIC_PUBLIC_API_PREFIX=http://localhost:5001/api

# SENTRY
NEXT_PUBLIC_SENTRY_DSN=
NEXT_PUBLIC_SENTRY_ORG=
NEXT_PUBLIC_SENTRY_PROJECT=

4.4 构建代码

代码语言:javascript代码运行次数:0运行复制
pnpm run build

这个需要等待的实际比较长

5. 启动web服务

代码语言:javascript代码运行次数:0运行复制
pnpm start

正常启动后,终端会输出如下信息:

代码语言:javascript代码运行次数:0运行复制
> dify-web@1.0.0 start /root/dify/dify-main/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 14.2.24
  - Local:        http://localhost:3000
  - Network:      :3000

 ✓ Starting...
 ✓ Ready in 1278ms

5. 访问 Dify

最后,访问 http://127.0.0.1:3000 即可使用本地部署的 Dify。

6. 总结

在安装、启动过程过程中会遇到不少确实依赖库的情况,多用以下命令进行依赖安装即可。

代码语言:javascript代码运行次数:0运行复制
pip install
代码语言:javascript代码运行次数:0运行复制
参考:
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。原始发表:2025-03-15,如有侵权请联系 cloudcommunity@tencent 删除部署服务模型系统源码

大模型系统dify本地源码启动

1.下载源码

代码语言:javascript代码运行次数:0运行复制
git clone .git

在启用业务服务之前,需要先部署 PostgreSQL / Redis / Weaviate(如果本地没有的话),可以通过以下命令启动: 依赖安装高版本的docker-compose

代码语言:javascript代码运行次数:0运行复制
cd docker
cp middleware.env.example middleware.env
docker compose -f docker-compose.middleware.yaml up -d

需要对docker-compose.middleware.yaml的镜像地址进行替换。

代码语言:javascript代码运行次数:0运行复制
/

2. 安装python

dify依赖的python版本是 Python 3.12。下面是rocky linux安装Python 3.12的步骤 查看当前系统安装的Python版本

代码语言:javascript代码运行次数:0运行复制
yum list python3

搜索Python 3.12

代码语言:javascript代码运行次数:0运行复制
yum search python3.12

安装Python 3.12

代码语言:javascript代码运行次数:0运行复制
yum install -y python3.12.x86_64

3. 后端启动服务

3.1 进入 api 目录

代码语言:javascript代码运行次数:0运行复制
cd api

3.2 复制环境变量配置文件

代码语言:javascript代码运行次数:0运行复制
cp .env.example .env

3.3 生成随机密钥,并替换 .env 中 SECRET_KEY 的值

代码语言:javascript代码运行次数:0运行复制
awk -v key="$(openssl rand -base64 42)" '/^SECRET_KEY=/ {sub(/=.*/, "=" key)} 1' .env > temp_env && mv temp_env .env

提示是否覆盖,直接覆盖即可。

3.4 安装依赖包

Dify API 服务使用 Poetry 来管理依赖。你可以执行 poetry shell 来激活环境。

代码语言:javascript代码运行次数:0运行复制
poetry env use 3.12
poetry install

3.5 执行数据库迁移

将数据库结构迁移至最新版本。

代码语言:javascript代码运行次数:0运行复制
poetry shell
flask db upgrade

3.6 启动 API 服务

代码语言:javascript代码运行次数:0运行复制
poetry shell
flask run --host 0.0.0.0 --port=5001 --debug

正确输出:

代码语言:javascript代码运行次数:0运行复制
2025-03-12 06:15:07,607 INFO [utils.py:162]  NumExpr defaulting to 4 threads.
 * Debug mode: on
2025-03-12 06:15:29,759 INFO [_internal.py:97]  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
 * Running on :5001
2025-03-12 06:15:29,759 INFO [_internal.py:97]  Press CTRL+C to quit
2025-03-12 06:15:29,769 INFO [_internal.py:97]   * Restarting with stat
2025-03-12 06:15:31,752 INFO [utils.py:162]  NumExpr defaulting to 4 threads.
2025-03-12 06:15:34,703 WARNING [_internal.py:97]   * Debugger is active!
2025-03-12 06:15:34,703 INFO [_internal.py:97]   * Debugger PIN: 119-829-848

3.7 启动 Worker 服务

用于消费异步队列任务,如知识库文件导入、更新知识库文档等异步操作。 Linux / MacOS 启动:

代码语言:javascript代码运行次数:0运行复制
poetry shell
celery -A app.celery worker -P gevent -c 1 -Q dataset,generation,mail,ops_trace --loglevel INFO

如果使用 Windows 系统启动,请替换为该命令:

代码语言:javascript代码运行次数:0运行复制
celery -A app.celery worker -P solo --without-gossip --without-mingle -Q dataset,generation,mail,ops_trace --loglevel INFO

正确输出:

代码语言:javascript代码运行次数:0运行复制
2025-03-12 06:15:07,607 INFO [utils.py:162]  NumExpr defaulting to 4 threads.
/root/dify/dify-main/api/.venv/lib/python3.12/site-packages/celery/platforms.py:829: SecurityWarning: You're running the worker with superuser privileges: this is
absolutely not recommended!

Please specify a different user using the --uid option.

User information: uid=0 euid=0 gid=0 egid=0

  warnings.warn(SecurityWarning(ROOT_DISCOURAGED.format(
 
 -------------- celery@mk8s-master v5.4.0 (opalescent)
--- ***** ----- 
-- ******* ---- Linux-6.11.9-1.el9.elrepo.x86_64-x86_64-with-glibc2.34 2025-03-12 06:15:31
- *** --- * --- 
- ** ---------- [config]
- ** ---------- .> app:         app_factory:0x7fd60823c7d0
- ** ---------- .> transport:   redis://:**@localhost:6379/1
- ** ---------- .> results:     postgresql://postgres:**@localhost:5432/dify
- *** --- * --- .> concurrency: 1 (gevent)
-- ******* ---- .> task events: OFF (enable -E to monitor tasks in this worker)
--- ***** ----- 
 -------------- [queues]
                .> dataset          exchange=dataset(direct) key=dataset
                .> generation       exchange=generation(direct) key=generation
                .> mail             exchange=mail(direct) key=mail
                .> ops_trace        exchange=ops_trace(direct) key=ops_trace

[tasks]
   ....省略....
  
2025-03-12 06:15:31,511 INFO [connection.py:22]  Connected to redis://:**@localhost:6379/1
2025-03-12 06:15:31,524 INFO [mingle.py:40]  mingle: searching for neighbors
2025-03-12 06:15:32,623 INFO [mingle.py:49]  mingle: all alone
2025-03-12 06:15:32,676 INFO [worker.py:175]  celery@mk8s-master ready.
2025-03-12 06:15:32,683 INFO [pidbox.py:111]  pidbox: Connected to redis://:**@localhost:6379/1.

4. 前端页面部署

进入 ,选择对应操作系统的 v18.x 以上的安装包下载并安装,建议 stable 版本。

4.1 进入 web 目录

代码语言:javascript代码运行次数:0运行复制
cd web

4.2 安装依赖包

代码语言:javascript代码运行次数:0运行复制
npm install pnpm -g --registry=/
pnpm install --registry=/

4.3 配置环境变量

在当前目录下创建文件 .env.local,并复制.env.example中的内容。根据需求修改这些环境变量的值。

代码语言:javascript代码运行次数:0运行复制
# For production release, change this to PRODUCTION
NEXT_PUBLIC_DEPLOY_ENV=DEVELOPMENT
# The deployment edition, SELF_HOSTED
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: 
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: /api
NEXT_PUBLIC_PUBLIC_API_PREFIX=http://localhost:5001/api

# SENTRY
NEXT_PUBLIC_SENTRY_DSN=
NEXT_PUBLIC_SENTRY_ORG=
NEXT_PUBLIC_SENTRY_PROJECT=

4.4 构建代码

代码语言:javascript代码运行次数:0运行复制
pnpm run build

这个需要等待的实际比较长

5. 启动web服务

代码语言:javascript代码运行次数:0运行复制
pnpm start

正常启动后,终端会输出如下信息:

代码语言:javascript代码运行次数:0运行复制
> dify-web@1.0.0 start /root/dify/dify-main/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 14.2.24
  - Local:        http://localhost:3000
  - Network:      :3000

 ✓ Starting...
 ✓ Ready in 1278ms

5. 访问 Dify

最后,访问 http://127.0.0.1:3000 即可使用本地部署的 Dify。

6. 总结

在安装、启动过程过程中会遇到不少确实依赖库的情况,多用以下命令进行依赖安装即可。

代码语言:javascript代码运行次数:0运行复制
pip install
代码语言:javascript代码运行次数:0运行复制
参考:
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。原始发表:2025-03-15,如有侵权请联系 cloudcommunity@tencent 删除部署服务模型系统源码

本文标签: 大模型系统dify本地源码启动