1. 为什么需要离线部署ollama?
在服务器环境中部署AI工具时,网络条件往往是最大的不确定因素。我最近在给某金融机构部署ollama时就遇到了这样的问题:他们的生产服务器完全隔离外网,而官方安装脚本默认会从GitHub拉取安装包。这种场景下,离线部署就成了刚需。
离线部署的核心思路其实很简单——把需要在线下载的内容提前准备好,然后修改安装脚本的下载逻辑。但实际操作中会遇到三个典型问题:如何准确替换下载路径?如何处理文件权限?怎样确保符号链接正确建立?这些都是我踩过坑之后总结出来的关键点。
举个例子,某次在arm架构服务器上部署时,我忽略了安装包架构匹配问题,直接用了amd64的包,结果当然失败了。后来发现通过lscpu命令查看CPU架构就能避免这个问题。这种细节在实际操作中非常重要。
2. 准备工作:获取正确的安装包
2.1 确定服务器架构
在下载安装包前,必须确认服务器架构。这个步骤看似简单,但很多新手都会栽跟头。执行以下命令查看CPU架构:
lscpu | grep Architecture常见的输出有两种:
- x86_64:对应amd64版本
- aarch64或arm64:对应arm64版本
我曾经遇到过一个特殊情况:某国产化服务器显示为arm64架构,但实际上需要特定的兼容版本。这种情况下,最好先在小范围测试确认兼容性。
2.2 下载离线安装包
官方GitHub仓库提供了预编译的安装包:
https://github.com/ollama/ollama/releases下载时要注意版本匹配。比如当前最新稳定版是v0.1.20,那么就应该下载ollama-linux-amd64-v0.1.20.tgz这样的完整版本文件,而不是简单的latest链接。
建议同时下载sha256校验文件,确保安装包完整性。校验命令如下:
echo "预期的校验值 ollama-linux-amd64.tgz" | sha256sum -c3. 修改安装脚本的关键步骤
3.1 获取原始安装脚本
官方安装脚本可以通过以下命令获取:
curl -O https://ollama.com/install.sh这个脚本有300多行代码,但我们需要关注的只有下载相关的部分。用vim或vscode打开后,搜索curl --fail --show-error就能快速定位到关键代码段。
3.2 精准替换下载逻辑
原始脚本中典型的下载代码是这样的:
curl --fail --show-error --location --progress-bar \ "https://ollama.com/download/ollama-linux-${ARCH}.tgz${VER_PARAM}" | \ $SUDO tar -xzf - -C "$OLLAMA_INSTALL_DIR"修改为离线版本时,需要替换为:
$SUDO tar -xzf /path/to/your/ollama-linux-${ARCH}.tgz -C "$OLLAMA_INSTALL_DIR"这里有几个注意事项:
- 使用绝对路径而不是相对路径
- 保留${ARCH}变量确保架构匹配
- 提前确认tar包有可读权限
3.3 处理Windows换行符问题
如果你在Windows环境下编辑过脚本,可能会遇到这样的错误:
install.sh: line 4: $'\r': command not found这是因为Windows和Linux的换行符不同。解决方法很简单:
sudo yum install dos2unix -y # CentOS/RHEL sudo apt-get install dos2unix # Ubuntu/Debian dos2unix install.sh4. 完整安装流程演示
4.1 文件上传与准备
假设我们已经把安装包上传到服务器的/home目录下,结构如下:
/home/ ├── ollama-linux-amd64.tgz └── modified_install.sh给脚本添加执行权限:
chmod +x modified_install.sh4.2 执行安装
运行修改后的安装脚本:
sudo ./modified_install.sh安装过程中重点关注几个关键点:
- 解压路径是否正确
- 二进制文件是否被正确安装到/usr/local/bin
- 符号链接是否建立成功
4.3 验证安装
安装完成后,运行以下命令验证:
ollama --version which ollama正常应该输出类似:
ollama version 0.1.20 /usr/local/bin/ollama5. 常见问题排查指南
5.1 权限问题处理
遇到过最头疼的问题就是权限配置不当。比如某次部署后运行ollama报错:
error: permission denied while trying to connect to the Docker daemon解决方法是为ollama用户添加docker组权限:
sudo usermod -aG docker ollama sudo systemctl restart ollama5.2 符号链接失效
有时会发现/usr/bin/ollama指向的位置不正确。检查方法:
ls -l $(which ollama)重新建立链接的命令:
sudo ln -sf /usr/local/ollama/ollama /usr/bin/ollama5.3 系统服务配置
对于需要长期运行的服务,建议配置systemd:
sudo systemctl enable ollama sudo systemctl start ollama检查服务状态:
systemctl status ollama6. 高级配置技巧
6.1 自定义安装路径
如果想安装到非标准路径,比如/opt/ollama,需要修改两处:
- 安装脚本中的OLLAMA_INSTALL_DIR
- systemd服务文件中的路径
6.2 多版本管理
通过修改VER_PARAM参数可以安装特定版本:
export OLLAMA_VERSION="v0.1.18" ./modified_install.sh6.3 离线模型部署
安装完成后,模型文件也需要离线加载。先将模型文件打包:
ollama pull llama2 tar czf llama2-model.tar.gz ~/.ollama/models在目标服务器上恢复:
tar xzf llama2-model.tar.gz -C ~/.ollama7. 安全加固建议
在生产环境中,还需要考虑以下安全措施:
- 为ollama创建专用用户:
sudo useradd -r -s /bin/false ollama- 限制目录权限:
sudo chown -R ollama:ollama /usr/local/ollama sudo chmod 750 /usr/local/ollama- 配置防火墙规则:
sudo ufw allow 11434/tcp # ollama默认端口8. 性能优化方案
根据服务器配置,可以调整运行参数提升性能:
- 增加并行度:
export OLLAMA_NUM_PARALLEL=4- 指定GPU使用:
export CUDA_VISIBLE_DEVICES=0- 内存限制:
export OLLAMA_MAX_MEMORY="32GB"这些配置可以添加到/etc/default/ollama文件中实现持久化。