目录
前言
1. 外部无法访问Ollama服务接口
1.1 检查 Ollama 服务状态
1.2 验证 Ollama API 是否可访问
1.3 常见解决方案
方案 A: 检查 Ollama 绑定地址
方案 B: 通过环境变量启动
1.4 Ollama 服务常见命令
2. 设置 Ollama 加载的模型常驻内存
方法1:设置环境变量(推荐)
方法2:设置模型特定的保持时间
方法3:使用 API 设置模型常驻
参数说明:
3. 设置模型预加载
方法一:创建启动后脚本
方法二:创建专门的systemd服务
方法三:修改现有服务
前言
使用 curl -fsSL https://ollama.com/install.sh | sh 命令部署安装 Ollama 服务。
1. 外部无法访问Ollama服务接口
localhost (127.0.0.1) 可以访问,而局域网 IP (如:192.168.0.131) 无法访问。
这通常是 Ollama 默认只绑定到 localhost 接口导致的。
以下是详细的排查步骤和解决方案:
1.1 检查 Ollama 服务状态
# 在 Ollama 所在的服务器上检查服务状态 systemctl status ollama # 或 sudo service ollama status # 如果服务未运行,启动它 sudo systemctl start ollama # 或 sudo service ollama start1.2 验证 Ollama API 是否可访问
# 在 Ollama 服务器上测试 API curl http://localhost:11434/api/tags # 或在 Dify 服务器上测试 curl http://192.168.0.131:11434/api/tags执行 curl http://localhost:11434/api/tags 正常访问
执行 curl http://192.168.0.131:11434/api/tags 报错:
1.3 常见解决方案
方案 A: 检查 Ollama 绑定地址
默认情况下 Ollama 只绑定到 127.0.0.1,需要修改配置:
# 1. 停止 Ollama 服务 sudo systemctl stop ollama # 2. 编辑环境变量文件 sudo nano /etc/systemd/system/ollama.service # 3. 在 [Service] 部分添加 Environment="OLLAMA_HOST=0.0.0.0:11434" Environment="OLLAMA_ORIGINS=*" # 4. 重新加载并启动 sudo systemctl daemon-reload sudo systemctl start ollama # 5. 验证监听地址 netstat -tlnp | grep 11434 # 应该显示 0.0.0.0:11434 而不是 127.0.0.1:11434方案 B: 通过环境变量启动
# 临时设置 export OLLAMA_HOST=0.0.0.0:11434 ollama serve # 或创建 systemd 配置文件 sudo mkdir -p /etc/systemd/system/ollama.service.d/ sudo nano /etc/systemd/system/ollama.service.d/override.conf添加内容:
[Service] Environment="OLLAMA_HOST=0.0.0.0:11434" Environment="OLLAMA_ORIGINS=*"然后重启:
# 重新加载 systemd 并重启服务 sudo systemctl daemon-reload sudo systemctl restart ollama1.4 Ollama 服务常见命令
# 1. 停止所有ollama相关进程 sudo systemctl stop ollama pkill -9 ollama # 2. 重新加载systemd配置 sudo systemctl daemon-reload # 3. 使用systemd启动ollama服务 sudo systemctl start ollama # 4. 检查服务状态 sudo systemctl status ollama # 5. 设置开机自启 sudo systemctl enable ollama # 6. 查看服务日志 sudo journalctl -u ollama -f # 7. 重启ollama服务 sudo systemctl restart ollama # 8. 验证端口监听情况 sudo netstat -tlnp | grep 114342. 设置 Ollama 加载的模型常驻内存
要让 Ollama 模型保持常驻内存(UNTIL 为 Forever),需要调整 Ollama 的配置。以下是几种方法:
方法1:设置环境变量(推荐)
临时设置(当前会话有效):
export OLLAMA_KEEP_ALIVE="24h" # 24小时 # 或者设置为永久 export OLLAMA_KEEP_ALIVE="-1" # 重启 ollama 服务 sudo systemctl restart ollama永久设置(修改 systemd 配置):
# 编辑服务配置文件 sudo nano /etc/systemd/system/ollama.service添加以下内容(如果已经有内容就添加新的环境变量):
[Service] Environment="OLLAMA_HOST=0.0.0.0" Environment="OLLAMA_ORIGINS=*" Environment="OLLAMA_KEEP_ALIVE=-1"然后:
# 重新加载并重启 sudo systemctl daemon-reload sudo systemctl restart ollama方法2:设置模型特定的保持时间
# 在拉取或运行模型时指定保持时间 ollama pull --keep-alive -1 qwen3:14b # 或者 ollama run --keep-alive 24h qwen3:14b方法3:使用 API 设置模型常驻
# 通过 API 加载模型并设置保持时间 curl -X POST http://localhost:11434/api/generate \ -H "Content-Type: application/json" \ -d '{ "model": "qwen3:14b", "prompt": "Hello", "stream": false, "keep_alive": -1 }'参数说明:
OLLAMA_KEEP_ALIVE=-1: 永久保持模型在内存中OLLAMA_KEEP_ALIVE="24h": 保持24小时OLLAMA_KEEP_ALIVE="30m": 保持30分钟
3. 设置模型预加载
可以通过以下方法实现在Ollama服务启动时自动预加载模型。
方法一:创建启动后脚本
3.1 创建预加载脚本:
sudo nano /etc/systemd/system/ollama-preload.sh3.2 添加以下内容:
#!/bin/bash # 等待ollama服务完全启动 sleep 5 # 预加载qwen3:14b模型 curl -X POST http://localhost:11434/api/generate \ -H "Content-Type: application/json" \ -d '{ "model": "qwen3:14b", "prompt": "ping", "stream": false, "options": { "num_predict": 1 } }' > /dev/null 2>&1 # 预加载quentinz/bge-large-zh-v1.5:latest模型 curl -X POST http://localhost:11434/api/generate \ -H "Content-Type: application/json" \ -d '{ "model": "quentinz/bge-large-zh-v1.5:latest", "prompt": "ping", "stream": false, "options": { "num_predict": 1 } }' > /dev/null 2>&1 echo "Models preloaded at $(date)" >> /var/log/ollama-preload.log3.3赋予执行权限
sudo chmod +x /etc/systemd/system/ollama-preload.sh3.4 修改systemd服务文件:
sudo nano /etc/systemd/system/ollama.service在[Service]部分添加:
ExecStartPost=/etc/systemd/system/ollama-preload.sh方法二:创建专门的systemd服务
3.1 创建独立的服务文件:
sudo nano /etc/systemd/system/ollama-preload.service[Unit] Description=Preload Ollama Models After=ollama.service Requires=ollama.service [Service] Type=oneshot User=ollama Group=ollama ExecStart=/usr/local/bin/ollama run qwen3:14b "ping" ExecStart=/usr/local/bin/ollama run quentinz/bge-large-zh-v1.5:latest "ping" RemainAfterExit=yes Environment="PATH=/usr/local/bin:/usr/bin:/bin" [Install] WantedBy=multi-user.target3.2 启用这个服务:
sudo systemctl daemon-reload sudo systemctl enable ollama-preload.service方法三:修改现有服务
直接修改ollama.service,在ExecStart后添加预加载命令:
[Service] ExecStart=/usr/local/bin/ollama serve ExecStartPost=/bin/bash -c 'sleep 10 && /usr/local/bin/ollama run qwen3:14b "ping" > /dev/null 2>&1 &' ExecStartPost=/bin/bash -c 'sleep 15 && /usr/local/bin/ollama run quentinz/bge-large-zh-v1.5:latest "ping" > /dev/null 2>&1 &'无论选择哪种方法,最后都需要:
1. 重新加载systemd配置:
sudo systemctl daemon-reload2. 重启ollama服务:
sudo systemctl restart ollama3. 检查日志:
sudo journalctl -u ollama -f