在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.pswp.cn/news/900150.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/900150.shtml
英文地址,請注明出處:http://en.pswp.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…