2. Nexus安装与部署:环境要求与实战步骤

Nexus Repository Manager 作为企业级制品库的核心基础设施,其安装部署的规范性直接影响后续制品分发接口的调用性能与稳定性。本章从环境要求、单机安装、Docker Compose 快速部署到首次初始化,提供完整的操作指南。

2.1 环境要求:JDK / 内存 / 磁盘

Nexus 3.x 基于 Java 运行,对操作系统、JDK 版本、内存和磁盘有明确要求。下表列出生产环境推荐配置:

资源项 最低要求 推荐配置 说明
JDK 版本 JDK 8u191+ JDK 11 (LTS) Nexus 3.38+ 强制要求 JDK 11;JDK 8 仅支持旧版
物理内存 4 GB 8 GB 以上 堆内存默认 -Xms2703m -Xmx2703m,大仓库需上调
磁盘空间 20 GB 100 GB+ SSD 制品存储目录 (sonatype-work) 需独立挂载
CPU 核心 2 核 4 核以上 并发上传/下载场景下 CPU 敏感
操作系统 Linux / Windows / macOS CentOS 7+ / Ubuntu 20.04+ 生产环境首选 Linux
⚠ 磁盘性能关键提示: Nexus 的元数据存储在 OrientDB 或 H2 数据库中,频繁的 I/O 操作对磁盘延迟敏感。生产环境务必使用 SSD,并避免将 sonatype-work 目录放在 NFS 或网络挂载卷上,否则会导致接口调用超时和数据库损坏。

2.2 单机安装步骤(Linux 环境)

以下步骤以 Nexus Repository Manager OSS 3.70.0 为例,在 CentOS 7 上执行:

  1. 创建 nexus 用户(禁止 root 运行)
useradd nexus
passwd nexus
mkdir -p /opt/nexus /opt/sonatype-work
chown -R nexus:nexus /opt/nexus /opt/sonatype-work
  1. 下载并解压
cd /opt
wget https://download.sonatype.com/nexus/3/nexus-3.70.0-03-unix.tar.gz
tar -zxvf nexus-3.70.0-03-unix.tar.gz -C /opt/nexus --strip-components=1
  1. 配置 JVM 参数(编辑 /opt/nexus/bin/nexus.vmoptions)
-Xms2703m
-Xmx2703m
-XX:MaxDirectMemorySize=2703m
-XX:+UnlockDiagnosticVMOptions
-XX:+LogVMOutput
-XX:LogFile=../sonatype-work/nexus3/log/jvm.log
-XX:-OmitStackTraceInFastThrow
-Djava.io.tmpdir=../sonatype-work/nexus3/tmp
  1. 配置运行用户(编辑 /opt/nexus/bin/nexus.rc)
run_as_user="nexus"
  1. 启动服务
su - nexus
/opt/nexus/bin/nexus start
  1. 验证启动日志
tail -f /opt/sonatype-work/nexus3/log/nexus.log
# 看到 "Started Sonatype Nexus OSS 3.70.0-03" 即成功
💡 生产建议: 将 Nexus 注册为 systemd 服务,实现开机自启和进程守护。在 /etc/systemd/system/nexus.service 中配置 ExecStart 指向 nexus 启动脚本,并设置 User=nexus。

2.3 Docker Compose 快速部署

对于开发测试环境或需要快速迭代的场景,Docker Compose 是最高效的部署方式。以下配置包含 Nexus 服务与持久化卷:

version: '3.8'
services:
  nexus:
    image: sonatype/nexus3:3.70.0
    container_name: nexus3
    restart: unless-stopped
    ports:
      - "8081:8081"   # Web UI & REST API
      - "8082:8082"   # Docker 仓库 (hosted)
      - "8083:8083"   # Docker 仓库 (proxy)
    volumes:
      - ./nexus-data:/nexus-data
    environment:
      - INSTALL4J_ADD_VM_PARAMS=-Xms2703m -Xmx2703m -XX:MaxDirectMemorySize=2703m
    ulimits:
      nofile:
        soft: 65536
        hard: 65536

启动命令:

docker-compose up -d
# 查看日志
docker logs -f nexus3
📌 关键说明: 容器内 /nexus-data 对应宿主机的 ./nexus-data 目录,该目录存储所有制品、数据库和配置。务必在宿主机上提前创建该目录并赋予 200 权限:mkdir -p ./nexus-data && chown -R 200:200 ./nexus-data。

2.4 首次启动与管理员初始化

无论采用单机还是 Docker 方式部署,首次启动后都需要完成管理员密码初始化。流程如下:

  1. 访问 Web UI:浏览器打开 http://<服务器IP>:8081
  2. 获取初始管理员密码
# 单机部署
cat /opt/sonatype-work/nexus3/admin.password

# Docker 部署
docker exec nexus3 cat /nexus-data/admin.password
  1. 登录并修改密码:使用用户名 admin 和上述密码登录,系统强制要求设置新密码。
  2. 配置匿名访问:根据安全策略选择是否启用匿名访问(生产环境建议禁用)。
  3. 完成初始化向导:设置管理员邮箱(可选),进入主界面。
⚠ 安全提醒: 初始化完成后,立即删除 admin.password 文件(单机)或确保容器内该文件不再可读。默认管理员账号是攻击者的首要目标,建议启用 LDAP 或 SSO 集成。

2.5 部署架构总览

下图展示 Nexus 单机部署的核心组件与数据流向,帮助理解各目录和端口的作用:

Nexus 单机部署架构图 客户端 / CI Nginx / 反向代理 Nexus 核心进程 8081 (UI/API) 8082/8083 (Docker) Blob Store (制品文件存储) 数据库 (OrientDB / H2) 关键目录与端口说明 • sonatype-work/nexus3:数据根目录(制品、数据库、日志、临时文件) • 8081:管理界面与 REST API 端口;8082/8083:Docker 仓库专用端口 • 反向代理层:生产环境必须前置 Nginx 实现 TLS 终止和访问控制

2.6 部署方式对比与选型建议

根据团队规模和运维能力,选择合适的部署方式:

部署方式 适用场景 优势 劣势
单机手动安装 生产环境、私有化部署 完全可控、无容器开销、便于调优 运维成本高、升级复杂
Docker Compose 开发测试、CI/CD 集成 快速部署、环境一致、易于回滚 磁盘 I/O 受 Docker 卷驱动影响
Kubernetes Helm 大规模微服务团队 弹性伸缩、存储可编排 网络配置复杂、调试门槛高
💡 选型建议: 对于《Nexus制品库驱动与分发接口调用优化实战》课程后续的接口性能压测和调优章节,推荐使用 Docker Compose 部署,便于快速重建环境并保留制品数据。生产环境则优先考虑单机手动安装 + systemd 管理。