ubuntu16.04部署dify教程
文章目录
- 1、克隆 Dify 源代码至本地环境
- 2、加速Dify镜像文件下载
- 3、启动 Dify
- 4、访问 Dify
- 5、更新 Dify
- 6、常见问题及解决方案
- (1)容器restarting
- (2)日志文件上限
- (3)重置管理员密码
- (4)修改页面端口
Dify 是一个基于 Docker 的工作流管理工具,旨在简化机器学习和数据科学领域的多步骤工作流。它通过容器化每个步骤,确保工作流的可复现性和环境一致性。Dify 支持自动化执行、日志记录和结果管理,适用于数据处理、模型训练和部署等场景。
Dify 主要支持以下三种模式:
Agent 模式:Dify 作为一个代理,通过配置和管理多种工作流,进行任务调度和执行。
知识库模式:用于存储和管理工作流相关的知识、数据库和模型,方便复用和共享。
工作流模式:Dify 通过定义工作流的各个步骤,自动化执行数据处理、模型训练、测试等任务,确保工作流的一致性和高效性。
安装 Dify 之前, 请确保机器已满足最低安装要求:
CPU >= 2 Core
RAM >= 4 GiB
1、克隆 Dify 源代码至本地环境
git clone https://github.com/langgenius/dify.git
也可以手动下载到本地https://github.com/langgenius/dify/archive/refs/heads/main.zip
,解压后移动到服务器上。
2、加速Dify镜像文件下载
详情见:https://github.com/imashen/docker-aio/tree/main
-
安装脚本使用:
curl -fsSL https://docker.13140521.xyz/install | bash -s docker --mirror Aliyun
-
Docker加速源使用:
-
编辑Docker配置文件: 打开Docker的配置文件(通常位于/etc/docker/daemon.json):
sudo vim /etc/docker/daemon.json
-
添加或修改镜像源: 添加或修改配置文件中的registry-mirrors字段:
{"registry-mirrors": ["https://docker.13140521.xyz"]
}
- 重启Docker服务: 保存配置文件并重启Docker服务:
sudo systemctl daemon-reload
sudo systemctl restart docker
3、启动 Dify
进入 Dify 源代码的 Docker 目录cd dify/docker
复制环境配置文件cp .env.example .env
启动 Docker 容器
根据你系统上的 Docker Compose 版本,选择合适的命令来启动容器。你可以通过docker compose version
命令检查版本,详细说明请参考 Docker 官方文档:
如果版本是 Docker Compose V2,使用以下命令:
docker compose up -d
如果版本是 Docker Compose V1,使用以下命令:
docker-compose up -d
运行命令后,你应该会看到类似以下的输出,显示所有容器的状态和端口映射:
[+] Running 11/11✔ Network docker_ssrf_proxy_network Created 0.1s ✔ Network docker_default Created 0.0s ✔ Container docker_redis_1 Started 2.4s ✔ Container docker_ssrf_proxy_1 Started 2.8s ✔ Container docker_sandbox_1 Started 2.7s ✔ Container docker_web_1 Started 2.7s ✔ Container docker_weaviate_1 Started 2.4s ✔ Container docker_db_1 Started 2.7s ✔ Container docker_api_1 Started 6.5s ✔ Container docker_worker_1 Started 6.4s ✔ Container docker_nginx_1 Started 7.1s
最后检查是否所有容器都正常运行:
docker compose ps
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
docker_api_1 langgenius/dify-api:0.6.13 "/bin/bash /entrypoi…" api About a minute ago Up About a minute 5001/tcp
docker_db_1 postgres:15-alpine "docker-entrypoint.s…" db About a minute ago Up About a minute (healthy) 5432/tcp
docker_nginx_1 nginx:latest "sh -c 'cp /docker-e…" nginx About a minute ago Up About a minute 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp
docker_redis_1 redis:6-alpine "docker-entrypoint.s…" redis About a minute ago Up About a minute (healthy) 6379/tcp
docker_sandbox_1 langgenius/dify-sandbox:0.2.1 "/main" sandbox About a minute ago Up About a minute
docker_ssrf_proxy_1 ubuntu/squid:latest "sh -c 'cp /docker-e…" ssrf_proxy About a minute ago Up About a minute 3128/tcp
docker_weaviate_1 semitechnologies/weaviate:1.19.0 "/bin/weaviate --hos…" weaviate About a minute ago Up About a minute
docker_web_1 langgenius/dify-web:0.6.13 "/bin/sh ./entrypoin…" web About a minute ago Up About a minute 3000/tcp
docker_worker_1 langgenius/dify-api:0.6.13 "/bin/bash /entrypoi…" worker
4、访问 Dify
你可以先前往管理员初始化页面设置管理员账户:
本地环境
http://localhost/install
服务器环境
http://your_server_ip/install
Dify 主页面:
本地环境
http://localhost
服务器环境
http://your_server_ip
5、更新 Dify
进入 dify 源代码的 docker 目录,按顺序执行以下命令:
# 注意:以下方法只针对git clone方式下载的小伙伴
cd dify/docker
docker compose down
git pull origin main
docker compose pull
docker compose up -d
同步环境变量配置 (重要!)
如果 .env.example 文件有更新,请务必同步修改你本地的 .env 文件。
检查 .env 文件中的所有配置项,确保它们与你的实际运行环境相匹配。你可能需要将 .env.example 中的新变量添加到 .env 文件中,并更新已更改的任何值。
如果是通过下载dify压缩文件到本地的小伙伴,请重新下载最新的dify压缩文件并移动到服务器覆盖当前dify目录。接着进入 api 目录下,执行以下命令将数据库结构迁移至最新版本flask db upgrade
。接着,运行docker-compose up -d
即可。
6、常见问题及解决方案
(1)容器restarting
通过docker compose ps
,如果出现个别容器一直restarting,使用docker logs -f
查看容器日志,如果日志中出现如下错误:
- OpenBLAS blas_thread_init: pthread_create failed for thread 47 of 48: Operation not permittedOpenBLAS blas_thread_init: RLIMIT_NPROC -1 current, -1 max
修改docker-compose.yaml文件,在每个镜像下增加privileged: true # 启用特权模式
,如:
api:image: langgenius/dify-api:0.13.1restart: alwaysenvironment:# Use the shared environment variables.<<: *shared-api-worker-env# Startup mode, 'api' starts the API server.MODE: apidepends_on:- db- redisvolumes:# Mount the storage directory to the container, for storing user files.- ./volumes/app/storage:/app/api/storagenetworks:- ssrf_proxy_network- defaultprivileged: true
通过docker-compose down
停止所有正在运行的容器,然后docker-compose up -d
重新启动所有dify镜像即可解决。
(2)日志文件上限
当前docker日志文件没有设置上限,会导致日志文件占用内存持续增长,可通过以下方式设置单个日志文件的上限:
api:image: langgenius/dify-api:0.13.1restart: alwaysenvironment:# Use the shared environment variables.<<: *shared-api-worker-env# Startup mode, 'api' starts the API server.MODE: apidepends_on:- db- redisvolumes:# Mount the storage directory to the container, for storing user files.- ./volumes/app/storage:/app/api/storagenetworks:- ssrf_proxy_network- defaultprivileged: truelogging:driver: "json-file"options:max-size: "10m" # 每个日志文件最大 10MBmax-file: "3"
(3)重置管理员密码
如果你通过 Docker Compose 部署,你可以运行以下 Docker Compose 命令行重置密码。
docker exec -it docker_api_1 flask reset-password
请按照提示输入邮箱地址和新密码,例如:
dify@my-pc:~/hello/dify/docker$ docker compose up -d
[+] Running 9/9✔ Container docker_web_1 Started 0.1s ✔ Container docker_sandbox_1 Started 0.1s ✔ Container docker_db_1 Started 0.1s ✔ Container docker_redis_1 Started 0.1s ✔ Container docker_weaviate_1 Started 0.1s ✔ Container docker_ssrf_proxy_1 Started 0.1s ✔ Container docker_api_1 Started 0.1s ✔ Container docker_worker_1 Started 0.1s ✔ Container docker_nginx_1 Started 0.1s
dify@my-pc:~/hello/dify/docker$ docker exec -it docker-api-1 flask reset-password
None of PyTorch, TensorFlow >= 2.0, or Flax have been found. Models won't be available and only tokenizers, configuration and file/data utilities can be used.
sagemaker.config INFO - Not applying SDK defaults from location: /etc/xdg/sagemaker/config.yaml
sagemaker.config INFO - Not applying SDK defaults from location: /root/.config/sagemaker/config.yaml
Email: hello@dify.ai
New password: newpassword4567
Password confirm: newpassword4567
Password reset successfully.
(4)修改页面端口
如果你使用 Docker Compose 部署,你可以通过修改.env配置来自定义 Dify 的访问端口。
你需要修改 Nginx 相关配置:
EXPOSE_NGINX_PORT=80
EXPOSE_NGINX_SSL_PORT=443
相关文章:
ubuntu16.04部署dify教程
文章目录 1、克隆 Dify 源代码至本地环境2、加速Dify镜像文件下载3、启动 Dify4、访问 Dify5、更新 Dify6、常见问题及解决方案(1)容器restarting(2)日志文件上限(3)重置管理员密码(4࿰…...
JavaWeb文件上传
文件上传总览 文件上传主要是指将本地文件(包括但不限于图片、视频、音频等)上传到服务器,提供其他用户浏览或下载的过程。在日常生活中,我们在很多情况下都需要使用文件上传功能,比如:发微博、发朋友圈等…...
软件工程——期末复习(3)
一、题目类(老师重点提到过的题目) 1、高可靠性是否意味着高可用性?试举例证明自己的观点? 答:高可靠性不意味着高可用性 可靠性说明系统已经准备好,马上可以使用;可用性是系统可以无故障的持续运行,是一…...
apache的BeanUtils的Converter被相互污染覆盖问题
问题描述 apache的BeanUtils工具集中用来把map对象转换为java对象的BeanUtils#populate方法会因为单例的原因其转换器Converter被相互污染覆盖问题 maven依赖 <dependency><groupId>commons-beanutils</groupId><artifactId>commons-beanutils</…...
TCP的“可靠性”(上)
目录 TCP的“可靠性”(上)确认应答(可靠性传输的基础)超时重传连接管理(三次握手,四次挥手) TCP的“可靠性”(上) 想必大家都或多或少的听说过TCP的特性:有连…...
超标量处理器设计笔记(5)虚拟存储器、地址转换、page fault
虚拟存储器 概述地址转换单级页表多级页表案例最好情况:虚拟地址是连续的最差情况:每个第二级 PT 都装有一项 增加级数 Page Fault 程序保护 概述 当程序比物理内存空间更大时,无法全部装在物理内存中,需要对程序进行切片 虚拟…...
SparkSQL 读写数据攻略:从基础到实战
目录 一、输入Source 1)代码演示最普通的文件读取方式: 2) 通过jdbc读取数据库数据 3) 读取table中的数据【hive】 二、输出Sink 实战一:保存普通格式 实战二:保存到数据库中 实战三:将结果保存在h…...
react 使用状态管理调用列表接口渲染列表(包含条件查询,统一使用查询按钮,重置功能),避免重复多次调用接口的方法
react开发调用api接口一般使用useEffect来监听值的变化,通过值的变化与否来进行接口调用。 比如我们要进行一个查询接口 const [pageParams, setPage] useState({name: ,id: ,});const [dataList, setDataList] useState([]);const getList async () > {const…...
Stable Audio Open模型部署教程:用AI打造独家节拍,让声音焕发新活力!
Stable Audio Open 是一个开源的文本到音频模型,允许用户从简单的文本提示中生成长达 47 秒的高质量音频数据。该模型非常适合创建鼓点、乐器即兴演奏、环境声音、拟音录音和其他用于音乐制作和声音设计的音频样本。用户还可以根据他们的自定义音频数据微调模型&…...
加油站-(贪心算法)
题目描述 在一条环路上有 n 个加油站,其中第 i 个加油站有汽油 gas[i] 升。 你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。 给定两个整数数组 gas…...
k8s-持久化存储PV与PVC(1)
1、概述 为什么 kubernetes 要持久化存储? 在 kubernetes 中部署应用都是以 Pod 的容器运行的,而 Pod 是有生命周期,一旦 Pod 被删除或重启后,这些数据也会随着丢失,则需要对这些数据进行持久化存储。 PV࿱…...
Linux Red Hat Enterprise
下载 https://developers.redhat.com/products/rhel/download 安装...
《中型 Vue 项目:挑战与成长》
一、引言 在当今的前端开发领域,Vue 作为一款渐进式 JavaScript 框架,以其强大的功能和灵活性备受开发者青睐。对于中型 Vue 项目而言,其重要性不言而喻。中型 Vue 项目通常在功能复杂度和规模上介于小型项目和大型项目之间,既需要…...
配置 DNS over HTTPS阻止DNS污染
概念介绍 DOH简介 DNS(域名系统)的主要功能是将域名解析成IP地址,域名的解析工作由DNS服务器完成。从安全角度来看,域名解析的请求传输时通常不进行任何加密,这导致第三方能够很容易拦截用户的DNS,将用…...
Facebook广告文案流量秘诀
Facebook 广告文案是制作有效 Facebook 广告的关键方面。它侧重于伴随广告视觉元素的文本内容。今天我们的博客将深入探讨成功的 Facebook 广告文案的秘密! 一、广告文案怎么写? 正文:这是帖子的正文,出现在您姓名的正下方。它可…...
22. 五子棋小游戏
文章目录 概要整体架构流程技术名词解释技术细节小结 1. 概要 🔊 JackQiao 对 米粒 说:“今天咱们玩个五子棋小游戏,电脑与你轮流在一个 nn 的网格上放置棋子(X 或 O),网格由你输入的正整数n决定࿰…...
fastadmin框架同时使用 阿里云oss和阿里云点播
背景 项目的实际需求中既要用到阿里云oss产品又用到阿里云点播系统,实现完美的统一。设置两个地址downUrl,thirdCode。分别代表阿里云oss上传路径和阿里云点播系统vId。 实现 默认框架你已经集成好阿里云oss集成工作,前端html页面实现 <…...
Java-JMX 组件架构即详解
JMX架构由三个主要组件构成: MBeans(Managed Beans):代表可管理的资源,是JMX的核心。MBean可以是Java类或接口,提供了管理操作的接口,如获取系统信息、设置参数等。MBeanServer&#x…...
unity打包web,发送post请求,获取地址栏参数,解决TypeError:s.replaceAll is not a function
发送post请求 public string url "http://XXXXXXXXX";// 请求数据public string postData "{\"user_id\": 1}";// Start is called before the first frame updatevoid Start(){// Post();StartCoroutine(PostRequestCoroutine(url, postData…...
java+ssm+mysql校园物品租赁网
项目介绍: 使用javassmmysql开发的校园物品租赁网,系统包含管理员、用户角色,功能如下: 管理员:用户管理;物品管理(物品种类、物品信息、评论信息);订单管理࿱…...
Spring Boot中实现JPA多数据源配置指南
本文还有配套的精品资源,点击获取 简介:本文详细介绍了在Spring Boot项目中配置和使用JPA进行多数据源管理的步骤。从引入依赖开始,到配置数据源、创建DataSource bean、定义实体和Repository,最后到配置事务管理器和使用多数据…...
服务器加固
1.服务器密码复杂度 密码最小长度,密码复杂度策略 vim /etc/pam.d/system-auth --------------- #密码配置 #ucredit:大写字母个数;lcredit:小写字母个数;dcredit:数字个数;ocredit:…...
探索CSS中的背景图片属性,让你的网页更加美观
导语:在网页设计中,背景图片的运用能够丰富页面视觉效果,提升用户体验。本文将详细介绍CSS中背景图片的相关属性,帮助大家更好地掌握这一技能。 一、背景图片基本属性 1、background-image 该属性用于设置元素的背景图片。语法如…...
Oracle的打开游标(OPEN_CURSORS)
一、OPEN_CURSORS 概述 OPEN_CURSORS 指定会话一次可以拥有的打开游标(私有 SQL 区域的句柄)的最大数量。可以使用此参数来防止会话打开过多的游标。 OPEN_CURSORS参数说明 特性 描述 参数类型 Integer 默认值 50 修改方式 ALTER SYSTEM PDB级别…...
数值分析—数值积分
研究背景 积分的数学解法为牛顿莱布尼兹公式,数学表示为 ∫ a b f ( x ) d x F ( b ) − F ( a ) \int_{a}^{b} f(x)dxF(b)-F(a) ∫abf(x)dxF(b)−F(a),但应用该方法有如下困难: 1, f ( x ) f(x) f(x)的原函数有时不能用初等函…...
克服大规模语言模型限制,构建新的应用方法——LangChain
大模型 大模型的出现和落地开启了人工智能(AI)新一轮的信息技术革命,改变了人们的生 活方式、工作方式和思维方式。大模型的落地需要数据、算力和算法三大要素。经过几 年发展,大模型的数据集(包括多模态数据集)制作已经形成了规约,Meta、Go…...
计算机网络 —— HTTPS 协议
前一篇文章:计算机网络 —— HTTP 协议(详解)-CSDN博客 目录 前言 一、HTTPS 协议简介 二、HTTPS 工作过程 1.对称加密 2.非对称加密 3.中间人攻击 4.引入证书 三、HTTPS 常见问题 1.中间人能否篡改证书? 2.中间人能否调…...
React第十七章(useRef)
useRef 当你在React中需要处理DOM元素或需要在组件渲染之间保持持久性数据时,便可以使用useRef。 import { useRef } from react; const refValue useRef(initialValue) refValue.current // 访问ref的值 类似于vue的ref,Vue的ref是.value,其次就是vu…...
React第十五节useReducer使用详解差异
useReducer() 的用法注意事项 1、 概述: useReducer() 常用于管理复杂的状态更新逻辑,特别是在状态更新依赖于多个条件或动作时,useReducer 提供了一种更加结构化和可维护的方式来处理状态。可以将更新函数写在组件外面 它与 useState() 相…...
NanoLog起步笔记-5-客户端简要描述
nonolog起步笔记-5-客户端简要描述 客户端的简要的设计图路notify模式服务端最好分两个核 NanoLog::setLogLevel(NOTICE);从 NANO_LOG 开始NANO_LOGcompiling time的语句getNumNibblesNeeded:得到prompt中,number的数量countFmtParams:得到所…...
接给别人做网站的活/手机做网页的软件
前言 接着上一篇 根据 InstanceKlass 查找 vtable 的数据, 其中留下了一些 存在疑问的地方, 呵呵 本文主要就是探讨这几点疑问的地方 同样适用上面的方式, 可以很轻松的定位到 vtable 的最后一个元素 对应的类是 Test02LoopUpVTable 方法名称的 常量池索引是 74??, 参照最…...
外贸网站搭建一站式服务/百度app下载并安装最新版
这是一款三栏布局的网站使用。升级记录:2.1版:优化主题自带缩略图函数;增加主题配置页面安全验证;修复已知的用户反馈问题;-------------------------------2.0版:增加手机端侧栏模块显示开关;修…...
东莞市做网站/发布软文广告
Mysql数据中,使用时,总是会碰见导入和导出情况,所以如何正确的导入导出,非常重要!下面根据工作中用到的方法,会不管补充:导入:直接在Mysql中导入:mysql>use databaseN…...
中职专业设计网站/西安seo技术培训班
1.Oracle怎样存储文本CHAR和VARCHAR2的区别•CHAR定长字符串,VARCHAR2变长字符串。•CHAR(n) 定长字符串,n字节,n的取值范围:1~2000字节。•VARCHAR2(n) 可变长的字符串,定义时应指明最大长度,取值范围&…...
校园门户网站系统建设/网络引流怎么做啊?
概述 相信大家都知道怎么在vSphere环境中配置HA功能,知道HA故障切换时间为VM系统启动时间应用启动时间15秒左右的心跳检测时间,知道HA不受DRS和vMotion影响,知道HA不需要依赖vCenter(vCenter挂了,License授权ESXi主机只…...
上海营销网站制作/长沙百度seo
《c编程思想》阅读笔记(6) 第4章:初始化与清除,内容太多,故分为几篇博客来进行归纳:) 缺省构造函数就是不带任何参数的构造函数。当编译器需要创建一个对象而又不知任何细节时,缺省…...