【DevOps工具篇】 成果物发布管理:Nexus及安装方法

2023-01-07T18:11:44+08:00 | 5分钟阅读 | 更新于 2023-01-07T18:11:44+08:00

Macro Zhao

【DevOps工具篇】 成果物发布管理:Nexus及安装方法

@[TOC]

推荐超级课程:

在快速变化的计算机程序制作世界中,保持事物的有序对于顺畅运行至关重要。为此,创造了成果物(仓库)管理器。仓库管理器用于存储构建文件,并公开API以推送和拉取构建,这样我们可以轻松地将其与Jenkins等自动化工具集成。 Nexus就是在这方面提供帮助的大玩家之一。在这个博客系列中,我们将讨论Nexus——它是什么,以及它与其他成果物管理器的不同之处,并将逐步向您展示如何在Linux和Docker容器上设置它。

什么是成果物?

简单来说,可以将其视为运行构建命令后得到的副产品。如果您使用过React框架,您运行过npm run build命令,然后立即得到一个构建文件夹,那就是一个成果物。它可以是任何格式,可能是zip格式,.jar格式,或其他任何格式。它只是我们在开发后得到的文件夹,可以轻松地从一台服务器传送到另一台服务器。

什么是Nexus?

Nexus是一个成果物管理器,这意味着它帮助我们保存、检索成果物,并在我们需要时对它们进行备份。Nexus由Sonatype构建,是一个非常流行的成果物管理器,它还公开了API端点,这使得我们能够轻松地将其与Jenkins或GitHub Action等自动化工具集成。它还为我们提供了一个UI界面,以便我们可以轻松地与之交互。

Nexus与其他成果物管理器的比较

现在问题来了,为什么选择Nexus?还有许多其他管理器,如npm、Maven中央仓库和Dockerhub,这些都是广泛使用的流行管理器。那么为什么我们需要Nexus呢?

现在有许多原因使得公司更愿意使用Nexus,我将尝试列出其中的一些:

  1. 如果您在一家大公司工作,需要维护多种类型的程序,您需要为每一种单独维护一个仓库管理器。您不能将Node应用程序推送到Dockerhub,也不能将Java应用程序推送到npm。这些管理器只服务于单一类型,您不能在那里保存其他格式。但是Nexus,您可以处理各种程序:Node应用程序、Docker镜像、Kubernetes的Helm图表、Java应用程序等等。查看所有支持的格式类型,请访问这个链接https://help.sonatype.com/repomanager3/nexus-repository-administration/formats
  2. 许多公司不信任第三方如npm或Dockerhub来托管他们的代码。因此,他们更愿意设置自己的仓库管理器,在内部共享成果物,而不对外部开放。
  3. 使用Nexus,您还可以设置带有内置缓存系统的代理仓库。例如,公司的软件开发人员尝试为其程序安装依赖项。现在您的Nexus管理器没有所有请求的包,所以Nexus将向您设置的代理的实际仓库管理器(如npm或Dockerhub)发出请求,并获取所有这些包并缓存它们。下次您将直接从Nexus获取它们,这将节省大量带宽。

安装Nexus

在Linux系统(Ubuntu 22.04)上

作为先决条件,我们需要Java OpenJDK和JRE v8。幸运的是,我们不需要去其他地方安装这个,默认的Ubuntu仓库提供了多个Java版本,所以现在您将从Ubuntu仓库安装Java OpenJDK和JRE v8。 首先运行以下命令更新和刷新仓库包索引。

sudo apt update
sudo apt install openjdk-8-jdk

现在运行上述命令安装openjdk-8-jdk。当被询问时按Y继续安装。

安装完成后,检查Java版本。

java -version

如果安装顺利,您将得到包含Java版本的 result,否则您将在该命令上得到错误。 现在我们将从官方文档下载Nexus二进制文件。 https://help.sonatype.com/repomanager3/product-information/download 现在对于这个博客,我使用的是3.41版本,但您可以将它更改为您撰写博客时的最新版本,当我撰写这篇博客时是3.62。我们将使用wget工具下载。成功完成后,您可以在运行命令的文件夹中看到二进制文件。

wget https://download.sonatype.com/nexus/3/nexus-3.41.1-01-unix.tar.gz

解压它。

tar xzf nexus-3.41.1-01-unix.tar.gz

在opt文件夹中创建一个名为Nexus的文件夹,并将解压的版本放在那里是一个好习惯。运行以下命令来执行此操作。

mv nexus-3.41.1-01 /opt/nexus  
mv sonatype-work /opt/

因此,在解压该二进制文件时,我们实际上会得到2个文件夹.

创建服务用户

现在这是一个可选步骤,不是最佳实践的是用root用户运行所有内容。因此,我们需要为Nexus创建一个用户,并使用该用户运行此程序。我们需要给这个用户必要的文件权限。 为了创建用户,请运行以下命令:

sudo useradd -s /bin/bash nexus  
sudo passwd nexus

第一个命令将为您创建一个nexus用户,然后运行第二个命令,它将要求您为该用户设置新密码。

chown -R nexus:nexus /opt/nexus /opt/sonatype-work

以上命令将设置新创建的目录的权限给nexus用户。 现在我们需要告诉Nexus我们需要用哪个用户运行这个Nexus服务,默认设置为root。 使用nano编辑器或您选择的任何其他编辑器打开nexus.rc

sudo nano /opt/nexus/bin/nexus.rc
run_as_user="nexus"

取消注释上述选项,并在前面写上nexus,如上所示。 您还可以设置maxHeap设置,但对于初学者来说这并不那么重要。 现在最后运行以下命令以运行Nexus服务。

/opt/nexus/nexus-3.41.1-01/bin/nexus start

您现在可以在端口8081访问您的Nexus UI。

在容器中运行Nexus

这是我运行Nexus的过程,我不喜欢在系统上安装所有东西,所以让我们快速查看如何做到这一点。 现在在Docker上运行Nexus非常简单,相信我,这是一个两步命令的过程,您只需要确保在您想要运行Nexus的系统上安装了Docker。然后运行以下命令,让Docker运行一个Nexus容器。

docker volume create --name nexus-data

以上命令将创建一个卷,Nexus将保存所有数据。

docker run -d -p 8081:8081 --name nexus -v nexus-data:/nexus-data sonatype/nexus3

这个命令将使用该卷启动一个容器,在这里我们定义了端口8081:8081,这样我们就可以在机器上访问它了。 搞定!您的容器正在运行,您现在可以转到端口8081来访问Nexus UI。

© 2011 - 2025 Macro Zhao的分享站

关于我

如遇到加载502错误,请尝试刷新😄

Hi,欢迎访问 Macro Zhao 的博客。Macro Zhao(或 Macro)是我在互联网上经常使用的名字。

我是一个热衷于技术探索和分享的IT工程师,在这里我会记录分享一些关于技术、工作和生活上的事情。

我的CSDN博客:
https://macro-zhao.blog.csdn.net/

欢迎你通过评论或者邮件与我交流。
Mail Me

推荐好玩(You'll Like)
  • AI 动·画
    • 这是一款有趣·免费的能让您画的画中的角色动起来的AI工具。
    • 支持几十种动作生成。
我的项目(My Projects)
  • 爱学习网

  • 小乙日语App

    • 这是一个帮助日语学习者学习日语的App。
      (当然初衷也是为了自用😄)
    • 界面干净,简洁,漂亮!
    • 其中包含 N1 + N2 的全部单词和语法。
    • 不需注册,更不需要订阅!完全免费!
  • 小乙日文阅读器

    • 词汇不够?照样能读日语名著!
    • 越读积累越多,积跬步致千里!
    • 哪里不会点哪里!妈妈再也不担心我读不了原版读物了!
赞助我(Sponsor Me)

如果你喜欢我的作品或者发现它们对你有所帮助,可以考虑给我买一杯咖啡 ☕️。这将激励我在未来创作和分享更多的项目和技术。🦾

👉 请我喝一杯咖啡

If you like my works or find them helpful, please consider buying me a cup of coffee ☕️. It inspires me to create and share more projects in the future. 🦾

👉 Buy me a coffee