Ollama环境变量与常用CLI命令
环境变量
用于配置 Ollama 的运行环境和行为,以下是一些常见的环境变量及其用途:
网络配置
OLLAMA_HOST:定义 Ollama 服务器的协议和主机地址。默认为
127.0.0.1:11434,仅本机地址可通过 11434 端口访问该服务。可以通过此变量自定义 Ollama 服务的监听地址和端口,例如设置为0.0.0.0:8080,可允许其他电脑访问 Ollama(如:局域网中的其他电脑)。默认使用 http 协议。若要使用 https 协议,可设置为:https://0.0.0.0:443OLLAMA_ORIGINS:配置允许跨域请求的来源列表。默认包含
localhost、127.0.0.1、0.0.0.0等本地地址以及一些特定协议的来源。通过设置此变量,可以指定哪些来源可以访问 Ollama 服务,例如OLLAMA_ORIGINS=*,https://example.com允许所有来源以及https://example.com的跨域请求。
模型管理
OLLAMA_MODELS:指定模型文件的存储路径。默认为用户主目录下的
.ollama/models文件夹。通过设置此变量,可以自定义模型文件的存储位置,例如OLLAMA_MODELS=/path/to/models将模型存储在指定的路径下。OLLAMA_KEEP_ALIVE:控制模型在内存中的存活时间。默认为 5 分钟。负值表示无限存活,0 表示不保持模型在内存中。此变量用于优化模型加载和运行的性能,例如
OLLAMA_KEEP_ALIVE=30m可以让模型在内存中保持 30 分钟。OLLAMA_LOAD_TIMEOUT:设置模型加载过程中的超时时间。默认为 5 分钟。0 或负值表示无限超时。此变量用于防止模型加载过程过长导致服务无响应,例如
OLLAMA_LOAD_TIMEOUT=10m可以将超时时间设置为 10 分钟。OLLAMA_MAX_LOADED_MODELS:限制同时加载的模型数量。默认为 0,表示不限制。此变量用于合理分配系统资源,避免过多模型同时加载导致资源不足,例如
OLLAMA_MAX_LOADED_MODELS=4可以限制同时加载 4 个模型。OLLAMA_MAX_QUEUE:设置请求队列的最大长度。默认为 512。此变量用于控制并发请求的数量,避免过多请求同时处理导致服务过载,例如
OLLAMA_MAX_QUEUE=1024可以将队列长度设置为 1024。OLLAMA_MAX_VRAM:设置 GPU 显存的最大使用量(以字节为单位)。默认为 0,表示不限制。此变量用于控制 GPU 资源的使用,避免显存不足导致的问题,例如
OLLAMA_MAX_VRAM=8589934592可以将显存限制为 8GB。OLLAMA_GPU_OVERHEAD:为每个 GPU 预留的显存(以字节为单位)。默认为 0。此变量用于确保每个 GPU 有一定的显存余量,避免显存不足导致的问题,例如
OLLAMA_GPU_OVERHEAD=1073741824可以为每个 GPU 预留 1GB 的显存。
性能与调度
OLLAMA_NUM_PARALLEL:设置同时处理的并行请求数量。默认为 0,表示不限制。此变量用于优化服务的并发处理能力,例如
OLLAMA_NUM_PARALLEL=8可以同时处理 8 个并行请求。OLLAMA_SCHED_SPREAD:允许模型跨所有 GPU 进行调度。默认为
false。启用此变量可以提高模型运行的灵活性和资源利用率,例如OLLAMA_SCHED_SPREAD=1可以启用跨 GPU 调度。
调试与日志
OLLAMA_DEBUG:启用额外的调试信息。默认为
false。开启此变量可以获取更多的调试日志,帮助排查问题,例如OLLAMA_DEBUG=1可以启用调试模式。OLLAMA_NOHISTORY:禁用 readline 历史记录。默认为
false。启用此变量可以避免保存命令历史记录,例如OLLAMA_NOHISTORY=1可以禁用历史记录。OLLAMA_NOPRUNE:在启动时不清理模型文件。默认为
false。启用此变量可以保留所有模型文件,避免不必要的清理操作,例如OLLAMA_NOPRUNE=1可以禁用模型文件的清理。
特性开关
OLLAMA_FLASH_ATTENTION:启用实验性的 Flash Attention 特性。默认为
false。此变量用于测试和使用新的注意力机制特性,例如OLLAMA_FLASH_ATTENTION=1可以启用 Flash Attention。OLLAMA_MULTIUSER_CACHE:为多用户场景优化提示缓存。默认为
false。启用此变量可以提高多用户环境下的缓存效率,例如OLLAMA_MULTIUSER_CACHE=1可以启用多用户缓存优化。
代理设置
HTTP_PROXY:设置 HTTP 代理服务器地址。此变量用于配置 Ollama 在进行 HTTP 请求时使用的代理服务器,例如
HTTP_PROXY=http://proxy.example.com:8080可以让 Ollama 使用指定的 HTTP 代理。HTTPS_PROXY:设置 HTTPS 代理服务器地址。此变量用于配置 Ollama 在进行 HTTPS 请求时使用的代理服务器,例如
HTTPS_PROXY=https://proxy.example.com:8080可以让 Ollama 使用指定的 HTTPS 代理。NO_PROXY:设置不使用代理的地址列表。此变量用于指定哪些地址在进行请求时不使用代理,例如
NO_PROXY=localhost,example.com可以让 Ollama 在访问localhost和example.com时不使用代理.
CLI命令
| 命令 | 用途 |
|---|---|
| ollama serve | 在本地系统上启动 Ollama。 |
| ollama create |
从现有模型创建一个新模型,用于定制或训练。 |
| ollama show |
显示特定模型的详细信息,例如其配置和发布日期。 |
| ollama run |
运行指定的模型,使其准备好进行交互。 |
| ollama pull |
将指定的模型下载到您的系统。 |
| ollama list | 列出所有已下载的模型。 |
| ollama ps | 显示当前正在运行的模型。 |
| ollama stop |
停止指定的正在运行的模型。 |
| ollama rm |
从您的系统中移除指定的模型。 |
在终端,输入上面的命令 + ‘-h’,可查看具体命令的帮助文档(如,ollama show -h, 可查看 show 命令的帮助文档)。下面列出每个命令的具体用法和示例。
启动 Ollama
在本地系统上启动 Ollama:ollama server
1 | ollama serve -h |
模型管理
1. 列出所有已下载的模型。
1 | ollama list -h |
2. 查看某个模型的详细信息
1 | ollama show -h |
3. 显示正在运行的大模型
1 | ollama ps -h |
4. 停止指定的正在运行的模型
1 | ollama stop -h |
5. 删除已下载的大模型
1 | ollama rm -h |
6. 下载大模型
1 | ollama pull -h |
运行大模型
尽管我们可以通过第三方的 Web UI 等方式与基于 Ollama 部署的本地大模型进行交互,但通过 run 命令的方式与大模型交互,具有以下的优点:
- 直接在终端运行 run 命令,可便捷高效地验证本地部署的大模型的响应效果
- 记录保存大模型的响应:可将大模型的响应记录到本地文件。
- 基于 run 命令开发自动化执行的脚本,定时调度执行,实现与大模型交互的自动化工作流程。
run 命令的帮助文档:
1 | ollama run -h |
K3s部署Longhorn
Longhorn 单机部署指南
Longhorn 支持单机部署,它是一款基于 Kubernetes 的分布式块存储系统,同时也可以在单节点 Kubernetes 集群中完成部署和使用,适合开发测试、边缘计算等轻量场景。
一、单机部署的核心前提
环境要求
单节点 Kubernetes 集群(如 Minikube、k3s、MicroK8s 或手动搭建的单节点集群)
节点满足 Longhorn 基础条件:
操作系统:Linux(内核 4.14+)
容器运行时:Docker、containerd 等
磁盘:至少 1 块空闲磁盘或目录(用于存储数据)
依赖工具:
open-iscsi(必须安装并启动)
网络要求
节点能访问互联网(用于拉取 Longhorn 镜像)
Kubernetes 集群网络插件正常运行(如 Calico、Flannel)
二、单机部署的具体步骤(以 k3s 为例)
1. 部署单节点 k3s 集群
1 | # 安装 k3s(禁用默认存储,避免冲突) |
2. 安装依赖组件 open-iscsi
1 | # Ubuntu/Debian |
3. 部署 Longhorn
推荐使用 Helm 部署(更易管理):
1 | # 安装 Helm 3 |
4. 验证部署状态
1 | # 检查 Pod 是否全部 Running |
三、单机部署的注意事项
高可用限制
单机部署下,Longhorn 无法提供数据冗余(默认副本数为 3,需手动调整为 1),节点故障会导致数据丢失,仅适合非生产环境。
修改副本数:在 Longhorn UI 中设置默认副本数为 1,或在 PVC 注解中指定
numberOfReplicas: 1。
存储路径配置
如果节点没有空闲磁盘,可以指定目录作为存储后端:
1
2
3
4
5
6# 创建本地目录
sudo mkdir -p /data/longhorn
sudo chmod 777 /data/longhorn
# 部署时通过 Helm 参数指定
helm install longhorn longhorn/longhorn --namespace longhorn-system --create-namespace \
--set defaultSettings.defaultDataPath=/data/longhorn
访问 Longhorn UI
单机环境下可通过 NodePort 访问 UI:
1
2kubectl -n longhorn-system get svc longhorn-frontend
# 访问 http://<节点IP>:<NodePort>
四、单机部署的适用场景
开发/测试环境:快速验证 Longhorn 功能、测试存储与应用的兼容性。
边缘节点:资源受限的边缘设备,仅需单节点提供块存储。
个人学习:熟悉 Kubernetes 存储编排和 Longhorn 运维操作。
是否需要我为你整理单机部署 Longhorn 后的测试用例,比如创建 PVC 并挂载到 Nginx 容器进行验证?
搭建Qt4.8.7-armv7交叉编译环境
在Windows 10中搭建Qt 4.8.7 ARM32交叉编译环境,核心是获取ARM32交叉编译工具链、编译Qt 4.8.7源码适配ARM架构、配置环境变量与编译规则,以下是分步实操指南(全程需管理员权限,建议关闭杀毒软件避免文件拦截)。
一、前置准备:确定核心依赖与下载清单
Qt 4.8.7本身不提供预编译的ARM32交叉编译包,需手动编译源码,需下载以下组件(版本需严格匹配,避免兼容性问题):
| 组件名称 | 用途 | 下载地址/获取方式 |
| MinGW-w64(8.1.0) | Windows下的GCC编译环境 | SourceForge(选x86_64-posix-seh) |
| ARM32交叉编译工具链 | 编译ARM32架构程序 | 推荐Linaro 7.5.0(arm-linux-gnueabihf):Linaro官网 |
| Qt 4.8.7源码 | Qt核心源码(需适配ARM) | Qt Archive |
| Python 2.7.x | Qt 4.8.7编译依赖(必须2.7) | Python官网(选Windows x86-64 MSI) |
| Perl 5.28+ | Qt编译脚本依赖 | Strawberry Perl(选64位版本) |
| CMake 3.10+ | 辅助编译(可选但建议) | CMake官网(选Windows x64 Installer) |
| 7-Zip | 解压tar.gz/压缩包 | 7-Zip官网 |
二、步骤1:安装基础编译环境(Windows侧)
1.1 安装MinGW-w64
下载MinGW-w64后解压到固定路径(如
D:\mingw64),将D:\mingw64\bin添加到系统环境变量Path(优先级高于系统自带MinGW)。验证:打开CMD,输入
gcc -v,输出MinGW-w64 8.1.0版本信息则成功。
1.2 安装Python 2.7 + Perl + CMake
Python 2.7:安装时勾选“Add Python to PATH”,验证
python --version输出2.7.x。Strawberry Perl:默认安装即可,验证
perl -v输出5.28+版本。CMake:安装时勾选“Add CMake to the system PATH for all users”,验证
cmake --version输出3.10+。
三、步骤2:配置ARM32交叉编译工具链
2.1 解压并配置Linaro工具链
下载Linaro工具链(如
gcc-linaro-7.5.0-2019.12-i686-mingw32_arm-linux-gnueabihf.tar.xz),解压到固定路径(如D:\arm-linux-gnueabihf-7.5.0)。将工具链
bin目录(D:\arm-linux-gnueabihf-7.5.0\bin)添加到系统环境变量Path。验证:CMD输入
arm-linux-gnueabihf-gcc -v,输出Linaro 7.5.0版本信息则成功。
四、步骤3:修改Qt 4.8.7源码适配ARM交叉编译
Qt 4.8.7默认不支持Windows下ARM交叉编译,需手动修改配置文件:
4.1 解压Qt源码
将qt-everywhere-opensource-src-4.8.7.tar.gz用7-Zip解压到固定路径(如D:\qt-4.8.7-arm),避免路径含中文/空格。
4.2 修改交叉编译配置文件
Qt 4.8.7的交叉编译需通过mkspecs目录下的配置文件定义,步骤:
复制
D:\qt-4.8.7-arm\mkspecs\qws\linux-arm-gnueabi-g++目录,重命名为linux-arm-gnueabihf-g++(匹配Linaro工具链的hf(硬件浮点))。编辑新目录下的
qmake.conf,替换内容为:
1 | # 基础配置 |
注:
-march=armv7-a/-mtune=cortex-a9需根据目标ARM芯片调整(如ARMv6则改-march=armv6)。
五、步骤4:配置并编译Qt 4.8.7 ARM版本
5.1 生成编译配置(关键:避免Qt默认编译Windows版本)
打开MinGW-w64的CMD窗口(必须用MinGW的终端,而非系统CMD),执行以下命令:
1 | # 进入Qt源码根目录 |
参数说明:
-prefix:指定Qt ARM版本安装路径;-embedded arm:启用嵌入式ARM支持(Qt 4的QWS);-xplatform:指定步骤4.2中修改的交叉编译配置;禁用
webkit/phonon等非必需模块,减少编译时间和报错。
5.2 编译Qt源码
配置成功后(无error),执行编译命令:
1 | # 多核编译(-j后接CPU核心数,如8核则-j8) |
⚠️ 编译耗时(1-2小时),若报错:
检查工具链路径是否正确;
检查
qmake.conf中工具链前缀是否匹配;若提示“python找不到”,确保Python 2.7在PATH最前(Qt 4不兼容Python 3)。
5.3 安装编译后的Qt ARM版本
编译完成后执行:
1 | mingw32-make install |
安装完成后,D:\qt-4.8.7-arm-build即为可用于ARM32交叉编译的Qt环境。
六、步骤5:验证交叉编译环境
编写简单Qt测试程序,验证能否编译出ARM32可执行文件:
6.1 新建测试工程
在任意目录新建test.pro:
1 | QT += core gui |
新建main.cpp:
1 | #include <QApplication> |
6.2 用Qt ARM版本的qmake生成Makefile
打开MinGW终端,执行:
1 | # 指定ARM版本的qmake路径 |
6.3 编译生成ARM32程序
执行:
1 | mingw32-make |
编译完成后生成test可执行文件,用file命令(需安装Git for Windows,或复制到Linux)验证:
1 | # Git Bash中执行 |
输出类似test: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked,说明成功生成ARM32程序。
七、常见问题与解决
configure阶段提示“无法找到arm-linux-gnueabihf-gcc”:
检查工具链
bin目录是否在PATH中,重启终端生效;确认工具链解压完整,无文件缺失。
编译阶段提示“undefined reference to xxx”:
禁用非必需模块(如webkit),Qt 4.8.7部分模块对ARM交叉编译支持差;
检查
qmake.conf中链接库参数(QMAKE_LIBS)是否完整。
Python版本错误:
- 卸载Python 3,仅保留Python 2.7,或在PATH中优先放置Python 2.7路径。
总结
Win10下Qt 4.8.7 ARM32交叉编译的核心是:
搭建MinGW+ARM交叉工具链环境;
修改Qt源码的交叉编译配置文件;
通过configure指定ARM编译参数,编译源码;
验证生成的程序为ARM32架构。
若追求效率,也可在Linux虚拟机中完成Qt 4.8.7 ARM交叉编译(Linux下交叉编译兼容性更好),再将编译结果复制到Windows使用。