被得到安利了dify.ai,尝试制作了些案例感觉还真不耐,前阵按照官方文档尝试成功私有化部署了dify.ai。老样,官方文档也不是小白式的一步一步,涉及到的技术栈比较多,走了些弯路,mark备考。
1. dify.ai社区版同时提供docker部署、本地源码等不同方式,看完介绍选择了docker部署,主要原因是dify.ai技术架构涉及postgres、reddis、langgenius、weavite、nginx等不同技术的部署,几周前尝试的时候每一个我都没有部署的经验,一起都做一遍太耗费时间;
2. 一般我都用Azure国际版的服务器作部署,不过性价比上阿里云要划算好多,这次选了阿里云,又花了些时间熟悉阿里云服务器的申请和操作方式,比如用无影客户端来远程访问服务器等。最开始用windows服务器,发现从docker网站下载docker安装包根本下不下来。之后在服务器上安装了vpn下载成功。
3. 然后发现了原来docker官方版本并不支持在windows服务器上的安装,docker官网(Windows | Docker Docs)有说明,虽然也给出了在windows服务器上安装的建议方向,但又是一个需要耗费时间解决的问题,中间还遇到过“nested vm”问题,大致意思就是已经是云里的虚拟机了,再在里面做虚拟化会牵涉BIOS层面的配置(哭晕在地,云里的虚拟机哪里进得去BIOS),感觉如果有时间应该是可以找到实现路径,但既然主线是部署dify.ai,就不在支线技术上浪费太多时间,放弃了windows服务器。
4. 改为在阿里云里部署了一台Ubuntu服务器,同样遇到网络下载docker的问题,本地VPN下载再通过winscp将docker安装包上传到Ubuntu服务器解决了问题。接下来按照Docker的官网介绍来进行部署(Docker Compose 部署 | Dify)
5. 第一步是要将dify的安装包下载下来,同样遇到网络问题,同样选择了从Github下载zip包到本地再通过winscp上传解决
git clone https://github.com/langgenius/dify.git
6. 下一步是要进到Dify源代码文件夹下的Docker目录复制生成下.env文件,留意正常在Ubuntu里看不到这个.env文件,隐藏显示。直接运行命令行或者通过cat命令来查看确认文件内容。我是通过winscp来访问和复制,winscp上能看到
# 进入 Dify 源代码的 Docker 目录
cd dify/docker
# 复制环境配置文件
cp .env.example .env
7. 接下来遇到的坎是官方文档里没有交代要换文件夹就直接提示运行下面命令,一直跑不太通,后来才查到这个命令会看当前文件夹有没有一个叫做docker-compose.yaml的文件,我当时部署的时候如果没记错这个文件和docker文件夹在同一级目录,转到相应目录后运行下面命令成功
docker compose up -d
8. 终于出现官方文档里说的结果,安装成功。之后遇到的问题是阿里云的公网IP地址要去启用,同时阿里云的安全组要允许相应的端口入站流量,这些Azure里操作的比较多,基本没走弯路。完成后通过http://公网ip地址/install访问成功
[+] 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
总结来说,如果对Linux、Docker的了解比较多能够少走很多弯路,如果原本了解不深自己安装一遍也大致就有感觉了!如果有时间可以尝试直接部署源代码的方式,里面会牵涉多个组件的单独部署,也能学到不少东西。