原创

(全网最细)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/

                    2.找到对应版本docker安装包进行下载,如下

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/

        4.安装docker环境

接收到以上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即为安装成功!!

      5.配置docker镜像

(1). 使用docker镜像私服(推荐且为最佳实践)

配置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

(2).使用压缩包

有网环境通过拉取nexus3 镜像docker pull sonatype/nexus3:latest

将镜像通过save命令打成压缩包

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的情况():

                                直接按顺序执行下方命令即可(这都没啥可看的,你都搭建rpm私服了你不会这个你看个屁!)

                               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环境搭建和镜像拉取的各种方式!=============================================================================================================================================================================================================================


    6.运行nexus3容器

(1).创建数据挂在目录

mkdir -p /data/nexus/data

chmod -R 777 /data/nexus/data

      (2).运行容器

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可查看容器运行状态。

7. 访问nexus3管理界面

http://192.168.1.147:8081/(你的你的!)

超管用户名为admin

超管初始密码在宿主机挂在目录/data/nexus/data/admin.password文件中

8. 创建rpm私服

                (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!


正文到此结束