Ollama 环境变量与服务配置
Ollama 没有传统的配置文件,服务行为几乎全部由环境变量控制:监听地址、模型路径、上下文、并发、代理与调试。
本章节先讲三平台的设置方法,再按网络入口、请求调度、模型运行三个层面讲清每个核心变量。
配置变量在服务里的位置
先建立一张地图:十几个环境变量并不是平级的,它们分别作用在服务进程的不同环节。
想查看当前版本支持的完整变量列表,执行 ollama serve --help 即可。
三平台设置环境变量的方法
同一个变量,三个平台的设置入口完全不同,这是新手最容易卡住的地方。
macOS:launchctl
Ollama 以应用方式运行时,环境变量要通过 launchctl 注入,设置完重启应用生效:
实例
# 逐个注入变量
launchctl setenv OLLAMA_HOST "0.0.0.0:11434"
# 然后退出并重新打开 Ollama 应用Linux:systemd 服务覆写
实例
# 打开服务覆写编辑器
sudo systemctl edit ollama.service
# 在编辑器中加入(注意必须在 [Service] 小节下):
# [Service]
# Environment="OLLAMA_HOST=0.0.0.0:11434"
# 重载并重启服务
sudo systemctl daemon-reload
sudo systemctl restart ollamaWindows:系统环境变量
在开始菜单搜索"环境变量",选择"编辑账户的环境变量",新建或编辑变量后保存。
关键一步:先退出托盘里的 Ollama,保存后从开始菜单重新启动,新变量才会在新进程里生效。
另外还有一个 JSON 配置文件 server.json(位于 ~/.ollama/)用于少量开关型配置,例如关闭云端功能写入 {"disable_ollama_cloud": true}。绝大多数配置仍以环境变量为准。
网络入口:HOST、ORIGINS 与代理
OLLAMA_HOST:让局域网访问你的模型
默认只监听 127.0.0.1,仅本机可用;想让局域网其他设备调用,改为监听所有网卡:
实例
# 监听所有网卡(局域网可访问)
OLLAMA_HOST=0.0.0.0:11434 ollama serve
# 其他设备验证(换成你的实际 IP)
curl http://192.168.1.100:11434/api/version开放到局域网等于把无鉴权的模型服务暴露给同网段所有设备,家庭网络尚可,公司网络务必配合防火墙规则或反向代理(私有化部署章节详谈)。
OLLAMA_ORIGINS:跨域放行
Ollama 默认只接受来自 127.0.0.1 和 0.0.0.0 的跨域请求,网页或浏览器扩展直连本地 API 时需要显式放行:
实例
# 放行全部浏览器扩展
OLLAMA_ORIGINS=chrome-extension://*,moz-extension://*,safari-web-extension://* ollama serve代理:HTTPS_PROXY 只此一个
模型下载走 HTTPS 出站,网络受限环境用 HTTPS_PROXY 指向代理即可。
只设置 HTTPS_PROXY,不要设置 HTTP_PROXY:Ollama 拉取模型不走 HTTP,多设 HTTP 代理反而可能中断客户端与服务端的连接。Docker 场景在启动容器时传 -e HTTPS_PROXY=...;使用自签名证书的代理还需把 CA 证书装进系统(或打进镜像)。
模型运行:路径、上下文与驻留
OLLAMA_MODELS:模型存到别的盘
默认模型存放在用户目录,三平台路径如下:
| 平台 | 默认模型路径 |
|---|---|
| macOS | ~/.ollama/models |
| Linux | /usr/share/ollama/.ollama/models |
| Windows | C:\Users\<用户名>\.ollama\models |
把 OLLAMA_MODELS 指向新目录即可整体迁移,已下载的模型文件移动过去后可以直接使用。
实例
# Linux 示例:迁移到大容量数据盘
OLLAMA_MODELS=/data/ollama-models ollama serve
# 注意:标准安装的 Linux 使用 ollama 用户运行服务
# 新目录需要移交属主,否则服务无权读写
sudo chown -R ollama:ollama /data/ollama-modelsOLLAMA_CONTEXT_LENGTH:全局上下文
设置所有模型的默认上下文长度,未在模型或请求级单独指定时生效:
实例
# 全局默认 8K
OLLAMA_CONTEXT_LENGTH=8192 ollama serve优先级从高到低为:API 请求 options.num_ctx、Modelfile 中的 PARAMETER num_ctx、该环境变量、按显存的自动分级默认值。
OLLAMA_KEEP_ALIVE:全局驻留时长
统一调整模型加载后的驻留时间,取值格式与 API 的 keep_alive 参数一致:
实例
# 常见取值:300(秒) / "10m" / "24h" / -1 常驻 / 0 用完即卸
OLLAMA_KEEP_ALIVE=30m ollama serveAPI 请求里单独传的 keep_alive 优先于这个全局值,可以做"全局 10 分钟、重点模型常驻"的分层策略。
请求调度:并发三件套
Ollama 支持两级并发:多个模型同时驻留,以及单个模型并行处理多个请求,各有一个变量控制。
| 变量 | 默认值 | 作用 |
|---|---|---|
| OLLAMA_NUM_PARALLEL | 1 | 单个模型同时处理的请求数;所需内存按 该值 × 上下文长度 放大 |
| OLLAMA_MAX_LOADED_MODELS | 3 × GPU 数(CPU 推理为 3) | 允许同时加载的模型总数,前提是显存内存装得下 |
| OLLAMA_MAX_QUEUE | 512 | 服务繁忙时的最大排队请求数,超出直接返回 503 |
调度逻辑值得理解:显存足够时模型并行处理请求;显存不足时新请求排队,等待中的模型空闲卸载后腾出空间。
NUM_PARALLEL 是最容易踩坑的变量:设成 4 意味着上下文缓存要乘以 4 份,显存瞬间翻四倍,模型可能因此被挤出 GPU。多用户共享实例的规划方法在私有化部署章节展开。
调试与日志:OLLAMA_DEBUG
排查问题的第一步永远是开调试、看日志。
实例
# 开启调试日志
OLLAMA_DEBUG=1 ollama serveWindows 图形应用开启调试的方式:先从托盘退出应用,然后在 PowerShell 中执行:
实例
$env:OLLAMA_DEBUG="1"
& "ollama app.exe"四套环境的日志位置汇总:
| 环境 | 日志位置 |
|---|---|
| macOS | ~/.ollama/logs/server.log |
| Linux(systemd) | journalctl -u ollama --no-pager --follow --pager-end |
| Windows | %LOCALAPPDATA%\Ollama\server.log |
| Docker | docker logs <容器名>(stdout/stderr) |
其他实用变量速查
其余变量多与特定场景绑定,完整的分章节讲解在对应主题篇展开,这里先建立索引。
| 变量 | 示例值 | 作用 |
|---|---|---|
| OLLAMA_FLASH_ATTENTION | 1 / 0 | 强制开启 / 关闭 Flash Attention,长上下文时显著省显存(GPU 章节详解) |
| OLLAMA_KV_CACHE_TYPE | q8_0 / q4_0 | KV 缓存量化类型,需配合 Flash Attention(GPU 章节详解) |
| OLLAMA_VULKAN | 0 | 关闭 Vulkan 后端(Vulkan 异常时的开关) |
| OLLAMA_LLM_LIBRARY | cpu_avx2 | 强制指定推理库,绕过自动探测 |
| OLLAMA_TMPDIR | /data/tmp | 临时目录改位置(系统 /tmp 挂了 noexec 时) |
| OLLAMA_NO_CLOUD | 1 | 禁用云模型与联网搜索,纯本地模式 |
AI 思考中...