1、Ollama简介
Ollama是一个开源的框架,专为在本地机器上便捷部署和运行大型语言模型(LLM)而设计。它提供了一个简洁且用户友好的命令行界面,使得用户可以轻松地部署和管理各类开源的LLM。
官方网站:
https://ollama.com/download
https://github.com/ollama/ollama
2、Open WebUI简介
Open WebUI是一个开源的用户界面工具,专为运行和管理大型语言模型(LLM)及其他人工智能功能设计。其主要目的是简化人工智能模型的本地部署和操作,使用户能够通过浏览器界面与各种AI模型进行交互。
官方网站:
https://github.com/open-webui/open-webui
一、准备篇
操作系统:CentOS-7.x
1、修改默认yum源,截止目前CentOS-7.x官方已经停止维护,yum命令默认已经无法使用。
#配置中科大yum源
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo-backup
vi /etc/yum.repos.d/CentOS-Base.repo #编辑源文件
[base]
name=CentOS- - Base
baseurl=https://mirrors.ustc.edu.cn/centos-vault/centos/7.9.2009/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
[updates]
name=CentOS- - Updates
baseurl=https://mirrors.ustc.edu.cn/centos-vault/centos/7.9.2009/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
[extras]
name=CentOS- - Extras
baseurl=https://mirrors.ustc.edu.cn/centos-vault/centos/7.9.2009/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
[centosplus]
name=CentOS- - Plus
baseurl=https://mirrors.ustc.edu.cn/centos-vault/centos/7.9.2009/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
:wq! #保存退出
yum clean all
yum makecache #生成缓存
yum install ntp wget #安装软件
2、关闭selinux
#执行以下命令
setenforce 0 #临时禁用
sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
3、防火墙设置
Ollama的默认端口配置是TCP:11434
Open WebUI的默认端口配置是TCP:3000
我们这里使用iptables作为防火墙
3.1关闭firewall
systemctl stop firewalld.service
systemctl disable firewalld.service
systemctl mask firewalld
systemctl stop firewalld
yum -y remove firewalld
3.2安装iptables防火墙,开启相应的端口
yum -y install iptables-services #安装
iptables -F #清空规则
service iptables save #保存配置规则
systemctl enable iptables.service #设置防火墙开机启动
systemctl restart iptables.service #启动防火墙使配置生效
4、设置系统时间
rm -rf /etc/localtime #先删除默认的时区设置
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime #替换亚洲/上海作为默认时区
vi /etc/sysconfig/clock #添加时区
Zone=Asia/Shanghai
:wq! #保存退出
timedatectl set-local-rtc 0
hwclock --systohc -u #系统时钟和硬件时钟同步,当前系统时区不为 UTC,是CST时间,所有要加-u参数
date #显示系统时间
date -s "2024-12-24 15:24:00" #修改时间
watch -n 1 date #显示实时时间
ntpdate ntp.aliyun.com #同步时间服务器
echo -e "0 0 * * * /usr/sbin/ntpdate ntp.aliyun.com &>/dev/null" >> /var/spool/cron/root #添加计划任务
systemctl restart crond.service #重启服务
5、系统参数优化
vi /etc/security/limits.conf #在最后一行添加以下代码
* soft nproc unlimited
* hard nproc unlimited
* soft nofile 1000000
* hard nofile 1000000
:wq! #保存退出
vi /etc/sysctl.conf #在最后一行添加以下代码
fs.file-max = 65535000
fs.nr_open = 65535000
kernel.pid_max=655350
vm.swappiness = 0
net.ipv4.ip_forward = 1
:wq! #保存退出
/sbin/sysctl -p
ulimit -a #查看
ulimit -n 1000000 #设置
6、安装Docker
#Open WebUI我们使用docker镜像的方式来部署
#卸载旧版本,如果没有安装就不需要执行
yum remove docker docker-client docker-client-latest docker-latest docker-latest-logrotate docker-logrotate docker-common docker-selinux docker-engine-selinux docker-engine docker-ce-cli
rpm -qa|grep docker
#添加docker仓库
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
或者
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#安装docker
yum list docker-ce docker-ce-cli containerd.io --showduplicates #列出可用的docker版本
yum install -y docker-ce-26.1.4-1.el7 docker-ce-cli-26.1.4-1.el7 containerd.io #安装指定版本
docker --version #查看版本
#启动dokcer并开机自启
systemctl daemon-reload
systemctl start docker
systemctl enable docker
docker info |grep "Docker Root Dir"
#设置daemon.json配置文件,修改默认存储目录和运行模式
#Docker默认使用/var/lib/docker作为存储目录,用来存放拉取的镜像和创建的容器
#/var目录一般都位于系统盘,我们修改Docker的默认存储目录到数据盘/data/server/docker
mkdir -p /etc/docker
mkdir -p /data/server/docker #创建docker数据存储目录
vi /etc/docker/daemon.json
{
"data-root": "/data/server/docker",
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2"
}
:wq! #保存退出
vi /lib/systemd/system/docker.service #修改Docker的配置文件以启用Docker API
#找到ExecStart这一行,将其修改为
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
:wq! #保存退出
systemctl daemon-reload
systemctl restart docker
#检查Docker API的状态,如果返回的结果为OK,则表示Docker API已经成功启用
curl http://localhost:2375/_ping
#查看docker数据存储目录
docker info |grep "Docker Root Dir"
#检查 JSON 格式,确保没有多余的逗号或错误的括号
#修改Docker的Cgroup Driver配置,使其与kubelet的Cgroup Driver保持一致"exec-opts": ["native.cgroupdriver=systemd"]
#Docker 17.05 及以后的版本使用 "data-root"设置目录,旧版本使用"graph": "/data/server/docker"
cat /etc/docker/daemon.json | jq .
sudo systemctl daemon-reload
sudo systemctl restart docker
docker info
docker info | grep Cgroup
#安装Docker-Compose
Docker-Compose是docker提供的一个命令行工具,用来定义和运行由多个容器组成的应用。
使用Docker-Compose,我们可以通过yaml文件定义应用程序的各个服务,并由单个命令完成应用的创建和启动。
Docker-Compose依靠Docker进行工作,必须确保已经安装了docker才能安装Docker-Compose
Docker-Compose下载地址(需要科学上网):https://github.com/docker/compose/releases/download/v2.27.3/docker-compose-linux-x86_64
#拷贝Docker-Compose到/usr/bin目录
cp docker-compose-linux-x86_64 /usr/bin/docker-compose
#添加执行权限
chmod +x /usr/bin/docker-compose
#查看版本,Docker-Compose要和Docker的版本匹配,Docker-Compose:v2.27.3可以适用于Docker version 26.1.4
docker-compose --version
二、安装篇
1、安装ollama
1.1下载ollama
我们使用Linux系统来部署ollama
#查看Linux版本号
cat /proc/version
#查看cpu架构
lscpu
x86_64 CPU选择下载ollama-linux-amd64
aarch64|arm64 CPU选择下载ollama-linux-arm64
下载地址:https://github.com/ollama/ollama/releases/download/v0.5.4/ollama-linux-amd64.tgz
#上传安装文件到服务器并解压到/usr目录
tar -C /usr -xzf ollama-linux-amd64.tgz
#设置Ollama为开机自启动,并设置运行账号为ollama
#创建用户ollama
useradd -r -s /bin/false -U -m -d /usr/share/ollama ollama
usermod -a -G ollama $(whoami)
#添加自启动服务
vi /etc/systemd/system/ollama.service
[Unit]
Description=Ollama Service
After=network-online.target
[Service]
ExecStart=/usr/bin/ollama serve
User=ollama
Group=ollama
Restart=always
RestartSec=3
Environment="PATH=$PATH"
Environment="OLLAMA_HOST=0.0.0.0" #服务将绑定到主机的所有网络接口
Environment="OLLAMA_ORIGINS=*" #允许来自所有来源的请求(用于跨域资源共享,CORS 设置)
[Install]
WantedBy=default.target
:wq! #保存退出
参数说明:
OLLAMA_HOST=0.0.0.0: 服务需要支持外部访问时使用;如果只需要本地调用,可以改为 127.0.0.1。
OLLAMA_ORIGINS=*: 在开发环境中方便调试;生产环境建议配置为指定域名以限制访问来源,Environment="OLLAMA_ORIGINS=https://trusted-domain.com"
如需进一步增强安全性,可以结合防火墙、身份验证等措施来保护服务。
systemctl daemon-reload
systemctl enable ollama
systemctl start ollama 启动
systemctl stop ollama 关闭
systemctl restart ollama 重启
systemctl status ollama 查看状态
#验证安装
ollama -h
查看日志
journalctl -e -u ollama
ollama -v
#浏览器打开服务器本地ip地址
http://10.189.189.246:11434/
Ollama is running
说明安装成功
#ollama 使用常见的指令
ollama serve #启动ollama
ollama create #从模型文件创建模型
ollama show #显示模型信息
ollama run #运行模型
ollama pull #从注册表中拉取模型
ollama push #将模型推送到注册表
ollama list #列出模型
ollama cp #复制模型
ollama rm #删除模型
ollama help #获取有关任何命令的帮助信息
ollama -v #查看版本
1.2在ollama中部署模型
#模型库:https://ollama.com/library
#我们使用这个模型https://ollama.com/library/llama3.1:8b
#拉取模型,需要一些时间
ollama run llama3.1:8b
#等待模型拉取完成之后出现下面的提示
success
>>> Send a message (/? for help)
#现在已经可以在命令行下面使用这个模型了
Ctrl + Z #挂载任务
fg #恢复
jobs #查看任务,
fg %1 #恢复到前台
bg %1 #恢复到后台
2、部署open-webui
2.1下载open-webui
open-webui项目地址:https://github.com/open-webui/open-webui/tree/main
我们使用docker部署
https://docs.openwebui.com/
#下载镜像(直接可能无法下载)
docker pull ghcr.io/open-webui/open-webui:main
#使用代理站点来下载
https://docker.aityp.com/i/search?search=open-webui
#拉取镜像
docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/open-webui/open-webui:v0.3.30
#修改镜像标签
docker tag swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/open-webui/open-webui:v0.3.30 ghcr.io/open-webui/open-webui:v0.3.30
#运行镜像
#Ollama和open-webui在同一台服务器上
docker volume create open-webui #创建卷
docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:v0.3.30
#Ollama和open-webui不在同一台服务器上,需要指定url路径
#docker run -d -p 3000:8080 -e OLLAMA_BASE_URL=http://10.189.189.246:11434/ -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:v0.3.30
docker ps # 查看容器
docker stop open-webui # 停止容器
docker rm open-webui # 删除容器
docker volume rm open-webui # 移除卷
docker volume ls # 查看卷
打开浏览器访问
http://10.189.189.246:3000/
注册的第一个用户默认为管理员账号
#相关操作
#导出镜像
docker save -o open-webui_v0.3.30.tar ghcr.io/open-webui/open-webui:v0.3.30
#检查镜像
ls -lh open-webui_v0.3.30.tar
#导入镜像
docker load -i open-webui_v0.3.30.tar
至此,Ollama+Open WebUI本地化大模型安装部署完成。