ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

CentOS7离线部署MaxKB与Ollama大模型服务指南

CentOS7离线部署MaxKB与Ollama大模型服务指南

1. CentOS7环境离线部署MaxKB与Ollama的完整指南

最近在搭建离线大模型服务时,发现很多教程都需要联网操作,但在实际企业环境中,内网服务器往往无法直接访问外网资源。经过多次实践,我总结出一套在CentOS7系统上完全离线部署MaxKB知识库和Ollama大模型服务的方案,特别适合需要私有化部署的场景。

这个方案的核心优势在于:

  • 完全离线操作,不依赖外网下载
  • 使用Docker容器化部署,环境隔离性好
  • 配置简单,适合2C4G及以上配置的服务器
  • 可扩展性强,后续可接入更多大模型

2. 环境准备与前置检查

2.1 系统要求与依赖确认

在开始部署前,请确保你的CentOS7系统满足以下条件:

  • 系统版本:CentOS 7.6及以上(建议使用最小化安装)
  • 内存:至少4GB(运行32B模型需要32GB以上)
  • 存储:至少50GB可用空间
  • 已安装Docker:版本20.10.0+
  • 已安装curl、tar等基础工具

检查系统版本命令:

cat /etc/redhat-release

验证Docker是否安装:

docker --version

如果尚未安装Docker,可以离线安装:

  1. 从能联网的机器下载Docker CE的RPM包及其依赖
  2. 将下载的rpm包传输到目标服务器
  3. 使用yum localinstall命令安装

2.2 离线资源准备

需要提前下载以下资源并传输到目标服务器:

  1. MaxKB离线安装包:

    • 下载地址:https://community.fit2cloud.com/#/products/maxkb/downloads
    • 选择对应版本的离线包(如maxkb-v1.2.0-offline.tar.gz)
  2. Ollama离线安装包:

    • 包含install.sh和ollama-linux-amd64.tgz两个文件
    • 可从Ollama官方GitHub仓库的Release页面获取
  3. 大模型文件(可选):

    • 如qwen1_5-0_5b-chat-q5_k_m.gguf等GGUF格式模型
    • 建议从HuggingFace等平台提前下载

将这些文件通过U盘、内网FTP或其他方式传输到目标服务器的/opt目录下。

3. MaxKB知识库系统离线安装

3.1 安装步骤详解

MaxKB是一款开源的AI知识库系统,支持对接多种大模型。离线安装步骤如下:

  1. 解压安装包:
tar -zxvf maxkb-v1.2.0-offline.tar.gz
  1. 进入解压目录:
cd maxkb-v1.2.0-offline
  1. 执行安装脚本:
bash install.sh

安装过程会自动完成以下操作:

  • 加载Docker镜像
  • 创建必要的容器卷
  • 启动PostgreSQL数据库
  • 启动MaxKB主服务

3.2 安装验证与问题排查

安装完成后,可以通过以下命令检查服务状态:

docker ps -a | grep maxkb

正常情况下应该看到maxkb容器处于运行状态,监听8080端口。

常见问题及解决方案:

  1. 端口冲突:

    • 如果8080端口被占用,可以修改安装目录下的docker-compose.yml文件
    • 将"8080:8080"改为其他端口如"8081:8080"
  2. 存储空间不足:

    • MaxKB默认将数据存储在~/.maxkb目录
    • 可以通过修改docker-compose.yml中的volumes配置改变存储位置
  3. SELinux导致的问题:

    • 临时禁用:setenforce 0
    • 永久禁用:修改/etc/selinux/config文件

安装成功后,通过浏览器访问http://服务器IP:8080 即可进入MaxKB的Web界面。

4. Ollama大模型服务离线部署

4.1 安装Ollama服务

Ollama是一个本地大模型运行框架,支持多种开源模型。离线安装步骤如下:

  1. 确保install.sh和ollama-linux-amd64.tgz在同一目录
  2. 给安装脚本执行权限:
chmod +x install.sh
  1. 执行安装:
./install.sh

安装过程会将Ollama二进制文件安装到/usr/bin目录,并创建ollama系统用户和service服务。

4.2 服务配置优化

默认安装后,Ollama会监听127.0.0.1:11434,这会导致MaxKB无法访问。需要修改配置:

  1. 编辑service文件:
vi /etc/systemd/system/ollama.service
  1. 找到Environment行,修改为:
Environment="OLLAMA_HOST=0.0.0.0"
  1. 重新加载并重启服务:
systemctl daemon-reload systemctl restart ollama

验证服务是否正常运行:

curl http://127.0.0.1:11434/

应该返回"Ollama is running"

4.3 模型导入与管理

在离线环境下,需要手动导入模型文件:

  1. 创建Modelfile(以qwen1.5-0.5B为例):
FROM ./qwen1_5-0_5b-chat-q5_k_m.gguf TEMPLATE """{{ if .System }}<|im_start|>system {{ .System }}<|im_end|>{{ end }}<|im_start|>user {{ .Prompt }}<|im_end|> <|im_start|>assistant """ PARAMETER stop "<|im_start|>" PARAMETER stop "<|im_end|>"
  1. 创建模型:
ollama create qwen:0.5b -f Modelfile
  1. 查看模型列表:
ollama list
  1. 运行模型测试:
ollama run qwen:0.5b

提示:对于更大的模型(如7B、13B等),需要确保服务器有足够的内存和显存。32B模型至少需要48GB显存。

5. MaxKB与Ollama集成配置

5.1 服务对接步骤

  1. 登录MaxKB管理界面(http://服务器IP:8080)
  2. 进入"模型管理" → "添加模型"
  3. 选择"Ollama"作为模型类型
  4. 填写Ollama服务地址:
    • 格式:http://服务器内网IP:11434
    • 例如:http://192.168.1.100:11434
  5. 选择已创建的模型(如qwen:0.5b)
  6. 点击"测试连接"确保配置正确
  7. 保存配置

5.2 常见连接问题排查

  1. 连接超时:

    • 检查Ollama服务是否运行:systemctl status ollama
    • 检查防火墙是否放行11434端口
  2. API域名无效:

    • 确保Ollama监听0.0.0.0而非127.0.0.1
    • 从MaxKB容器内部测试连接:
docker exec -it maxkb bash curl http://服务器IP:11434/
  1. 模型不可见:
    • 确保模型已通过ollama create创建成功
    • 检查ollama list是否有对应模型

5.3 性能优化建议

  1. 对于低配置服务器:
    • 使用量化级别更高的模型(如q5_k_m而非q8_0)
    • 在Ollama启动时限制CPU核心数:
OLLAMA_NUM_PARALLEL=2 ollama serve
  1. 对于GPU服务器:
    • 安装NVIDIA驱动和CUDA工具包
    • 启动Ollama时指定GPU:
OLLAMA_NO_CUDA=0 ollama serve
  1. 内存优化:
    • 调整MaxKB的JVM参数:
docker exec -it maxkb bash export JAVA_OPTS="-Xms1g -Xmx2g"

6. 进阶配置与使用技巧

6.1 模型微调与定制

在离线环境中,可以对模型进行进一步定制:

  1. 修改Modelfile添加系统提示词:
SYSTEM """你是一个专业的AI助手,回答要简洁专业"""
  1. 调整推理参数:
PARAMETER temperature 0.7 PARAMETER top_p 0.9
  1. 合并多个模型文件(需先转换为GGUF格式):
ollama create combined-model -f Modelfile1 -f Modelfile2

6.2 知识库构建与管理

MaxKB支持上传文档构建知识库:

  1. 支持格式:PDF、Word、Excel、PPT、TXT等
  2. 上传路径:知识库 → 文档管理 → 上传文档
  3. 处理完成后,可以在"问答测试"中验证效果

离线环境下文档解析的注意事项:

  • 确保服务器已安装unzip、poppler-utils等工具
  • 中文文档需要额外字体支持
  • 大文档需要更长的处理时间

6.3 备份与迁移

  1. MaxKB数据备份:
docker exec maxkb pg_dump -U maxkb maxkb > maxkb_backup.sql
  1. Ollama模型备份:
  • 模型文件默认存储在~/.ollama/models
  • 可以直接打包整个目录备份
  1. 迁移到新服务器:
  • 在新服务器上安装相同版本的MaxKB和Ollama
  • 恢复数据库备份:
docker exec -i maxkb psql -U maxkb maxkb < maxkb_backup.sql
  • 复制Ollama模型目录到新服务器

7. 实际应用案例与性能测试

7.1 不同模型资源占用对比

在2C4G的测试服务器上运行不同模型的资源占用情况:

模型名称参数规模内存占用响应速度适合场景
qwen:0.5b0.5B1.2GB快速简单问答、分类
llama2:7b-chat7B6.5GB中等一般对话、写作
deepseek-r1:32b32B22GB较慢复杂推理、专业领域

7.2 典型问题响应示例

  1. 技术问答: 问:如何在Linux上查看磁盘空间? 答:可以使用df -h命令查看磁盘使用情况,-h参数使输出以易读格式显示。

  2. 内容生成: 问:写一篇关于人工智能的简短介绍 答:人工智能是模拟人类智能的计算机系统...(生成约200字内容)

  3. 代码辅助: 问:用Python写一个快速排序实现 答:python def quick_sort(arr): if len(arr) <= 1: return arr pivot = arr[len(arr)//2] left = [x for x in arr if x < pivot] middle = [x for x in arr if x == pivot] right = [x for x in arr if x > pivot] return quick_sort(left) + middle + quick_sort(right)

7.3 性能优化前后对比

优化前(默认配置):

  • 平均响应时间:3.5秒
  • 并发请求处理能力:2-3个
  • 内存占用波动大

优化后(调整参数后):

  • 平均响应时间:1.8秒
  • 并发处理能力:5-7个
  • 内存占用稳定

关键优化点:

  1. 限制Ollama的并行请求数
  2. 调整模型temperature参数
  3. 为MaxKB配置合适的JVM内存
  4. 使用更高效的模型量化方式

8. 安全加固与维护建议

8.1 服务安全配置

  1. 网络层防护:

    • 使用防火墙限制访问IP
    • 修改默认端口
    • 设置Nginx反向代理并启用HTTPS
  2. 应用层防护:

    • 修改MaxKB默认管理员密码
    • 定期清理无用API密钥
    • 关闭Ollama的未授权访问
  3. 数据安全:

    • 定期备份知识库内容
    • 敏感数据不上传
    • 模型文件校验哈希值

8.2 日常维护指南

  1. 日志查看:
    • MaxKB日志:
docker logs -f maxkb
  • Ollama日志:
journalctl -u ollama -f
  1. 监控指标:

    • CPU/内存使用率
    • 服务响应时间
    • 异常错误计数
  2. 定期维护:

    • 每周检查存储空间
    • 每月验证备份有效性
    • 每季度评估模型更新需求

8.3 故障恢复流程

  1. 服务不可用:

    • 检查docker服务状态
    • 验证端口监听情况
    • 查看最近配置变更
  2. 性能下降:

    • 检查系统资源使用
    • 分析模型响应时间
    • 考虑模型量化或更换
  3. 数据异常:

    • 从备份恢复数据库
    • 验证模型文件完整性
    • 检查知识库文档状态

这套离线部署方案已经在多个企业内网环境中稳定运行,特别适合对数据隐私要求高的场景。实际部署时,建议先在小规模测试环境验证,确认无误后再推广到生产环境。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进