技术交流QQ群:①185473046   ②190706903   ③203744115   网站地图
登录

下次自动登录
现在的位置: 首页Linux>正文
Linux下DeepSeek+Ollama‌+Dify搭建本地知识库
2025年02月17日 Linux 暂无评论 ⁄ 被围观 530次+

组件简介:

1、DeepSeek:

提供强大的文本理解和生成能力。

作为语言模型的核心,负责生成高质量的回答。

2、Ollama:

作为一个开源框架,管理 DeepSeek 模型的加载和推理。

支持多种大模型,提供轻量级的接口。

3、Dify:

Dify 是一个开源的项目,旨在为开发者和企业提供一站式的大语言模型(LLM)应用开发解决方案。

它可以帮助用户快速构建、定制和部署基于大语言模型的应用程序,而无需深入理解复杂的底层技术细节。

系统环境:

这里使用Rocky Linux 9.x系统部署

CPU :4核

内存: 16GB

磁盘: 150GB

一、准备篇

1、禁用SELinux

rpm -q grubby #确认grubby软件包是否已经安装

grubby --update-kernel ALL --args selinux=0 #添加selinux=0到内核​​命令行

shutdown -r now #重启系统

getenforce #查看结果为Disabled

2、防火墙设置

Rocky Linux 9.x默认是firewalld防火墙,因为‌Docker需要iptables,我们这里卸载firewall,安装iptables作为防火墙,并清空防火墙规则

2.1关闭firewall

systemctl stop firewalld.service

systemctl disable firewalld.service

systemctl mask firewalld

systemctl stop firewalld

yum -y remove firewalld

2.2安装iptables防火墙,开启相应的端口

yum -y install iptables-services #安装

systemctl enable iptables.service #设置防火墙开机启动

systemctl start iptables.service #启动防火墙使配置生效

iptables -F #清空规则

service iptables save #保存配置规则

systemctl restart iptables.service #启动防火墙使配置生效

iptables -L -v -n #查看规则

3、设置系统时间

localectl set-locale LC_TIME=C.UTF-8 #让date默认显示为 24 小时制

vi /etc/locale.conf

LC_TIME=C.UTF-8

:wq! #保存退出

source /etc/locale.conf #使配置生效

rm -rf /etc/localtime #先删除默认的时区设置

ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime #替换亚洲/上海作为默认时区

vi /etc/sysconfig/clock #添加时区

Zone=Asia/Shanghai

:wq! #保存退出

timedatectl set-local-rtc 0

hwclock --systohc -u #系统时钟和硬件时钟同步,当前系统时区不为 UTC,是CST时间,所有要加-u参数

date #显示系统时间

date -s "2025-02-11 15:24:00" #修改时间

watch -n 1 date #显示实时时间

vi /etc/chrony.conf

#pool 2.rocky.pool.ntp.org iburst #注释

server ntp.aliyun.com iburst #添加

:wq! #保存退出

systemctl enable chronyd #重启服务

systemctl restart chronyd #重启服务

chronyc sources -v #查看时间同步信息

4、系统参数优化

vi /etc/security/limits.conf #在最后一行添加以下代码

* soft nproc unlimited

* hard nproc unlimited

* soft nofile 1000000

* hard nofile 1000000

:wq! #保存退出

vi /etc/sysctl.conf #在最后一行添加以下代码

fs.file-max = 65535000

fs.nr_open = 65535000

kernel.pid_max=655350

vm.swappiness = 0

net.ipv4.ip_forward = 1

vm.max_map_count=262144

:wq! #保存退出

/sbin/sysctl -p

ulimit -a #查看

ulimit -n 1000000 #设置

5、安装Docker

Dify我们使用docker镜像的方式来部署

#卸载旧版本,如果没有安装就不需要执行

yum remove docker docker-client docker-client-latest docker-latest docker-latest-logrotate docker-logrotate docker-common docker-selinux docker-engine-selinux docker-engine docker-ce-cli

rpm -qa|grep docker

#安装工具包

yum install unzip wget yum-utils -y

#添加docker仓库

wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo

或者

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

#安装docker

yum list docker-ce docker-ce-cli containerd.io --showduplicates #列出可用的docker版本

yum install -y docker-ce-27.5.1-1.el9 docker-ce-cli-27.5.1-1.el9 containerd.io #安装指定版本

docker --version #查看版本

#启动dokcer并开机自启

systemctl daemon-reload

systemctl start docker

systemctl enable docker

docker info |grep "Docker Root Dir"

#设置daemon.json配置文件,修改默认存储目录和运行模式,添加镜像地址

#Docker默认使用/var/lib/docker作为存储目录,用来存放拉取的镜像和创建的容器

#/var目录一般都位于系统盘,我们修改Docker的默认存储目录到数据盘/data/server/docker

mkdir -p /etc/docker

mkdir -p /data/server/docker #创建docker数据存储目录

vi /etc/docker/daemon.json  #注意格式缩进

{

"data-root": "/data/server/docker",

"exec-opts": ["native.cgroupdriver=systemd"],

"log-driver": "json-file",

"log-opts": {

"max-size": "100m"

},

"storage-driver": "overlay2",

"registry-mirrors": [

"http://docker.m.daocloud.io",

"http://mirror.ccs.tencentyun.com",

"http://docker.rainbond.cc"

]

}

:wq! #保存退出

vi /lib/systemd/system/docker.service #修改Docker的配置文件以启用Docker API

#找到ExecStart这一行,将其修改为

ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

:wq! #保存退出

systemctl daemon-reload

systemctl restart docker

#检查Docker API的状态,如果返回的结果为OK,则表示Docker API已经成功启用

curl http://localhost:2375/_ping

#查看docker数据存储目录

docker info |grep "Docker Root Dir"

#检查 JSON 格式,确保没有多余的逗号或错误的括号

#Docker 17.05 及以后的版本使用 "data-root"设置目录,旧版本使用"graph": "/data/server/docker"

#相关检测命令

cat /etc/docker/daemon.json | jq .

systemctl daemon-reload

systemctl restart docker

docker info

docker info | grep Cgroup

#安装Docker-Compose

Docker-Compose是docker提供的一个命令行工具,用来定义和运行由多个容器组成的应用。

使用Docker-Compose,我们可以通过yaml文件定义应用程序的各个服务,并由单个命令完成应用的创建和启动。

Docker-Compose依靠Docker进行工作,必须确保已经安装了docker才能安装Docker-Compose

Docker-Compose下载地址(需要科学上网):https://github.com/docker/compose/releases/download/v2.32.4/docker-compose-linux-x86_64

#拷贝Docker-Compose到/usr/bin目录

cp docker-compose-linux-x86_64 /usr/bin/docker-compose

#添加执行权限

chmod +x /usr/bin/docker-compose

#查看版本,Docker-Compose要和Docker的版本匹配,Docker-Compose:v2.32.4可以适用于Docker version 27.5.1

docker-compose --version

二、安装篇

1、安装ollama

1.1下载ollama

我们使用Linux系统来部署ollama

#查看Linux版本号

cat /proc/version

#查看cpu架构

lscpu

x86_64 CPU选择下载ollama-linux-amd64

aarch64|arm64 CPU选择下载ollama-linux-arm64

下载地址(需要科学上网):https://github.com/ollama/ollama/releases/download/v0.5.8/ollama-linux-amd64.tgz

上传安装文件到服务器/usr/local/src目录

1.2配置ollama

解压ollama安装包到/usr目录

cd /usr/local/src

tar -C /usr -xzf ollama-linux-amd64.tgz

#设置Ollama为开机自启动,并设置运行账号为ollama

#创建用户ollama

useradd -r -s /bin/false -U -m -d /usr/share/ollama ollama

usermod -a -G ollama $(whoami)

1.3添加ollama自启动服务

vi /etc/systemd/system/ollama.service

[Unit]

Description=Ollama Service

After=network-online.target

[Service]

ExecStart=/usr/bin/ollama serve

User=ollama

Group=ollama

Restart=always

RestartSec=3

Environment="PATH=$PATH"

Environment="OLLAMA_HOST=0.0.0.0:11434" #服务将绑定到主机的所有网络接口,正式环境请按需设置,限制ip

Environment="OLLAMA_ORIGINS=*" #允许来自所有来源的请求,正式环境请务必配置防火墙限制使用来源

Environment="OLLAMA_MODELS=/data/server/ollama/models" #自定义模型存储的目录

[Install]

WantedBy=default.target

:wq! #保存退出

特别说明:

这两个参数请根据自己的实际情况修改,请勿照抄

建议配合外部防火墙限制端口和使用ip,服务器安全第一

Environment="OLLAMA_HOST=0.0.0.0"

Environment="OLLAMA_ORIGINS=*"

如果你希望 Ollama 服务仅限于本机访问,可以设置如下:

Environment="OLLAMA_HOST=127.0.0.1"

Environment="OLLAMA_ORIGINS=http://localhost"

如果你希望 Ollama 服务只能被特定 IP 地址访问,可以设置如下

Environment="OLLAMA_HOST=192.168.1.100"

Environment="OLLAMA_ORIGINS=http://192.168.1.100"

如果你希望 Ollama 服务支持多个来源的请求,可以设置如下:

Environment="OLLAMA_HOST=0.0.0.0"

Environment="OLLAMA_ORIGINS=http://example.com,http://another-domain.com"

systemctl daemon-reload

systemctl enable ollama

systemctl start ollama 启动

systemctl stop ollama 关闭

systemctl restart ollama 重启

systemctl status ollama 查看状态

#验证安装

ollama -h

查看日志

journalctl -e -u ollama

ollama -v

#浏览器打开服务器本地ip地址

http://10.189.189.246:11434/

Ollama is running

说明安装成功

2、在ollama中部署大模型

模型库:https://ollama.com/library

我们需要2个模型

https://ollama.com/library/deepseek-r1 #对话模型

ollama run deepseek-r1:7b #拉取模型,需要一些时间

https://ollama.com/library/bge-m3 #向量模型

ollama pull bge-m3 #拉取模型,需要一些时间

#等待模型拉取完成之后出现下面的提示

success

>>> Send a message (/? for help)

#现在已经可以在命令行下面使用这个模型了

#ollama 使用常见的指令

ollama serve #启动ollama

ollama create #从模型文件创建模型

ollama show #显示模型信息

ollama run #运行模型

ollama pull #从注册表中拉取模型

ollama push #将模型推送到注册表

ollama list #列出模型

ollama cp #复制模型

ollama rm #删除模型

ollama help #获取有关任何命令的帮助信息

ollama -v #查看版本

Ctrl + z #挂起任务

fg #恢复

jobs #查看任务,

fg %1 #恢复到前台

bg %1 #恢复到后台

3、安装Dify

官方网站:https://dify.ai/zh

下载地址:https://github.com/langgenius/dify/archive/refs/heads/main.zip

下载之后是一个dify-main.zip的文件

上传安装文件到服务器/usr/local/src目录

cd /usr/local/src

unzip dify-main.zip

cd /usr/local/src/dify-main/docker

mv .env.example .env

#查看docker镜像

[root@localhost docker]# cat docker-compose.yaml |grep image

image: langgenius/dify-api:0.15.3

image: langgenius/dify-api:0.15.3

image: langgenius/dify-web:0.15.3

image: postgres:15-alpine

image: redis:6-alpine

image: langgenius/dify-sandbox:0.2.10

image: ubuntu/squid:latest

image: certbot/certbot

image: nginx:latest

image: semitechnologies/weaviate:1.19.0

image: langgenius/qdrant:v1.7.3

image: pgvector/pgvector:pg16

image: tensorchord/pgvecto-rs:pg16-v0.3.0

image: ghcr.io/chroma-core/chroma:0.5.20

image: quay.io/oceanbase/oceanbase-ce:4.3.3.0-100000142024101215

image: container-registry.oracle.com/database/free:latest

image: quay.io/coreos/etcd:v3.5.5

image: minio/minio:RELEASE.2023-03-20T20-16-18Z

image: milvusdb/milvus:v2.5.0-beta

image: opensearchproject/opensearch:latest

image: opensearchproject/opensearch-dashboards:latest

image: myscale/myscaledb:1.6.4

image: docker.elastic.co/elasticsearch/elasticsearch:8.14.3

image: docker.elastic.co/kibana/kibana:8.14.3

image: downloads.unstructured.io/unstructured-io/unstructured-api:latest

[root@localhost docker]#

#实际上用到得镜像有8个

image: langgenius/dify-api:0.15.3

image: langgenius/dify-web:0.15.3

image: nginx:latest

image: postgres:15-alpine

image: redis:6-alpine

image: langgenius/dify-sandbox:0.2.10

image: ubuntu/squid:latest

image: semitechnologies/weaviate:1.19.0

#启动之后有9个容器,其中api镜像启动了2个容器

#3个业务服务:api、worker、web

#6个基础组件:weaviate、db、redis、nginx、ssrf_proxy、sandbox

安装Dify需要8个docker镜像

1、langgenius/dify-api:0.15.3

2、langgenius/dify-web:0.15.3

3、nginx:latest

4、postgres:15-alpine

5、redis:6-alpine

6、langgenius/dify-sandbox:0.2.10

7、ubuntu/squid:latest

8、semitechnologies/weaviate:1.19.0

需要先下载这些镜像

从docker直接下载镜像会很慢,我们使用第三方镜像仓库https://docker.aityp.com/下载并修改镜像标签

1、langgenius/dify-api:0.15.3

docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/langgenius/dify-api:0.15.3

docker tag swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/langgenius/dify-api:0.15.3 docker.io/langgenius/dify-api:0.15.3

docker rmi swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/langgenius/dify-api:0.15.3

2、langgenius/dify-web:0.15.3

docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/langgenius/dify-web:0.15.3

docker tag swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/langgenius/dify-web:0.15.3 docker.io/langgenius/dify-web:0.15.3

docker rmi swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/langgenius/dify-web:0.15.3

3、nginx:latest

docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/nginx:latest

docker tag swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/nginx:latest docker.io/nginx:latest

docker rmi swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/nginx:latest

4、postgres:15-alpine

docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/postgres:15-alpine

docker tag swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/postgres:15-alpine docker.io/postgres:15-alpine

docker rmi swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/postgres:15-alpine

5、redis:6-alpine

docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/redis:6-alpine

docker tag swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/redis:6-alpine docker.io/redis:6-alpine

docker rmi swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/redis:6-alpine

6、

docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/langgenius/dify-sandbox:0.2.10

docker tag swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/langgenius/dify-sandbox:0.2.10 docker.io/langgenius/dify-sandbox:0.2.10

docker rmi swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/langgenius/dify-sandbox:0.2.10

7、ubuntu/squid:latest

docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/ubuntu/squid:latest

docker tag swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/ubuntu/squid:latest docker.io/ubuntu/squid:latest

docker rmi swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/ubuntu/squid:latest

8、semitechnologies/weaviate:1.19.0

docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/semitechnologies/weaviate:1.19.0

docker tag swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/semitechnologies/weaviate:1.19.0 docker.io/semitechnologies/weaviate:1.19.0

docker rmi wr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/semitechnologies/weaviate:1.19.0

#创建容器

cd /usr/local/src/dify-main/docker

docker compose up -d

docker ps #查看容器

docker compose down #移除容器命令

docker volume prune #移除卷

4、设置Dify

打开http://10.189.189.246/

列出模型

[root@localhost ~]# ollama list

NAME ID SIZE MODIFIED

bge-m3:latest 790764642607 1.2 GB 1 hours ago

deepseek-r1:latest 0a8c26691023 4.7 GB 1 hours ago

添加模型

模型类型:LLM

模型名称:deepseek-r1:latest

基础 Url:http://10.189.189.246:11434/

最大token数:4096

确定

再添加模型

模型类型:Text Embedding

模型名称:bge-m3:latest

基础 Url:http://10.189.189.246:11434/

最大token数:4096

确定

#相关截图

至此,Linux下DeepSeek+Ollama‌+Dify搭建本地知识库完成。

     

  系统运维技术交流QQ群:①185473046 系统运维技术交流□Ⅰ ②190706903 系统运维技术交流™Ⅱ ③203744115 系统运维技术交流™Ⅲ

给我留言

您必须 [ 登录 ] 才能发表留言!



Copyright© 2011-2025 系统运维 All rights reserved
版权声明:本站所有文章均为作者原创内容,如需转载,请注明出处及原文链接
陕ICP备11001040号-3