装了 Ollama、模型也拉下来了,结果重启后模型找不着、局域网里别的机器连不上、服务只在某个地址上听——多半是环境变量没设对或者设了没生效。这篇按「先明确要改哪几个变量、再按系统写、最后怎么验证」三步走,把路径迁移、端口暴露、临时与永久生效的区别一次讲清,并给出改错后的回退顺序。
装了 Ollama、模型也拉下来了,结果重启之后模型找不着、局域网里别的机器连不上、服务只在某个地址上听——这类问题十有八九不是程序坏了,而是环境变量没设对,或者设了但没真正生效。先别急着重装,按「明确要改哪几个变量、按系统写对、最后怎么验证」这三步走一遍,大部分坑都能绕开。
下面把路径迁移、端口暴露、临时与永久生效的区别讲清楚,并给一套改错了的回退顺序。注意每个系统的写法差别不小,尤其是「终端里 export 一下」和「让后台服务读到」完全是两回事。
先认清你真正要改的那几个变量
日常本地使用里,真正需要动的不外乎三类:模型存放位置、服务监听地址与端口、允许跨机访问的来源。其余变量绝大多数场景保持默认就行,改多了只会让自己排查时更乱。
- 模型存放路径:为了把模型从系统盘挪到大容量盘,或者多块盘分开存,这是最常改的一个。
- 服务监听地址与端口:为了让局域网其他设备、容器或者别的服务能连上来。
- 允许访问的来源:控制哪些地址可以连,属于暴露出去之后的安全边界。
- 不需要改的情况:单机自用、系统盘空间足够、只在本机程序里调用,保持默认反而更稳。
按系统写:Linux、macOS、Windows 各自怎么写
同样是设一个变量,三个系统的生效路径完全不同。最容易犯的错是在终端里敲了一行导出命令,以为万事大吉,结果服务是以后台守护进程方式起的,根本读不到你那个终端里的东西。
| 系统 | 常见写法 | 容易踩的坑 |
|---|---|---|
| Linux | 写进服务自己的配置文件,再重载服务 | 只在命令行导出,服务读不到;改完忘了重载 |
| macOS | 区分命令行运行和后台服务两种形态 | 图形界面启动时不会继承终端里导出的变量 |
| Windows | 分当前会话变量与系统级变量 | 改完不重开终端、不重启服务,看着像没生效 |
- 一次只改一个变量改一个、重启、验证一次。同时改三四个,出错时根本分不清是哪条引起的。
- 写进对的文件确认你的服务到底是读服务配置文件,还是读用户级配置。判断方法:改完之后重启服务,看变量是否真的作用于进程。
- 重启而不是只看终端回显终端里 echo 出来有值,不代表服务进程读到了。以服务重启后的实际行为为准。
换模型目录:老模型怎么搬过去不重下
换目录的核心诉求是不想重新下载一遍模型。做法本身不复杂,关键是保持目录结构完整、搬完要验证服务真的读到了新位置,而不是悄悄回落到了旧路径。
- 停掉服务先把正在跑的服务停干净,避免搬运过程中还有进程在读写文件。
- 整体搬运把原目录里的内容按原有层级一起搬过去,别只拷一部分。层级结构变了,服务就可能认不出来。
- 启动并验证重启服务后,拿一个已经拉取的模型跑一次推理,确认它确实从新目录读到了文件。
- 确认后再删旧目录新目录验证无误之前旧目录先留着,当作回退。磁盘紧张时再清理旧目录里的冗余部分。
验证时不要只看「服务起来了」就放心,要确认当前生效的模型路径和实际可用的模型列表。具体查哪些命令、看哪个字段,到 /models/deploy 页面对照当时的说明核对,比凭记忆敲命令可靠。
改监听地址与端口:让别的设备连得上
只改端口和要让别的设备连上,是两件事。前者只要新端口没被占用就行;后者还要把监听地址从「仅本机」改成对外,并确认系统防火墙放行。
| 需求 | 要动什么 | 改完怎么验证 |
|---|---|---|
| 只换端口 | 端口配置 | 确认新端口没被占用,本机连一次 |
| 局域网能访问 | 监听地址改为对外 + 防火墙放行 | 从另一台机器实测连通性 |
| 公网访问 | 监听地址 + 访问控制 | 先想清楚鉴权,别裸奔 |
改完别只在本机用命令行测一下就算过。一定要从另一台设备实际连一次,因为本机连着不代表监听地址、防火墙这些环节都通了。
验证与排查顺序
出问题的时候,按固定顺序往下排,比东改一下西改一下省时间得多。变量写了不生效,最常见的原因就那么几个:写错了文件、改完没重启、被另一处同名变量覆盖。
- 服务有没有正常起来:先确认进程活着,端口有人在听。
- 配置有没有被读到:确认服务进程实际拿到的值,而不是你终端里的值。
- 路径对不对:优先查新目录的权限和属主,服务进程读不到文件是很常见的报错来源。
- 端口通不通:从别的机器实测,配合防火墙规则一起看。
如果是性能或者显存方面的异常,那不属于环境变量的范畴,该去看部署和显存相关的页面来对照,别在变量上继续折腾。各家中转与自建方案的实际延迟、可用性数据会随时间变化,具体数字到 /tools/speed-test 现场测一次更靠谱。
下一步想对比不同接入方式的实际连通性和延迟,或者看看别人踩过的坑,可以到站内的评测与工具页面对照当时的数字。→常见问题
改环境变量后模型列表变空了怎么办?
基本是路径指到了空目录,或者搬运时层级结构变了。先停服务,确认新目录里确实是原来那套子目录和文件,再检查服务进程有没有权限读它。旧目录别急着删,确认新路径正常读到模型之后再回收空间。
同一台机器上终端里能连、别的设备连不上,是哪里错了?
多半是监听地址还停在仅本机,或者防火墙没放行新端口。先把监听地址改成对外,重启服务,再从另一台机器访问一次。如果只在容器里不行,还要看容器启动时有没有把端口映射出来。
这些变量改了会不会影响已经拉下来的模型?
只改监听地址和端口不影响模型文件;改模型存放路径则要先搬文件再重启,否则新路径下会读不到。改之前建议先记下当前配置,出问题好按原样改回去。