服务器离线部署DeepSeek

devtools/2025/2/26 15:08:45/

目标

本次部署的目标是在本地服务器上部署DeepSeek。但是该服务不能连接外网,因此只能使用离线部署的方式。为了一次完成部署。现在云服务器上进行尝试。

服务器部署尝试

服务器配置

  • CentOS7
  • 2080Ti 11GB

安装准备

1、上传iso并配置为本地yum源
安装前先将网盘中的epel上传到服务器并配置成本地iso
文件名为:centos7-epel.iso
上传后,新建一个目录

mkdir -p /opt/epel/
mount -o loop /xxx/xxx/centos7-epel.iso /opt/epel/

配置epel为本地yum源

touch /etc/yum.repos.d/epel.repo
vim /etc/yum.repos.d/epel.repo

填写内容如下:

[epel]
name=epel
baseurl=file:///opt/epel/
gpgcheck=0
enable=1

保存

yum clean all
yum repolist
yum makecache

执行以上命令清理并重新配置缓存信息
2、安装cuda与驱动
nvidia-smi 命令 显示cuda与驱动即可

3、安装ollama
下载百度盘中文件,其中

install.sh
ollama-linux-amd64.tgz

两个文件是ollama的离线安装文件
将两个文件放在同一个目录,赋予install.sh执行权限之后运行即可

chmod u+x install.sh
./install.sh

安装好之后,执行如下命令,可以看到ollama的安装版本则表示安装成功

ollama serve
ollama -v
ollama version is 0.5.7

ollama与docker类似。可以通过–help来查看帮助,这里不多介绍

4、安装ffmpeg,open-webui需要
将ffmpeg安装包传输到部署服务器ffmpeg-5.1.tar.gz
解压安装

tar zcvf ffmpeg-5.1.tar.gz
cd ffmpeg-5.1
./configure --disable-x86asm
make -j 40
make install

下载模型

由于是离线安装,无法联网,因此也无法通过部署服务器直接下载模型

这时候,我们需要使用可以联网的linux设备下载模型,也可以使用笔者的链接提供的下载好的模型文件
deepseek-r1-32b-models.tar.gz

1、如何自己下载模型(在可联网的机器上)

先修改ollama的存储位置,编辑下面的文件

vim /etc/systemd/system/ollama.service

在[Service]参数项中增加下面一行,具体目录可以自己定义,笔者使用的是/opt/ai/models

Environment="OLLAMA_MODELS=/opt/ai/models"

将models目录设置属主,必须做,否则ollama无法启动

chown ollama:ollama /opt/ai/models -R

或者

chown a10:a10 /opt/ai/models -R

重新加载配置文件并重启ollama

systemctl daemon-reload
systemctl restart ollama

然后通过

ollama run deepseek-r1:32b

下载模型,在进度条走完后,模型下载完成,存储在/opt/ai/models目录中

打包models目录,并将整个目录迁移到部署的服务器即可

2、如何使用笔者提供的已经下载的模型,同时也是1的延续

在离线部署服务器上,修改ollama的service文件指定models目录

笔者使用了和下载服务器相同的目录

Environment="OLLAMA_MODELS=/opt/ai/models"

将models打包文件传输过来,解压覆盖

ollama list

即可看到模型
这时候,使用如下命令即可运行模型

ollama run deepseek-r1:32b

运行命令后处于terminal状态,可直接提问,模型会反馈对应结果

使用open-webui支持deepseek图形界面及便捷访问

1、python

必须使用3.11版本,如果使用其他版本,则会出现安装缺包的问题
2、pip

如果有本地pip源最好,如果没有,可使用笔者提供的已经下载好的whl文件

open-webui-whl-offline.tar.gz

至于如何本地安装这些whl文件,请自行百度。这里不多介绍

3、安装好open-webui之后配置环境变量

export OLLAMA_BASE_URL=http://127.0.0.1:11434
export OPENAI_API_BASE_URL=None
export OPENAI_API_KEY=None
以上三个环境变量的意思分别是
设置本地ollama的接口,将openai的一些配置取消,因为是离线模式,无法连接openai,切记设置,否则open-webui很容易白屏

4、启动open-webui
如果你在安装python 3.11的版本的时候,将python 3.11的bin目录配置到了PATH中,则 open-webui可直接执行,否则需要到python 3.11 的bin目录下查找到open-webui的二进制文件

启动open-webui

open-webui serve

需要等。笔者也不是很清楚,等了大概一分钟才启动成功,大概率还是没联网的问题

看到如下info信息,则表示open-webui启动成功
在这里插入图片描述

本地服务器

本地服务器已经有CUDA了,并且是12.4,CentOS7能支持的最高版本
本地已经有ollama了。但是在部署过程中由于ollma版本低。并不支持deepseek-r1 70b模型了

所有文件上传到 /home/a10/Downloads下了

1、ollma升级

下载百度盘中文件,其中

install.sh
ollama-linux-amd64.tgz

两个文件是ollama的离线安装文件

将两个文件放在同一个目录,赋予install.sh执行权限之后运行即可

chmod u+x install.sh
./install.sh

安装好之后,执行如下命令,可以看到ollama的安装版本则表示安装成功

ollama serve
ollama -v
ollama version is 0.5.7

ollama与docker类似。可以通过–help来查看帮助,这里不多介绍

2、deepseek模型部署

/home/a10/ 下创建 deepseek文件夹

1、上传 deepseek-r1-70b-models.tar.gz

解压文件夹

2、修改ollama配置文件

vim /etc/systemd/system/ollama.service

修改Environment=“OLLAMA_MODELS=/home/a10/deepseek/models”

[Unit]Description=Ollama ServiceAfter=network-online.target[Service]ExecStart=/usr/bin/ollama serveUser=ollamaGroup=ollamaRestart=alwaysRestartSec=3Environment="OLLAMA_HOST=0.0.0.0:11434"
Environment="OLLAMA_MODELS=/home/a10/deepseek/models"
Environment="OLLAMA_KEEP_ALIVE=-1"
Environment="CUDA_VISIBLE_DEVICES=0,1,2,3,4,5"
#Environment="CUDA_VISIBLE_DEVICES=0,1,2,3"[Install]WantedBy=default.target

将models目录设置属主,必须做,否则ollama无法启动

chown a10:a10 /home/a10/deepseek/models -R

重新加载配置文件并重启ollama

systemctl daemon-reload
systemctl restart ollama

查看 deepseek模型是否存在

ollama list

存在,运行即可

ollama run deepseek-r1:70b

运行命令后处于terminal状态,可直接提问,模型会反馈对应结果

ollama 可以通过 http://服务器ip:11434/ 测试是否启动

3、python升级3.11.9

注意: 一定要是用python 3.11 因为 open-webui需要
我是用下面的方法安装的3.11.9但是里面有坑 比如 ssl 就没有。还有这个教程是 将python的版本升级成3.11.9。而python3的没变

  • Linux系统安装python3.11.1

4、安装open-webui

三步教会你完全离线搭建openwebui 这个不好用
可以跟下面的教程:

  • centos部署open-webui
  • centos部署open-webui的完整流程记录

出现错误:
1)在 /home/a10/Downloads/open-webui-whl-offline文件夹下运行下面代码出错

pip install --no-index --find-links=. open_webui-0.5.10-py3-none-any.whl

出错原因:

Processing ./nest_asyncio-1.6.0-py3-none-any.whl (from unstructured-client->unstructured==0.16.11->open-webui==0.5.10)
INFO: pip is looking at multiple versions of google-api-core[grpc] to determine which version is compatible with other requirements. This could take a while.
ERROR: Could not find a version that satisfies the requirement grpcio-status<2.0.dev0,>=1.33.2; extra == "grpc" (from google-api-core[grpc]) (from versions: 1.63.0rc1)
ERROR: No matching distribution found for grpcio-status<2.0.dev0,>=1.33.2; extra == "grpc"

这是由于 单个文件他获取不到导致的。比如 grpcio_status-1.63.0rc1-py3-none-any.whl 是存在的。但是由于rc1是预装的,pip不会主动安装它。因此可以先手动安装。

pip install --no-index --find-links=. grpcio_status-1.63.0rc1-py3-none-any.whl

再进行安装

pip install --no-index --find-links=. open_webui-0.5.10-py3-none-any.whl

2)如果中间遇到某一个tar.gz的包无法安装成功,可以解压缩,进入到解压缩后的目录,用包中的setup单独安装下:

python setup.py install

源码编译安装python3.12没有ssl模块,python3.12 ModuleNotFoundError: No module named ‘_ssl‘

3)运行 open-webui serve时,总是提示SQLite 版本低。明明已经配置了。

NotSupportedError: (sqlite3.NotSupportedError) deterministic=True requires SQLite 3.8.3 or higher
(Background on this error at: https://sqlalche.me/e/20/tw8g)

解决方法:

  • centos部署open-webui
  • centos部署open-webui的完整流程记录

参考连接

  • Centos7/Redhat7下离线部署ollama与deepseek-R1-32B模型
  • centos7离线安装cuda,cudnn,torch(一)
  • Linux系统安装python3.11.1
  • 三步教会你完全离线搭建openwebui 这个不好用
  • 源码编译安装python3.12没有ssl模块,python3.12 ModuleNotFoundError: No module named ‘_ssl‘
  • centos部署open-webui
  • centos部署open-webui的完整流程记录

http://www.ppmy.cn/devtools/162818.html

相关文章

计算机网络————(一)HTTP讲解

基础内容分类 从TCP/IP协议栈为依托&#xff0c;由上至下、从应用层到基础设施介绍协议。 1.应用层&#xff1a; HTTP/1.1 Websocket HTTP/2.0 2.应用层的安全基础设施 LTS/SSL 3.传输层 TCP 4.网络层及数据链路层 IP层和以太网 HTTP协议 网络页面形成基本 流程&#xff1a…

【Git】六、企业级开发模型

文章目录 Ⅰ. 前言Ⅱ. 系统开发环境Ⅲ. Git 分支设计规范master分支release分支develop分支feature分支hotfix分支 Ⅰ. 前言 ​ 我们知道&#xff0c;一个软件从零开始到最终交付&#xff0c;大概包括以下几个阶段&#xff1a;规划、编码、构建、测试、发布、部署和维护。 ​…

mysql对中文列值进行排序

ORDER BY CONVERT(name USING GBK) 在 MySQL 中&#xff0c;CONVERT 函数用于在不同字符集之间进行转换。当你看到 CONVERT(name USING GBK) 这样的语句时&#xff0c;它的作用是将 u.user_name 字段的值从当前字符集&#xff08;可能是 UTF-8 或其他&#xff09;转换为 GBK 字…

STM32+ESP8266局域网通信

若该文为原创文章&#xff0c;转载请注明原文出处。 此篇记录如何使用APP&#xff0c;在局域网内和STM32通信&#xff0c;并远程控制。 一、原理 STM32通过串口AT指令控制ESP8266(ESP-01S), ESP8266会产生一个热点&#xff0c;并创建了TCP服务&#xff0c;手机连接热点&#…

解决后端跨域问题

目录 一、什么是跨域问题&#xff1f; 1、跨域问题的定义 2、举例 3、为什么会有跨域问题的存在&#xff1f; 二、解决跨域问题 1、新建配置类 2、编写代码 三、结语 一、什么是跨域问题&#xff1f; 1、跨域问题的定义 跨域问题&#xff08;Cross-Origin Resource Sh…

大厂都在用的前端换肤方案:多品牌适配 + 夜间模式全解析

目录 引言 1. 换肤基础 1.1 换肤概念 1.2 主题类型 1.3 应用场景 2. 核心方案 2.1 CSS 变量切换 2.1.1 基本用法 2.1.2 优势与挑战 2.1.3 解决方案 2.2 动态样式表 2.2.1 实现步骤 2.2.2 优势与劣势 2.2.3 优化建议 2.3 类名空间 2.3.1 实现步骤 2.3.2 示例代码…

短剧源码部署搭建小程序搭建IAA+IAP混合解锁模式

在当今数字化内容消费迅速增长的时代&#xff0c;短剧作为一种新兴的内容形式&#xff0c;凭借其短小精悍、节奏紧凑的特点&#xff0c;迅速吸引了大量用户。作为一名软件体验测试人员&#xff0c;我有幸体验了一款集创新与实用为一体的短剧小程序。这款小程序不仅在前端用户体…

【Linux系统】—— 冯诺依曼体系结构与操作系统初理解

【Linux系统】—— 冯诺依曼体系结构与操作系统初理解 1 冯诺依曼体系结构1.1 基本概念理解1.2 CPU只和内存打交道1.3 为什么冯诺依曼是这种结构1.4 理解数据流动 2 操作系统2.1 什么是操作系统2.2 设计OS的目的2.3 操作系统小知识点2.4 如何理解"管理"2.5 系统调用和…