Nexus制品库与标准模板集成实现制品部署测试验证 - 第2节

2.1 Nexus Repository Manager 概述与版本选择

Nexus Repository Manager 是 Sonatype 公司推出的核心制品管理平台,支持 Maven、npm、Docker、PyPI、NuGet 等主流包格式的代理、托管与分发。根据部署场景与功能需求,分为 OSS(开源版)与 Pro(专业版)两个版本。

对比维度 Nexus Repository OSS Nexus Repository Pro
许可证 Apache 2.0 开源 商业授权(按节点/年订阅)
核心功能 托管、代理、分组仓库;支持 Maven/npm/Docker/PyPI 等 OSS 全部功能 + 智能镜像、高可用、SAML/SSO、高级审计
高可用 单实例部署 支持冷备/热备与集群
安全集成 内置 RBAC + 匿名访问 LDAP/AD、SAML、JWT、IP 白名单
适用场景 中小团队、开源项目、CI/CD 基础集成 企业级合规、多团队协作、跨数据中心分发
选型建议: 本课程以 OSS 版为基础搭建环境,所有标准模板集成与制品部署验证功能在 OSS 版中均可完整实现。Pro 版功能仅在涉及高可用与高级安全策略时额外说明。

2.2 系统要求与环境准备

Nexus Repository Manager 基于 Java 运行,推荐使用专用服务器或虚拟机部署。以下为 OSS 3.x 版本的典型硬件与软件要求:

  • 操作系统: CentOS 7.x / 8.x、Ubuntu 20.04 / 22.04、RHEL 7/8、Windows Server 2019+
  • Java 环境: OpenJDK 8 或 11(推荐使用 AdoptOpenJDK / Temurin)
  • CPU: 最低 2 核,推荐 4 核以上
  • 内存: 最低 4 GB,推荐 8 GB(堆内存建议分配 2–4 GB)
  • 磁盘: 至少 20 GB 可用空间(制品存储建议单独挂载大容量数据盘)
  • 网络: 开放端口 8081(HTTP)与 5000–5003(Docker 仓库端口)
重要: 不要使用 root 用户运行 Nexus 进程。官方强烈建议创建专用系统用户 nexus,并确保数据目录(sonatype-work)的读写权限归属该用户。

2.3 安装步骤(Linux 环境)

以下以 CentOS 7 + OpenJDK 11 为例,演示 Nexus OSS 的完整安装流程。

2.3.1 安装 Java 环境

# 安装 OpenJDK 11
sudo yum install -y java-11-openjdk-devel

# 验证 Java 版本
java -version
# 输出示例:openjdk version "11.0.18" 2023-01-17 LTS

2.3.2 创建专用用户与目录

# 创建 nexus 用户
sudo useradd -m -s /bin/bash nexus

# 创建安装目录
sudo mkdir -p /opt/nexus
sudo chown -R nexus:nexus /opt/nexus

2.3.3 下载并解压 Nexus OSS

# 切换到 nexus 用户
sudo su - nexus

# 下载最新 OSS 版本(以 3.61.0 为例)
wget https://download.sonatype.com/nexus/3/nexus-3.61.0-02-unix.tar.gz

# 解压到 /opt/nexus
tar -xzf nexus-3.61.0-02-unix.tar.gz -C /opt/nexus/

# 解压后目录结构
ls -l /opt/nexus/
# nexus-3.61.0-02        # 程序主目录
# sonatype-work          # 数据与配置目录(首次启动自动生成)

2.3.4 配置 Nexus 运行参数

# 编辑 nexus 启动脚本,设置运行用户
vi /opt/nexus/nexus-3.61.0-02/bin/nexus.rc

# 取消注释并修改为:
run_as_user="nexus"

# 编辑 JVM 堆内存配置(根据服务器内存调整)
vi /opt/nexus/nexus-3.61.0-02/bin/nexus.vmoptions

# 示例配置(4 GB 堆内存):
-Xms2048m
-Xmx4096m
-XX:MaxDirectMemorySize=2G

2.3.5 启动 Nexus 服务

# 以 nexus 用户启动
sudo -u nexus /opt/nexus/nexus-3.61.0-02/bin/nexus start

# 查看启动日志
tail -f /opt/nexus/sonatype-work/nexus3/log/nexus.log

# 等待日志中出现以下内容表示启动成功:
# --------------------------------------------------
# Started Sonatype Nexus OSS 3.61.0-02
# --------------------------------------------------
启动耗时: 首次启动需要 2–5 分钟,Nexus 会在后台初始化数据库与内置仓库。请耐心等待日志输出完成,不要中途强制停止。

2.4 初始配置与管理员设置

Nexus 启动完成后,通过浏览器访问 http://<服务器IP>:8081 进入管理控制台。

2.4.1 获取初始管理员密码

# 查看初始密码文件
cat /opt/nexus/sonatype-work/nexus3/admin.password

# 输出示例:e3c8a9b1-7f2d-4a6e-9c0d-1b2a3c4d5e6f

使用用户名 admin 与上述密码登录后,系统会强制要求修改密码并配置安全设置。

2.4.2 配置匿名访问与安全 Realm

登录后依次完成以下配置:

  1. 修改管理员密码 — 输入新密码并确认。
  2. 配置匿名访问 — 建议在内部 CI/CD 环境中启用匿名读取,便于制品下载;生产环境可关闭。
  3. 配置 Realm — 进入 Administration → Security → Realms,确保 Local Authenticating Realm 与 Local Authorizing Realm 处于激活状态。

2.4.3 创建管理员专用角色与用户(可选)

为 CI/CD 集成创建专用账号,避免直接使用 admin 账号:

# 通过 UI 操作:
# 1. 进入 Administration → Security → Roles → Create Role
#    角色 ID: ci-deploy-role
#    权限: nx-repository-view-*-*-* (所有仓库浏览)
#          nx-repository-admin-*-*-* (所有仓库管理)
#          nx--all (管理)

# 2. 进入 Administration → Security → Users → Create User
#    用户 ID: cicd-bot
#    密码: 自定义强密码
#    角色: ci-deploy-role
最佳实践: 为每个 CI/CD 工具链(Jenkins、GitLab CI、GitHub Actions)创建独立的 Nexus 用户,并分配最小必要权限。这样在审计日志中可以清晰追踪每次制品上传/下载的来源。

2.5 验证安装与基本功能

完成初始配置后,执行以下验证步骤确保环境就绪:

验证项 操作 预期结果
Web UI 访问 浏览器打开 http://<IP>:8081 显示 Nexus 登录页面
管理员登录 使用 admin 或 cicd-bot 登录 进入仪表盘,无报错
仓库列表 点击 Repositories 看到预置的 maven-central、maven-releases、maven-snapshots 等仓库
API 健康检查 curl -u admin:密码 http://<IP>:8081/service/rest/v1/status 返回 JSON 格式的健康状态信息
上传测试 通过 UI 手动上传一个 jar 文件到 maven-releases 文件出现在仓库中,可浏览与下载
验证通过后: 表示 Nexus 环境搭建完成,可以进入下一章《标准模板集成》的学习。后续所有制品部署与测试验证操作都将基于此环境进行。

2.6 Nexus 环境架构总览

下图展示了 Nexus 部署后的核心组件与外部集成关系,帮助理解各模块在 CI/CD 流程中的位置。

Nexus 环境架构总览 Nexus 环境架构总览 CI/CD 工具链 Jenkins / GitLab CI GitHub Actions / ArgoCD Maven / Gradle / npm Nexus Repository Manager Web UI (端口 8081) REST API (v1) 仓库引擎 (Blob Store) 制品存储 sonatype-work/nexus3 所有制品上传/下载均通过 REST API 或 Web UI 完成