(全网最细)nexus搭建基于rocky9发行版本的rpm私服详细记录
硬件要求:
Nexus 官方推荐最低 2 GB 内存运行,但实际使用时推荐至少 4 GB,以保证流畅运行和一定量的并发请求处理。Nexus 本身约占用 10 GB,但实际需求取决于要存储的 RPM 包和索引数据。建议至少 50 GB 起步,随着需求增加,确保磁盘能动态扩展。
最低 2 核 CPU,但建议至少 4 核以支持更多并发任务,如同步、上传和索引。
软件要求:操作系统rocky9、docker版本27.4.1、neuxs镜像版本为 3.75.1-01
安装与配置:
一:不能科学上网的情况(能直接使用docker的可忽略!!!!往下翻):
1.安装docker环境:可访问外网终端通过浏览器访问下方docker官网https://download.docker.com/linux/centos/9/x86_64/stable/Packages/
docker-ce-cli-27.4.1-1.el9.x86_64.rpm
docker-ce-27.4.1-1.el9.x86_64.rpm
containerd.io-1.7.24-3.1.el9.x86_64.rpm
3.将这三个安装包通过u盘或局域网scp命令的方式传输到目标服务器的/root下
scp命令格式scp a.rpm b.rpm root@目标ip:/root/
也可以scp *.txt ub.rpm root@目标ip:/root/
接收到以上docker的安装包后
cd /root
dnf install ./containerd.io-1.7.24-3.1.el9.x86_64.rpm ./docker-ce-27.4.1-1.el9.x86_64.rpm ./docker-ce-cli-27.4.1-1.el9.x86_64.rpm -y
等待安装,安装完成后终端输出如下:
已安装: containerd.io-1.7.24-3.1.el9.x86_64 docker-ce-3:27.4.1-1.el9.x86_64 docker-ce-cli-1:27.4.1-1.el9.x86_64
完毕!
即为完成docker的无网安装,可执行docker -v验证,输出如下
Docker version 27.4.1, build b9d17ea即为安装成功!!
配置docker私服地址,私服地址为http://192.168.1.91:5000/(换成您自己的)
vim /etc/docker/daemon.json
加入如下配置保存,注:insecure-registries为允许使用http
{
"insecure-registries": ["192.168.1.91:5000"]
}
保存后执行systemctl restart docker重启docker服务使配置生效
执行 docker login http://192.168.1.91:5000
输入用户名 密码后登录成功会显示
私服中已存在项目wkx,所需nexus包已经推送至私服,只需拉取即可
docker pull 192.168.1.91:5000/wkx/sonatype/nexus3:latest (换特么成你自己的!!!)
拉取成功后执行 docker images查看镜像如下
192.168.1.91:5000/wkx/sonatype/nexus3 latest d3df1178e8d7 5 weeks ago 635MB
有网环境通过拉取nexus3 镜像docker pull sonatype/nexus3:latest
docker save -o /root/nexus.tar sonatype/nexus3:latest
ls /root可查看已经存在nexus.tar压缩包
通过u盘或scp命令将压缩包发送到目标机/root目录下
scp /root/nexus.tar root@目标ip:/root/
目标机终端ls /root可查看到nexus.tar压缩包
执行docker load -i /root/nexus.tar加载镜像
docker images可查看加载的镜像信息如下
sonatype/nexus3 latest d3df1178e8d7 5 weeks ago 635MB
二:国内科学上网或海外vps的情况():
dnf update -y
dnf install -y yum-utils device-mapper-persistent-data lvm2
dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
dnf install docker-ce-27.4.1 docker-ce-cli-27.4.1 containerd.io
docker pull sonatype/nexus3:latest
============================以上为docker环境搭建和镜像拉取的各种方式!=============================================================================================================================================================================================================================
mkdir -p /data/nexus/data
chmod -R 777 /data/nexus/data
docker run -d --name nexus3 -p 8081:8081 --restart always -v /data/nexus/data:/nexus-data 192.168.1.91:5000/wkx/sonatype/nexus3(镜像换成你自己的)
执行docker ps -a可查看容器运行状态。
http://192.168.1.147:8081/(你的你的!)
超管初始密码在宿主机挂在目录/data/nexus/data/admin.password文件中
(1).新建blob
在页面左侧点击Blob Stores ->Create Blob Stores
type选择file,name自定义,我们是用来存储rpm的,所以命名为rpm-blob,path使用默认path即可,保存,然后就会看到一个名称为rpm-blob的blob,blob的作用是存储我们私服的二进制文件,是nexus的核心数据。
(2) .新建Repository
有三种类型的yum仓库,hosted是私服,支持自己上传,proxy是代理仓库,比如通过阿里镜像或者163镜像等配置代理,group是多个代理仓库或私服仓库的集合,是私服用来对外暴露的外层集合,可以配置顺序,从最上层开始查找,如果本地有,即使用本地资源,如果没有,会从代理地址下载,下载后会存在本地。
a. 创建hosted类型仓库,如下图所示点击save保存
其中Repodata Depth(存储深度)要根据代理仓(每个代理结构不同)的深度来定义,我使用阿里镜像(https://mirrors.aliyun.com/rockylinux/)源,所以这里必须是4!这个地方实践起来非常容易踩坑,请务必按照文档配置(已实践!)。其他配置按照上图选择即可。
b.创建proxy类型仓库,如下图点save保存
其中remote地址使用阿里的镜像源,按照上图配置即可(已实践)。
c.创建group类型仓库,如下图
其中最下面的group配置时,将本地仓放在代理仓上面,这个的选择顺序是会影响rpm包查找顺序的,将本地仓指定即在使用时会首先从本地仓查找软件包,本地仓没有的话会向下查找代理仓!(私服的目的就是尽可能使用局域网和本地资源)。
9. 初始化rpm仓和客户端的使用(非常重要)
Nexus3的rpm仓库都是懒加载资源的,这意味着,只有在客户端请求一个资源时,Nexus 才会尝试从上游代理或存储库中拉取该资源。这种机制的优点是可以节省存储空间并减少不必要的下载,但在一些情况下可能会带来困扰,例如离线环境部署。而我们的目的就是要使用离线状态下的服务部署,所以初始化rpm仓库是一个重要的环节,这里很复杂,踩坑极多(包括阿里巴巴镜像源官方文档的bug!!!),我会详细列出最佳实践!!我们开始。
a. 登录目标机客户端(rocky9),定位到repo配置文件下cd /etc/yum.repos.d
参考阿里巴巴官方文档执行如下命令:
文档地址:https://developer.aliyun.com/mirror/rockylinux/?spm=a2c6h.25603864.0.0.1f73c3b3vw9z7O
脚本:
#!/bin/bash
# 提示用户输入仓库地址
echo "请输入新的仓库 URL (例如:http://192.168.1.147:8081/repository/yum-public):"
read repo_url
# 确保用户输入不为空
if [ -z "$repo_url" ]; then
echo "错误: 仓库 URL 不能为空!"
exit 1
fi
# 使用 sed 替换仓库配置
sed -e 's|^mirrorlist=|#mirrorlist=|g' \
-e "s|^#baseurl=http://dl.rockylinux.org/\$contentdir|baseurl=$repo_url|g" \
-e 's|^gpgcheck=1|gpgcheck=0|' \
-i.bak \
/etc/yum.repos.d/rocky*.repo
# 提示替换完成
echo "仓库配置已更新。"
其中输入仓库地址为http://192.168.1.147:8081/repository/yum-public(这里换成你自己的!!!!),是私服group仓库地址,gpgcheck=1改为gpgcheck=0是禁用 GPG 签名检查(私服),请务必按照文档操作,不然会有很多坑!!!
b.执行如下命令初始化私服
dnf clean all
dnf makecache
可以看到如下输出
Rocky Linux 9 - BaseOS 288 kB/s | 1.8 kB 00:00
Rocky Linux 9 - AppStream 516 kB/s | 1.8 kB 00:00
Rocky Linux 9 - Extras 342 kB/s | 1.4 kB 00:00
元数据缓存已建立。
此时私服已经初始化成功,登录http://192.168.1.147:8081/(你的)点击Browse->yum-public
如下图可见,rpm数据已经在私服了!!!
我们可以试着安装一个软件 dnf install libzip
可见已经从proxy仓库拉取了该rpm,安装后查看私服
可以看到该软件包已经在私服里了!
c. 本地上传rpm包
点击私服页面Upload->yum-releases,如下图
File选择通过有网环境下载的rpm文件,如docker-ce-cli-27.4.1-1.el9.x86_64.rpm
Directory 需要自己填写,根据我们的配置和使用的阿里镜像源,需要填写如下路径
9/BaseOS/x86_64/os/Packages/docker 其中标红部分为固定路径,后面docker可以自定义。此处必须按照文档操作,不然必踩坑!!!!
点击保存后,客户端执行dnf makecache后测试安装
dnf install docker-ce-cli 如下

可见docker安装包已经上传私服成功且建立了元数据供客户端下载使用!!!
至此,rpm私服的安装配置初始化和客户端使用已经全部完成!
注意:每次上传rpm后记得执行dnf makecache,不然不会立即建立元数据。元数据刷新频率配置在rocky*.repo文件中的metadata_expire=6h!
- 本文标签: Linux
- 本文链接: https://www.wangwenzhi.top/article/35
- 版权声明: 本文由王开心原创发布,转载请遵循《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权