首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >开源 LLM 应用开发平台 Dify 部署教程

开源 LLM 应用开发平台 Dify 部署教程

作者头像
Lcry
发布2026-01-09 15:02:20
发布2026-01-09 15:02:20
8841
举报
文章被收录于专栏:Lcry个人博客Lcry个人博客

最近出了 react 和 next.js 出了远程执行漏洞,包括 dify 在内的产品无疑幸免,在最新版本中 v1.11.1版本中才修复,虽然本站出了很多一些关于 dify 的使用教程,但是很多人还没有部署过这个平台,今天就趁到全新安装 v1.11.1为例带大家部署一下这个 AI 应用开发平台 dify,从本文中你可以找到修改默认 80 端口占用冲突问题,插件老是下载失败超时等等一些列问题的答案,让你部署更简单。

介绍

Dify 是一款开源的大语言模型(LLM)应用开发平台,它结合了后端即服务(BaaS)和 LLMOps 理念,让开发者、企业甚至非技术人员都能快速构建、部署和管理生产级的生成式AI应用,例如智能客服、知识库问答等,支持多种模型(如 OpenAI、Claude 3),并通过可视化界面、RAG(检索增强生成)、工作流编排等功能简化了开发流程。

开源地址

Github 地址:点此跳转

截止 2025-12-14 日: star 数 122k

前置条件

最低配置要求:2C4G,硬盘 20G+,安装 Git、Docker和Docker Compose,尽量版本新一点就 ok,官方没具体明确主要看使用到哪些语法

开始安装

本文以一台 Centos7.9,4C8G 机器为例。

代码语言:javascript
复制
[root@ievslZ ~]# cat /etc/redhat-release 
CentOS Linux release 7.9.2009 (Core)
[root@ievslZ ~]# docker-compose -v
Docker Compose version v2.29.7
[root@ievslZ ~]# docker -v
Docker version 27.3.1, build ce12230

依次执行下面命令:

代码语言:javascript
复制
git clone https://github.com/langgenius/dify.git
cd dify/docker
cp .env.example .env
docker compose up -d

运行后等待所有容器健康,然后访问服务器IP:80/install,进行设置管理员账号密码进入即可。

开源 LLM 应用开发平台 Dify 部署教程
开源 LLM 应用开发平台 Dify 部署教程

然后右上角安装模型插件,设置相关模型。

开源 LLM 应用开发平台 Dify 部署教程
开源 LLM 应用开发平台 Dify 部署教程
开源 LLM 应用开发平台 Dify 部署教程
开源 LLM 应用开发平台 Dify 部署教程

然后开始享用吧~。

常见问题

1、报错Error starting userland proxy: listen tcp4 0.0.0.0:80: bind: address already in use。

答:这个错误最常见,如果你不是一个全新的服务器,服务器上已经部署nginx、apache等占用80端口的服务器,启动时候docker-nginx-1 肯定会报错这个,那么你要做的是修改 dify 的默认端口 80 为其他端口,直接修改部署目录下的 .env 文件,找到下面两行,将默认的 80 改为其他端口,443 也改为其他端口,但是一定要注意,一定不要把 80 改为 10080,这个10080 端口在 chrome 不会默认安全会导致各种访问不起。

代码语言:javascript
复制
# ------------------------------
# Docker Compose Service Expose Host Port Configurations
# ------------------------------
# 将默认的 80 改为其他端口,443 也改为其他端口
EXPOSE_NGINX_PORT=80
EXPOSE_NGINX_SSL_PORT=443

2、执行docker-compose up -d 启动的时候docker-init_permissions-1容器显示Exited,如下:

代码语言:javascript
复制
[+] Running 12/12
 ✔ Container docker-ssrf_proxy-1        Running       
 ✔ Container docker-db_postgres-1       Healthy       
 ✔ Container docker-redis-1             Running            
 ✔ Container docker-init_permissions-1  Exited       
 ✔ Container docker-weaviate-1          Running        
 ✔ Container docker-web-1               Running           
 ✔ Container docker-sandbox-1           Running        
 ✔ Container docker-worker-1            Running         
 ✔ Container docker-worker_beat-1       Running     
 ✔ Container docker-api-1               Running            
 ✔ Container docker-nginx-1             Running          
 ✔ Container docker-plugin_daemon-1     Running  

答:其实完全不用管, 这个是一个初始化容器,执行完相应任务自动退出属于正常,只要能正常访问就行。

3、安装很多插件下载不下来一直在失败超时,又没有梯子需要怎么处理?

答:因为默认 dify 插件商城默认使用的是https://marketplace.dify.ai,在国外访问很慢,网上提供了说很多离线安装,本地上传安装等等,其实在 dify 现在版本已经增加了自行添加 pip 镜像可以解决这个问题,并且可以把超时执行时间加长即可,同样找.env配置如下内容进行适当修改:PLUGIN_PYTHON_ENV_INIT_TIMEOUT 参数默认为 120 改为 360,PLUGIN_MAX_EXECUTION_TIMEOUT 默认为 600 改为 1800,PIP_MIRROR_URL 默认为空,改为https://pypi.tuna.tsinghua.edu.cn/simple

代码语言:javascript
复制
# 默认为 120 改成 360
PLUGIN_PYTHON_ENV_INIT_TIMEOUT=120
# 默认为 600 改成 1800
PLUGIN_MAX_EXECUTION_TIMEOUT=600
# PIP_MIRROR_URL=https://pypi.tuna.tsinghua.edu.cn/simple
# 默认为空改为 https://pypi.tuna.tsinghua.edu.cn/simple
PIP_MIRROR_URL=https://pypi.tuna.tsinghua.edu.cn/simple

修改完执行 docker-compose up -d --build 重启生效,安装速度嘎嘎快。

4、改了默认端口号后分享地址,api文档地址都显示的还是默认80端口,导致访问每次都要手动修改非常麻烦?

答:默认所有地址都是运行在80上,如果你改了端口需要继续修改 .env,将所有涉及到dify的baseUrl都替换成自己的端口,找到如下的变量,默认都为空,全部修改为服务器IP:端口号即可。比如:http://192.168.0.1:20080

代码语言:javascript
复制
CONSOLE_API_URL=http://192.168.0.1:20080
CONSOLE_WEB_URL=http://192.168.0.1:20080
SERVICE_API_URL=http://192.168.0.1:20080
TRIGGER_URL=http://192.168.0.1:20080
APP_API_URL=http://192.168.0.1:20080
APP_WEB_URL=http://192.168.0.1:20080

修改完执行 docker-compose up -d --build 重启生效。

总结

本文主要带实战部署了 dify 最新版本 v1.11.1,并且针对于博主在多次安装 dify 过程中遇到的常见问题进行了解答,使其安装过程更加顺畅,如果你是一台干净的服务器并且还有科学上网大概率不会遇到奇奇怪怪的问题,如果是一台已经部署了很多业务的很可能导致端口冲突,我例举的只是一部分问题,如果你已经安装了 dify 中也需要的中间件等端口也可能会被占用,比如postgres、redis,大家可以举一反三,都是通用修改 .env 文件或者 docker-compose.yml文件即可,希望本文能够帮助到大家。

文章目录

function Catalogswith(){document.getElementById("catalog-col").classList.toggle("catalog");document.getElementById("catalog").classList.toggle("catalog")}

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-12-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 介绍
  • 开源地址
  • 前置条件
  • 开始安装
  • 常见问题
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档