Sonatype Nexus Repository搭建与使用(详细教程3.70.1)

目录

[一. 环境准备](#一. 环境准备)

[二. 安装jdk](#二. 安装jdk)

[三. 搭建Nexus存储库](#三. 搭建Nexus存储库)

[四. 使用介绍](#四. 使用介绍)


一. 环境准备

|-----------|--------------------|--------------------|----------------------------------------------------------|----------------|
| 主机名 | IP | 系统 | 软件版本 | 配置信息 |
| nexus | 192.168.226.26 | Rocky_linux9.4 | Nexus Repository 3.70.1 MySQL8.0 jdk-11.0.23 | 2核2G,磁盘20G |

进行时间同步,关闭防火墙和selinux

Java Archive Downloads - Java SE 11 | Oracle 台灣https://www.oracle.com/tw/java/technologies/javase/jdk11-archive-downloads.html

下载 (sonatype.com)https://help.sonatype.com/en/download.html

二. 安装jdk

上传至服务器

bash 复制代码
[root@nexus ~]# ll
total 164856
-rw-------. 1 root root       815 Jun  6 14:00 anaconda-ks.cfg
-rw-r--r--  1 root root 168807248 Jul 29 19:31 jdk-11.0.23_linux-x64_bin.rpm

安装jdk

bash 复制代码
[root@nexus ~]# yum install -y jdk-11.0.23_linux-x64_bin.rpm

验证安装

bash 复制代码
[root@nexus ~]# java -version
java version "11.0.23" 2024-04-16 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.23+7-LTS-222)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.23+7-LTS-222, mixed mode)

默认的安装目录在/usr/lib/jvm/

bash 复制代码
[root@nexus jdk-11-oracle-x64]# pwd
/usr/lib/jvm/jdk-11-oracle-x64
[root@nexus jdk-11-oracle-x64]# ll
total 24
-rw-r--r--  1 root root  160 Mar 12 05:22 README.html
drwxr-xr-x  2 root root 4096 Jul 29 19:33 bin
drwxr-xr-x  4 root root  112 Jul 29 19:33 conf
drwxr-xr-x  3 root root  132 Jul 29 19:33 include
drwxr-xr-x  2 root root 4096 Jul 29 19:33 jmods
drwxr-xr-x 72 root root 4096 Jul 29 19:33 legal
drwxr-xr-x  7 root root 4096 Jul 29 19:33 lib
drwxr-xr-x  3 root root   18 Jul 29 19:33 man
-rw-r--r--  1 root root 1314 Mar 12 05:22 release

三. 搭建Nexus存储库

bash 复制代码
[root@nexus ~]# ll
total 414896
-rw-------. 1 root root       815 Jun  6 14:00 anaconda-ks.cfg
-rw-r--r--  1 root root 168807248 Jul 29 19:31 jdk-11.0.23_linux-x64_bin.rpm
-rw-r--r--  1 root root 256037663 Jul 29 19:43 nexus-3.70.1-02-java11-unix.tar.gz

解压缩

bash 复制代码
[root@nexus ~]# tar -zxvf nexus-3.70.1-02-java11-unix.tar.gz -C /opt

[root@nexus ~]# ll /opt
total 0
drwxr-xr-x 10 root root 181 Jul 29 19:56 nexus-3.70.1-02
drwxr-xr-x  3 root root  20 Jul 29 19:56 sonatype-work

nexus-3.70.1-02 目录包含了运行 Nexus Repository 所需的所有程序文件和静态资源。

sonatype-work 目录包含了 Nexus Repository 在运行时生成的所有动态数据和用户自定义配置。

创建一个系统用户

bash 复制代码
[root@nexus ~]# useradd -r nexus

修改属主和属组

bash 复制代码
[root@nexus ~]# chown -R nexus:nexus /opt/nexus-3.70.1-02/
[root@nexus ~]# chown -R nexus:nexus /opt/sonatype-work

切换到nexus用户

bash 复制代码
[root@nexus ~]# su -l nexus

进入bin目录

bash 复制代码
[nexus@nexus root]$ cd /opt/nexus-3.70.1-02/bin/

前台启动,并查看日志,如果要后台启动可以将run替换成start

bash 复制代码
[nexus@nexus bin]$ ./nexus run

此时,浏览器访问IP+8081端口,例如我这里访问http://192.168.226.26:8081/

点击登录

初始用户名:admin 初始密码:在登录的提示路径文件里,查看后复制粘贴登录

bash 复制代码
[root@nexus ~]# cat /opt/sonatype-work/nexus3/admin.password
6ec6beee-8c9e-4d24-a0b1-3daf8da5d11c

四. 使用介绍

将其一个一个删除即可。

创建仓库类型为yum ,Nexus 仓库类型包括 Group、Hosted 和 Proxy。

Group(组仓库):用于组织其他仓库,它本身不存储任何软件包。Group 仓库可以包含其他类型的仓库,例如 Hosted 或 Proxy 仓库,以方便管理和访问。

Hosted(宿主仓库):用于存储自己构建或上传的软件包。Hosted 仓库通常用于内部开发团队共享软件包,或者用于存储私有软件包。

Proxy(代理仓库):用于代理其他公共仓库的软件包。Proxy 仓库可以缓存公共仓库中的软件包,以提高下载速度和节省带宽。Proxy 仓库还可以用于管理和控制对公共仓库的访问。

创建仓库

将复制的链接,替换到下述命令中去终端执行,替换的位置见图,可参考我替换好的代码分析

此原理就是将rocky系统原本的源的baseurl全部替换为我们的Nexus存储库的链接

bash 复制代码
sed -e 's|^mirrorlist=|#mirrorlist=|g' \
    -e 's|^#baseurl=http://dl.rockylinux.org/$contentdir|baseurl=http://192.168.226.26:8081/repository/rocky/|g' \
    -i.bak \
    /etc/yum.repos.d/rocky*.repo

dnf makecache

查看刚创建的库

查看刚配置好仓库中的一些包

下载一个软件包

bash 复制代码
[root@nexus ~]# yum install -y vsftpd

刷新网页再次打开查看

这时,通过对比下载命令执行前后,可以发现配置好后下载包会进行缓存数据

此时,我们回退历史命令,即撤销刚下载vsftpd

bash 复制代码
[root@nexus ~]# yum history
ID     | Command line                                                                                                | Date and time    | Action(s)      | Altered
------------------------------------------------------------------------------------------------------------------------------------------------------------------
     6 | install -y vsftpd                                                                                           | 2024-07-29 21:15 | Install        |    1   
     5 | install -y jdk-11.0.23_linux-x64_bin.rpm                                                                    | 2024-07-29 19:33 | Install        |    1   
     4 | install -y vim wget unzip tar lrzsz                                                                         | 2024-07-02 17:23 | Install        |    7   
     3 | -y install epel-release                                                                                     | 2024-07-02 17:21 | Install        |    1 EE
     2 | install -y lrzsz                                                                                            | 2024-07-02 17:20 | Install        |    1  <
     1 |                                                                                                             | 2024-06-06 13:57 | Install        |  336 >E

           
[root@nexus ~]# yum history undo 6

这时,在Nexus存储库中已经有了缓存,这时回退命令后,我们再次重新下载,可以发现下载时间是瞬间就好了

bash 复制代码
[root@nexus ~]# yum install -y vsftpd

Nexus 存储库管理器的作用是集中管理各种软件包和库文件,从而简化开发和运维团队的工作流程。通过配置 Nexus 存储库并将系统的 .repo 文件的 baseurl 替换为 Nexus 存储库的链接,可以实现以下目的:

  • 集中管理依赖项

    • Nexus 作为一个中央存储库,可以存储和管理多个不同来源的包,例如 Maven、npm、NuGet、YUM、Docker 等。这使得开发团队可以集中管理所有的依赖项,从而简化项目的依赖管理。
  • 加速构建和部署

    • 通过使用本地的 Nexus 存储库,可以减少对外部网络的依赖,加速构建和部署过程。团队成员可以从本地 Nexus 存储库中快速获取所需的包和依赖项,而无需等待从外部源下载。
  • 提高安全性和稳定性

    • Nexus 存储库可以对存储的包和依赖项进行版本控制,确保开发团队使用的是经过验证和安全的版本。此外,Nexus 还可以设置访问权限,确保只有授权人员才能上传和下载包,提升安全性。
  • 缓存和镜像功能

    • Nexus 可以作为外部存储库的缓存或镜像。当你配置了阿里云仓库的链接并将 .repo 文件的 baseurl 替换为 Nexus 存储库的链接后,Nexus 会在第一次请求时从阿里云仓库获取包并缓存到本地。以后再请求相同的包时,将直接从本地 Nexus 存储库中获取,从而提高下载速度和稳定性。