1. 为什么选择在Linux上部署Ollama?

如果你对AI大模型感兴趣,想在自己的电脑上免费、私密地玩转像Llama、Mistral这样的明星模型,那么Ollama绝对是你的首选工具。它就像一个“模型管理器”,让你用几条简单的命令就能下载、运行和管理各种开源大语言模型。而Linux系统,无论是Ubuntu、CentOS还是Debian,往往是运行这类服务的“黄金搭档”。为什么这么说呢?首先,Linux系统稳定,资源占用相对可控,特别适合需要长时间运行AI服务的场景。其次,在服务器环境下,Linux几乎是标准配置,学会在Linux上部署,就等于掌握了在生产环境里应用AI模型的基础技能。我自己在本地开发和测试模型时,也习惯用Linux虚拟机或者云服务器,环境干净,依赖问题少,折腾起来心里有底。

很多人可能觉得在Linux上安装软件是件麻烦事,尤其是面对一个“新潮”的AI工具。但说实话,Ollama的安装过程比想象中简单太多了,官方也提供了非常清晰的指引。这篇文章,我就把自己在Ubuntu 22.04 LTS上反复安装、配置Ollama的经验,用最直白的话分享给你。我会涵盖两种最常用的安装方法,并详细解释每一步背后的“为什么”,而不仅仅是“怎么做”。确保你跟着走一遍,就能拥有一个稳定运行的Ollama服务,为后续连接WebUI界面、部署自己的AI应用打好坚实的基础。

2. 安装前的准备工作:打好地基

在开始安装Ollama之前,花几分钟时间做好准备工作,能避免后面遇到各种奇怪的错误。这就像盖房子前要先平整土地、准备好建材一样。

2.1 检查你的Linux系统

首先,打开你的终端。我们需要确认两件事:系统架构和已安装的依赖。

1. 确认系统架构: Ollama主要支持x86_64(也就是常说的amd64)和ARM64架构。运行下面的命令看看你的机器是哪一种:

uname -m

如果输出是 x86_64,那么恭喜,这是最通用的架构。如果输出是 aarch64,那就是ARM架构(常见于树莓派、苹果M系列芯片或某些云服务器)。本文的演示将以 x86_64 为主,但ARM架构的安装步骤几乎完全一致。

2. 更新系统包管理器: 这是一个好习惯,能确保我们接下来安装的依赖都是最新版本。根据你的Linux发行版执行对应的命令:

  • 对于Ubuntu/Debian系:
sudo apt update && sudo apt upgrade -y
  • 对于CentOS/RHEL/Fedora系:
sudo yum update -y
# 或者使用dnf(新版本Fedora/CentOS)
sudo dnf update -y

2.2 安装必要的依赖

Ollama本身是一个打包好的二进制文件,但它运行时可能需要一些基础的库支持。为了万无一失,我们安装几个常见的工具。

对于Ubuntu/Debian系统,建议安装:

sudo apt install -y curl wget tar
  • curlwget:用来从网络下载安装脚本或文件。
  • tar:用来解压下载的压缩包。

对于CentOS/RHEL系统,通常需要:

sudo yum install -y curl wget tar
# 或
sudo dnf install -y curl wget tar

这些工具大概率你的系统已经自带了,但执行一下安装命令确认一遍总没坏处。完成以上两步,我们的“地基”就算打好了,可以开始正式安装Ollama了。

3. 两种安装方法:总有一款适合你

Ollama官方提供了两种主要的安装方式,我把它们分别叫做“一键脚本安装法”和“手动下载安装法”。第一种最省心,第二种更灵活、可控。我会详细讲解这两种方法,你可以根据你的网络环境和偏好来选择。

3.1 方法一:一键脚本安装(最推荐新手)

这是官方主推的方式,只需要一行命令。它的原理是,通过curl命令从Ollama官网下载一个安装脚本,然后自动执行这个脚本来完成所有安装步骤。

打开终端,输入以下命令:

curl -fsSL https://ollama.com/install.sh | sh

让我拆解一下这行命令:

  • curl:一个命令行工具,用于传输数据。
  • -fsSL:这是几个选项的组合。
    • -f:静默失败,如果服务器返回错误,curl会安静地退出,而不是输出一堆HTML错误页面。
    • -s:静默模式,不显示进度条或错误信息。
    • -S:当与-s一起使用时,如果失败,会显示错误信息。
    • -L:如果服务器报告请求的页面已移动到其他位置,此选项会让curl自动重新请求新位置。这对于安装脚本很重要,因为网址可能会重定向。
  • https://ollama.com/install.sh:这是官方安装脚本的地址。
  • | sh:管道符|curl下载的脚本内容,直接传递给sh(Shell命令解释器)来执行。

执行过程与可能的问题: 当你敲下回车后,脚本会开始运行。它会自动检测你的系统架构,下载对应版本的Ollama二进制文件,将其安装到 /usr/bin/ 目录下,并尝试创建一个系统服务。整个过程都是自动的。

但是,这里有一个非常重要的“坑”需要提醒你: 这个安装脚本在运行时,会从GitHub等国外站点下载资源。如果你的网络环境访问这些地址比较慢,或者不稳定,那么整个安装过程可能会卡住,或者下载失败,这就是为什么有些人会觉得“这种方式比较慢”。如果你遇到了长时间没有响应,或者看到连接超时的错误,那么可以果断考虑第二种方法。

3.2 方法二:先下载后安装(网络不佳时的首选)

这种方法适合网络连接不顺畅的环境,或者你想更清晰地掌控安装的每一步。它的思路很简单:我们手动把安装包下载到本地,然后手动解压和放置文件。

步骤1:手动下载安装包 我们需要根据系统架构,选择正确的安装包下载链接。对于大多数电脑,是x86_64架构。

# 对于 x86_64 (amd64) 架构
curl -L https://ollama.com/download/ollama-linux-amd64.tgz -o ollama-linux-amd64.tgz

# 对于 ARM64 架构
curl -L https://ollama.com/download/ollama-linux-arm64.tgz -o ollama-linux-arm64.tgz

这里我用了 -o 参数来指定下载的文件名。如果下载速度慢,你甚至可以用浏览器或其他下载工具先把这个 .tgz 压缩包下载下来,再上传到你的Linux服务器上。

步骤2:解压安装包到系统目录 下载完成后,我们将其解压到 /usr 目录下。/usr/bin 是系统存放可执行文件的常用位置。

sudo tar -C /usr -xzf ollama-linux-amd64.tgz
  • sudo:因为要向系统目录 /usr 写入文件,所以需要管理员权限。
  • tar:解压命令。
  • -C /usr:指定解压的目标目录为 /usrtar 命令会保持压缩包内的目录结构,通常会把 ollama 可执行文件解压到 /usr/bin 下。
  • -xzfx表示解压,z表示处理gzip压缩(.tgz或.gz),f表示后面跟着文件名。

执行完这一步,Ollama的主程序就已经安装好了。你可以通过一个简单的命令来验证:

ollama -v

如果安装成功,它会输出当前Ollama的版本号,比如 ollama version is 0.1.xx

4. 运行与验证:让Ollama动起来

安装完成,我们当然要马上试试它能不能工作。Ollama有两种运行模式:前台直接运行配置为系统服务后台运行。我们先从最简单的开始。

4.1 前台直接运行(快速测试)

在终端里直接输入:

ollama serve

这个命令会启动Ollama的服务端。你会看到它输出一些日志信息,比如“Listening on 127.0.0.1:11434”。这表明Ollama服务已经成功启动,并在本地的11434端口上监听请求。重要提示: 以这种方式运行时,这个终端窗口必须一直保持打开,一旦你关闭终端或按了Ctrl+C,服务就停止了。所以这只适合临时测试。

打开另一个新的终端窗口,我们可以测试一下服务是否正常。除了刚才的 ollama -v,还可以尝试列出可用的模型(虽然现在还没下载任何模型):

ollama list

或者,尝试拉取一个小的模型来测试(这会开始下载模型文件):

ollama pull llama2:7b

如果网络通畅,你会看到下载进度。这是验证安装是否成功最直接的方式。测试完毕后,回到运行 ollama serve 的终端,按 Ctrl+C 停止服务。

4.2 配置为系统服务(长期运行必备)

对于长期使用,我们肯定希望Ollama能像MySQL、Nginx这些服务一样,在后台静默运行,开机自启。这就需要用到Linux的 systemd 服务管理器。下面我来一步步教你配置。

步骤1:创建专用的系统用户和用户组 为了安全起见,我们不建议让Ollama以root用户身份运行。创建一个专用的、没有登录权限的用户是很好的实践。

sudo useradd -r -s /bin/false -U -m -d /usr/share/ollama ollama
  • useradd:创建用户。
  • -r:创建一个系统用户。
  • -s /bin/false:指定该用户的登录Shell为 /bin/false,这意味着这个用户不能用来登录系统,更安全。
  • -U:同时创建一个与用户名同名的用户组。
  • -m:创建用户的家目录。
  • -d /usr/share/ollama:指定家目录为 /usr/share/ollama,Ollama后续下载的模型默认会存放在这个目录下。
  • ollama:用户名。

步骤2:创建systemd服务配置文件 我们需要创建一个服务单元文件来告诉systemd如何管理Ollama。

sudo vi /etc/systemd/system/ollama.service

如果你不熟悉vi,也可以用nano编辑器:sudo nano /etc/systemd/system/ollama.service。 然后将以下配置内容粘贴进去:

[Unit]
Description=Ollama Service
After=network-online.target
Wants=network-online.target

[Service]
Type=exec
ExecStart=/usr/bin/ollama serve
User=ollama
Group=ollama
Restart=always
RestartSec=3
Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
# 可选:如果你需要配置HTTP代理来下载模型,可以在这里设置
# Environment="http_proxy=http://your-proxy:port"
# Environment="https_proxy=http://your-proxy:port"

[Install]
WantedBy=default.target

让我解释几个关键点:

  • After=network-online.target:确保在网络就绪后才启动服务,因为Ollama可能需要联网下载模型。
  • Type=exec:告诉systemd,我们启动的是一个一次性命令(ollama serve),它会自己作为守护进程运行。
  • UserGroup:指定服务以我们刚才创建的 ollama 用户和组身份运行。
  • Restart=alwaysRestartSec=3:这是非常实用的配置。它意味着如果Ollama进程意外退出,systemd会在3秒后自动重启它。这大大增强了服务的健壮性。
  • Environment:这里显式设置了环境变量PATH,并注释了代理设置的例子。如果你的服务器需要通过代理访问外网,取消注释并填上你的代理地址,这样Ollama下载模型时就能走代理了。

编辑完成后,保存并退出。

步骤3:启动并启用服务 首先,重新加载systemd配置,让它识别我们新建的服务文件:

sudo systemctl daemon-reload

然后,设置Ollama服务开机自动启动:

sudo systemctl enable ollama

现在,启动Ollama服务:

sudo systemctl start ollama

最后,检查一下服务的运行状态:

sudo systemctl status ollama

如果一切顺利,你会看到绿色的“active (running)”字样,以及一些服务启动的日志。这意味着Ollama已经在后台稳定运行了!以后你就可以用 sudo systemctl stop/start/restart ollama 来管理它,用 sudo systemctl status ollama 来查看状态。

5. 基础使用与模型管理

服务跑起来了,现在我们来看看怎么玩转它。Ollama的核心功能就是管理模型。所有操作都通过 ollama 这个命令行工具来完成。

5.1 拉取你的第一个模型

Ollama支持很多模型,比如Meta的Llama 2、Llama 3,Mistral AI的Mistral、Codestral,Google的Gemma等等。你可以去 Ollama官方模型库 查看所有可用模型。每个模型可能有不同参数规模的版本(如7B、13B、70B,B代表十亿参数),用冒号分隔。

让我们拉取一个经典的、对硬件要求相对友好的模型——Llama 2的7B参数版:

ollama pull llama2:7b

这个命令会从Ollama的模型仓库下载模型文件。下载速度取决于你的网络和模型大小(7B模型大约4GB)。你可以看到实时的下载进度条。小技巧: 如果你在服务器上安装,网络很慢,可以考虑先在网络好的机器上下载好模型文件,然后通过scp命令传到服务器的 /usr/share/ollama/.ollama/models 目录下(需要ollama用户权限),这样可以节省大量时间。

5.2 与模型对话

模型下载好后,最简单直接的交互方式就是在命令行里聊天:

ollama run llama2:7b

运行这个命令,你会进入一个交互式会话。输入你的问题,比如“用Python写一个快速排序函数”,模型就会开始生成回答。按 Ctrl+D 可以退出对话。

如果你只是想快速问一个问题,也可以直接用:

ollama run llama2:7b "请用一句话解释什么是人工智能"

5.3 常用的模型管理命令

掌握下面几个命令,你就能轻松管理模型了:

  • ollama list:列出本地已经下载的所有模型及其版本。
  • ollama ps:显示当前正在运行的模型实例。
  • ollama stop <model_name>:停止某个正在运行的模型。
  • ollama rm <model_name>:从本地删除一个模型。例如 ollama rm llama2:7b
  • ollama cp <source_model> <new_model_name>:复制一个模型并创建新名称的副本,常用于基于已有模型创建自定义模型(Modelfile)的起点。

6. 进阶配置与优化

基本的安装和运行搞定后,我们可以根据实际需求进行一些优化,让Ollama用起来更顺手、更高效。

6.1 修改模型存储路径

默认情况下,Ollama会把模型下载到 ~/.ollama(即当前用户的家目录下)或者我们之前为ollama用户指定的 /usr/share/ollama/.ollama。如果你的系统盘空间紧张,或者想统一管理数据,可以修改这个路径。

方法是通过环境变量 OLLAMA_MODELS 来指定。 对于通过systemd服务运行的情况,我们需要修改之前创建的服务文件:

sudo vi /etc/systemd/system/ollama.service

[Service] 部分,添加一行:

Environment="OLLAMA_MODELS=/path/to/your/large/disk/models"

比如改成 Environment="OLLAMA_MODELS=/data/ollama-models"。记得确保 /data/ollama-models 这个目录存在,并且 ollama 用户有读写权限:

sudo mkdir -p /data/ollama-models
sudo chown -R ollama:ollama /data/ollama-models

修改服务文件后,需要重新加载配置并重启服务:

sudo systemctl daemon-reload
sudo systemctl restart ollama

之后新下载的模型就会存储在新的路径下了。

6.2 配置API访问与安全

Ollama默认监听 127.0.0.1:11434,这意味着它只接受来自本机的请求。如果你想从同一网络内的其他机器(比如你的Windows/Mac电脑)访问这台Linux服务器上的Ollama,就需要修改监听地址。

同样是通过环境变量 OLLAMA_HOST 来配置。修改服务文件:

Environment="OLLAMA_HOST=0.0.0.0:11434"

将监听地址改为 0.0.0.0,表示监听所有网络接口。请注意: 这样做会使得Ollama API暴露在网络上,可能存在安全风险。请确保你的服务器防火墙(如ufwfirewalld)只允许受信任的IP地址访问11434端口。

例如,使用ufw防火墙:

# 假设你只想允许IP为192.168.1.100的机器访问
sudo ufw allow from 192.168.1.100 to any port 11434

6.3 性能调优小贴士

运行大模型很吃资源,这里有几个小建议可以提升体验:

  1. 使用量化模型: 在模型库中,你会看到类似 llama2:7bllama2:7b-text-q4_K_M 这样的标签。带 q4q8 的是量化模型,它们通过降低模型权重的精度来大幅减少内存占用和提升推理速度,而性能损失通常很小。对于资源有限的机器,优先选择这些量化版本(如 q4_K_M)。
  2. 利用GPU加速: 如果你的Linux服务器配有NVIDIA GPU,Ollama可以自动利用CUDA进行加速。你需要确保系统已安装正确版本的NVIDIA驱动和CUDA Toolkit。Ollama在启动时会自动检测CUDA环境,如果存在,就会优先使用GPU进行计算,速度会有质的飞跃。你可以通过运行 ollama run llama2:7b 时的输出日志,查看是否出现了“Using GPU”之类的字样来确认。
  3. 控制并发: 如果你通过WebUI(如Open WebUI)同时发起多个请求,可能会把服务器内存撑爆。可以在启动Ollama时,通过环境变量 OLLAMA_NUM_PARALLEL 来限制并行处理的请求数,例如 Environment="OLLAMA_NUM_PARALLEL=2"

7. 故障排除与常见问题

即使按照步骤来,也可能会遇到一些问题。这里我总结几个我踩过的“坑”和解决办法。

问题1:执行 ollama serve 或启动服务失败,提示“Permission denied”或“端口被占用”。

  • 权限问题: 确保二进制文件 /usr/bin/ollama 有可执行权限 (sudo chmod +x /usr/bin/ollama),并且我们创建的 ollama 用户有权访问它和它的存储目录。
  • 端口占用: 11434端口可能被其他程序占用。可以用 sudo netstat -tlnp | grep 11434 查看。如果被占用,可以修改Ollama的监听端口,通过设置环境变量 OLLAMA_HOST=0.0.0.0:11435(换一个端口)来实现。

问题2:下载模型速度极慢,或者一直失败。

  • 网络问题: 这是最常见的问题。首先,可以尝试用 curl -v https://ollama.com 测试一下对Ollama官网的连接性。如果不行,考虑使用HTTP/HTTPS代理。就像前面在service文件里注释掉的那样,设置 http_proxyhttps_proxy 环境变量是最有效的方法。
  • 手动下载: 如果代理也不行,终极方法就是“手动下载”。在能访问的机器上,用ollama pull拉取模型,然后找到模型文件(位于 ~/.ollama/models 下),将其整个目录打包,上传到服务器的对应目录下。

问题3:运行模型时内存不足(OOM)。

  • 选择更小的模型: 7B模型通常需要8GB以上内存才能流畅运行。如果你的内存只有4GB或更少,可以尝试更小的模型,比如 tinyllamaphi,或者选择量化程度更高的版本(如 q4_0)。
  • 增加交换空间(Swap): 如果物理内存不足,可以临时增加交换分区的大小,但这会显著降低运行速度,只能作为应急手段。

问题4:systemd服务状态为 active (exited) 而不是 active (running)

  • 这可能是因为服务文件中的 Type 设置不正确。确保 Type=exec。如果Ollama进程自己退出了,systemd就会报告exited。检查日志 sudo journalctl -u ollama -f 来查看具体的错误信息。

安装和配置Ollama的过程,其实就是熟悉一个现代AI工具在Linux环境下部署的标准流程。从准备环境、选择安装方式、配置后台服务,到管理模型和优化性能,每一步都挺有代表性。我自己的几台测试服务器都是这么搭起来的,跑起来一直很稳定。遇到问题别慌,多看看日志,大部分都能找到线索。希望这份详细的指南能帮你省下一些摸索的时间,顺利开启你的本地AI之旅。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐