在CPU服务器上部署Ollama和Dify的过程记录

在本指南中,我将详细介绍如何在CPU服务器上安装和配置Ollama模型服务和Dify平台,以及如何利用Docker实现这些服务的高效部署和迁移。本文分为三大部分:Ollama部署、Dify环境配置和Docker环境管理,适合需要在本地或私有环境中运行AI服务的开发者和运维人员参考。

文章目录

    • 一、Ollama部署
      • 1.1 二进制文件安装方法
      • 1.2 Docker安装方法(推荐)
    • 二、Dify部署与配置
      • 2.1 Dify项目打包与迁移
      • 2.2 Dify与Ollama集成
      • 2.3 Dify数据持久化
    • 三、Docker环境管理
      • 3.1 Docker Compose安装
      • 3.2 Docker Compose命令更新
      • 3.3 完整的项目迁移流程
    • 总结


🎉进入云端运维专栏 | 🚀查看更多专栏内容


一、Ollama部署

Ollama是一个优秀的开源工具,可以帮助我们在本地或服务器上轻松运行各种大语言模型。以下介绍两种安装方法及其优缺点。

1.1 二进制文件安装方法

按照ollama的Linux安装教程,我们可以通过以下步骤安装Ollama:

curl -L https://ollama.com/download/ollama-linux-amd64.tgz -o ollama-linux-amd64.tgz
sudo tar -C /usr -xzf ollama-linux-amd64.tgz

命令解析:

第一条命令使用curl下载Ollama的压缩包:

  • -L参数允许curl跟随HTTP重定向
  • 将下载的文件保存为ollama-linux-amd64.tgz

第二条命令解压文件到系统目录:

  • sudo使用管理员权限
  • tar是Linux的归档处理工具
  • -C /usr指定解压目标为/usr目录
  • -x表示解压模式
  • -z表示处理gzip压缩格式
  • -f指定文件名

解压完成后,理论上可以直接运行ollama serve启动服务,但在实际操作中可能会遇到错误:

ollama serve

如下图所示,执行命令后出现错误提示:

在这里插入图片描述

此类错误可能是由系统依赖项缺失或权限问题导致的,解决起来可能比较复杂。

1.2 Docker安装方法(推荐)

考虑到二进制安装的复杂性,我们可以转向使用Docker安装Ollama,这种方式更加可靠和一致。参考ollama的docker安装教程,执行以下命令:

docker run -d -v /root/models:/root/.ollama -p 11434:11434 --name ollama ollama/ollama:0.5.3

命令详解:

  • docker run:创建并启动容器
  • -d:后台运行容器
  • -v /root/models:/root/.ollama:数据卷挂载,将主机目录映射到容器内部,用于持久化存储模型文件
  • -p 11434:11434:端口映射,使Ollama服务可通过主机11434端口访问
  • --name ollama:容器命名为"ollama"
  • ollama/ollama:0.5.3:指定使用的镜像及版本

也可以使用不同的挂载路径:

docker run -v /usr/share/ollama/.ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama:0.5.3

使用Docker部署的优势:

  • 减少了依赖项冲突
  • 环境隔离,不影响主机系统
  • 便于版本管理和迁移
  • 一致的运行环境,减少"在我机器上能运行"的问题

二、Dify部署与配置

Dify是一个强大的LLM应用开发平台,支持快速构建基于大语言模型的应用。考虑到Dify的Docker很多,下载很慢。我们可以基于别的服务器上可以用的Dify,打包其Docker环境,实现Dify的离线高效部署。

2.1 Dify项目打包与迁移

为了实现Dify项目的离线部署,我们需要先打包现有项目的所有Docker镜像,进入Dify的docker目录下,执行下面的命令:

docker-compose images | awk 'FNR > 1 {print $2":"$3}' | sort -u | xargs docker save -o all_images.tar

这条命令的作用是将当前Dify项目中使用的所有Docker镜像打包成一个单一的tar文件,以便于离线环境下的安装与迁移。命令细节解析:

  1. docker-compose images:列出当前Compose项目中使用的所有镜像
  2. awk 'FNR > 1 {print $2":"$3}':提取每个镜像的名称和标签
  3. sort -u:排序并去除重复项
  4. xargs docker save -o all_images.tar:将所有镜像保存到一个tar文件中

2.2 Dify与Ollama集成

Dify平台需要与Ollama服务进行集成才能正常工作。一般来说,我们需要在Dify的配置中指定Ollama服务的地址:

  • 同一主机上:可以使用http://localhost:11434或Docker网络名称http://ollama:11434
  • 不同主机上:使用目标服务器IP,如http://192.168.1.100:11434

2.3 Dify数据持久化

与Ollama类似,Dify也需要配置数据持久化,以确保用户创建的应用、提示词库和配置信息不会因容器重启而丢失。这通常通过Docker卷挂载实现,例如:

-v /path/to/dify/data:/app/data
-v /path/to/dify/uploads:/app/uploads

三、Docker环境管理

Docker是实现Ollama和Dify高效部署的关键工具,掌握Docker的基本操作和环境管理对于成功部署至关重要。

3.1 Docker Compose安装

如果您的系统中尚未安装Docker Compose,可以通过以下命令进行安装:

curl -L https://github.com/docker/compose/releases/download/v2.21.0/docker-compose-`uname -s`-`uname -m` -o docker-compose-linux-x86_64
cp docker-compose-linux-x86_64 /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

这组命令的作用是:

  1. 下载与当前系统架构匹配的Docker Compose二进制文件
  2. 将文件复制到系统PATH路径中
  3. 添加执行权限

执行完成后,可以验证安装结果:

在这里插入图片描述

3.2 Docker Compose命令更新

需要注意的是,Docker的新版本已将Docker Compose集成到Docker CLI中,命令格式有所变化:

  • 旧版命令:docker-compose(带连字符)
  • 新版命令:docker compose(无连字符)

对应的,更新后的打包命令应为:

docker compose images | awk 'FNR > 1 {print $2":"$3}' | sort -u | xargs docker save -o all_images.tar

您可以通过docker compose versiondocker --version检查系统中的Docker版本和Compose支持情况。

3.3 完整的项目迁移流程

使用Docker进行项目迁移的完整流程包括三个主要步骤:

  1. 打包阶段(源服务器上):

    mkdir project-backup
    cp docker-compose.yml .env config/* project-backup/
    mv all_images.tar project-backup/
    tar -czvf project-backup.tar.gz project-backup
    
  2. 传输阶段
    project-backup.tar.gz传输到目标服务器(可以使用scp、rsync等工具)

  3. 部署阶段(目标服务器上):

    tar -xzvf project-backup.tar.gz
    cd project-backup
    docker load -i all_images.tar
    docker-compose up -d
    

这种方法的优势在于可以实现完全离线的部署,不需要目标服务器具有互联网连接,非常适合在隔离网络或有严格安全要求的环境中部署Ollama和Dify项目。

总结

在CPU服务器上成功部署Ollama和Dify环境需要掌握以下关键要点:

  1. Ollama部署:优先考虑Docker安装方式,确保正确配置数据卷挂载和端口映射
  2. Dify配置:实现与Ollama的正确集成,确保数据持久化
  3. Docker管理:掌握Docker Compose的使用,熟悉项目的打包、迁移和部署流程

通过这些步骤,您可以在标准CPU服务器上构建一个完整的AI应用开发环境,运行大语言模型并基于它们构建应用,即使在离线环境中也能高效运作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/900150.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

请求被中止: 未能创建 SSL/TLS 安全通道。

需要安装vs2019社区办,下载VisualStudioSetup.exe后,报无法从"https://aka,ms/vs/16/release/channel"下载通道清单错误,接着打开%temp%目录下的最新日志,发现日志里报: [27d4:000f][2025-04-04T21:15:43] …

第六课:AI绘画进阶模型

文章目录 Part.01 文本嵌入(Embeddings)Part.02 低秩模型(LoRa)Part.03 超网络(Hypernetwork)Part.01 文本嵌入(Embeddings) Embeddings(Textual Inversion)Checkpoint如果是字典,Embeddings就是书签,让检索更加高效深度学习中Embeddings叫做嵌入式向量使用方法:下载Embeddi…

阅读分析Linux0.11 /boot/setup.s

目录 第一部分第二部分第三部分 该源文件功能分为三部分: (1)源文件开始部分是通过各种中断指令, 初始化计算机的组成硬件,获得硬件的参数,然后保存到段空间0X9000。该空间原来是保存加载到内存的引导扇区内…

TSMaster在新能源汽车研发测试中的硬核应用指南

——从仿真到标定,全面赋能智能汽车开发 引言:新能源汽车测试的挑战与TSMaster的破局之道 新能源汽车的快速发展对研发测试提出了更高要求:复杂的电控系统、高实时性通信需求、多域融合的验证场景,以及快速迭代的开发周期。传统测…

web漏洞靶场学习分享

靶场:pikachu靶场 pikachu漏洞靶场漏洞类型: Burt Force(暴力破解漏洞)XSS(跨站脚本漏洞)CSRF(跨站请求伪造)SQL-Inject(SQL注入漏洞)RCE(远程命令/代码执行)Files Inclusion(文件包含漏洞)Unsafe file downloads(不安全的文件下载)Unsafe file uploads(不安全的文…

《Linux内存管理:实验驱动的深度探索》【附录】【实验环境搭建 4】【Qemu 如何模拟numa架构】

我们在学习 linux 内核时,会涉及到很多 numa 的知识,那我们该如何在 qemu 中模拟这种情况,来配合我们的学习呢? 我们该如何模拟 如下的 numa 架构 Qemu 模拟 NUMA 架构 -M virt,gic-version3,virtualizationon,typevirt \ -cp…

YOLOv12 从预训练迈向自主训练,第一步数据准备

视频讲解: YOLOv12 从预训练迈向自主训练,第一步数据准备 前面复现过yolov12,使用pre-trained的模型进行过测试,今天来讲下如何训练自己的模型,第一步先准备数据和训练格式 https://gitcode.com/open-source-toolkit/…

Keil 5 找不到编译器 Missing:Compiler Version 5 的解决方法

用到自记: 下载地址: Keil5 MDK541.zip ​编辑https://pan.baidu.com/s/1bOPsuVZhD_Wj4RJS90Mbtg?pwdMDK5 问题描述 没有找到 compiler version5 : 1. 下载 Arm Compiler 5 也可以直接点击下载文章开头的文件。 2. 安装 直接安装在KEI…

结肠镜3D视频数据集-C3VD论文中文版

文章目录 标题作者摘要一、介绍1.1. 相关工作1.1.1. 内镜重建数据集1.1.2. 注册真实和虚拟内窥镜图像1.1.3. 2D-3D注册1.2. 贡献 二、方法2.1. 幻影模型生产2.2. 数据采集2.3. 注册流程概述2.3.1. 数据预处理2.3.2. 目标深度估计2.3.3. 渲染深度帧2.3.4. 边缘损失和优化 2.4. 模…

hadoop 集群的常用命令

# 查看HDFS目录内容 hadoop fs -ls /path # 创建目录 hadoop fs -mkdir /path/to/dir # 上传本地文件到HDFS hadoop fs -put localfile /hdfs/path # 下载HDFS文件到本地 hadoop fs -get /hdfs/path localfile # 查看文件内容 hadoop fs -cat /hdfs/path/file # 删除文件/…

MaxEnt物种分布建模全流程;R+ArcGIS+MaxEnt模型物种分布模拟、参数优化方法、结果分析制图与论文写作

融合R语言的MaxEnt模型具有以下具体优势: 数据处理高效便捷 📊强大的数据预处理功能:R语言提供了丰富的数据处理工具,能够轻松完成数据清洗、筛选、转换等操作,为MaxEnt模型提供高质量的输入数据。 🌐自动…

Java基础 4.4

1.方法快速入门 public class Method01 {//编写一个main方法public static void main(String[] args) {//方法使用//1.方法写好后,如果不去调用(使用),不会输出Person p1 new Person();p1.speak();//调用方法 p1.cal01();//调用计算方法1p1.cal02(10);…

Tiktok矩阵运营中使用云手机的好处

Tiktok矩阵运营中使用云手机的好处 云手机在TikTok矩阵运营中能够大幅提高管理效率、降低封号风险,并节省成本,是非常实用的运营工具。TikTok矩阵运营使用云手机有很多优势,特别是对于需要批量管理账号、提高运营效率的团队来说。以下是几个…

指针函数、函数指针和指针函数指针的全面总结

C中指针函数、函数指针和指针函数指针的全面总结 一、核心概念区别 概念本质声明示例核心特征指针函数返回指针的函数int* func(int);函数定义,返回值是指针类型函数指针指向函数的指针int (*ptr)(int);变量,存储函数地址指针函数指针指向指针函数的指…

CherryStudio MCP实战(一)filesystem篇

随着DeepSeek的爆火,各行各业都在围绕着大模型寻找新质量生产力。简单来说,DeepSeek像是人的大脑,他可以推理,帮你思考一些问题,但是具体要做一些事情的时候,他还需要“手脚”来协同。MCP(Model…

TCP基础篇(一)

文章目录 1.TCP 是如何保证可靠性的?2. 滑动窗口机制3 超时重传4.TCP 报文格式5. 什么是 TCP 协议5.1 如何唯一确定一个 TCP 连接 6.TCP 三次握手过程6.1 可以两次握手吗? 7.TCP 的四次挥手7.1 为什么客户端要等待2MSL? 8.linux 中查看 TCP 的连接9.TCP 为什么要有…

【Axure元件分享】时间范围选择器

时间范围选择器下拉选择开始时间和结束时间,实现效果如下。 源文件截图: 元件获取方式:

大模型学习一:deepseek api 调用实战以及参数介绍

一、说明 DeepSeek(杭州深度求索人工智能基础技术研究有限公司)是一家专注于大语言模型(LLM)研发的中国创新型科技公司,成立于2023年7月17日,由幻方量化孵化。其核心产品包括开源推理模型DeepSeek-R1、多模…

【Linux网络与网络编程】03.UDP Socket编程

一、UDP Socket编程接口 // 创建套接字 int socket(int domain, int type, int protocol); // 参数: // domain:域(协议家族),这里使用 AF_INET 表示进行网络编程 // type:网络通信传输的类型&#xff0…

linux gcc

一、常用编译选项 ​基本编译 gcc [input].c -o [output] ​示例: gcc hello.c -o hello # 将 hello.c 编译为可执行文件 hello ./hello # 运行程序 ​分步编译 预处理:-E(生成 .i 文件) gcc -E hello.c -o hello…