Nexus Repository OSS 部署使用教程:打造企业级私有仓库 原创

温馨提示:
本文最后更新于 2026-05-07,已超过 0 天没有更新。 若文章内的图片失效(无法正常加载),请留言反馈或直接 联系我

Nexus Repository OSS 部署使用教程:打造企业级私有仓库

Nexus Repository(Sonatype Nexus)是最流行的开源仓库管理工具之一,支持 Maven、npm、Docker、PyPI、NuGet 等多种格式。其社区版(OSS)完全免费,是中小团队搭建私有仓库的首选方案。

本文将带你从零开始,在 Linux 服务器上完成 Nexus Repository OSS 的部署、配置和日常使用。

一、环境要求

项目 要求
操作系统 Ubuntu 20.04+ / CentOS 7+ / Debian 10+
Java JDK 11 或 JDK 17
内存 最低 4GB,推荐 8GB+
磁盘 根据仓库数据量而定,建议 50GB+
端口 8081(默认 Web 端口)

二、安装 JDK

Nexus 运行需要 Java 环境,推荐使用 JDK 17:

# Ubuntu / Debian
sudo apt update
sudo apt install -y openjdk-17-jdk

# CentOS / RHEL
sudo yum install -y java-17-openjdk

# 验证安装
java -version

设置环境变量(可选):

echo 'export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64' >> ~/.bashrc
echo 'export PATH=$JAVA_HOME/bin:$PATH' >> ~/.bashrc
source ~/.bashrc

三、下载并安装 Nexus

3.1 下载最新版本

前往 Sonatype 下载页面 获取最新版 Nexus Repository OSS 的下载链接:

cd /opt
# 以 3.69.0-12 为例,请替换为实际最新版本
wget https://download.sonatype.com/nexus/3/nexus-3.69.0-12-unix.tar.gz
tar -xzf nexus-3.69.0-12-unix.tar.gz

解压后会得到两个目录:

  • nexus-3.69.0-12/ — 程序安装目录
  • sonatype-work/ — 数据和工作目录

3.2 创建专用用户

出于安全考虑,不建议以 root 用户运行 Nexus:

sudo useradd --system --no-create-home --shell /bin/false nexus
sudo chown -R nexus:nexus /opt/nexus-3.69.0-12
sudo chown -R nexus:nexus /opt/sonatype-work

3.3 配置内存

编辑 bin/nexus.vmoptions 文件,根据服务器内存调整 JVM 参数:

vim /opt/nexus-3.69.0-12/bin/nexus.vmoptions

推荐配置(8GB 内存服务器):

-Xms512m
-Xmx2048m
-XX:MaxDirectMemorySize=2048m
-XX:+UnlockExperimentalVMOptions
-XX:+UseZGC

3.4 配置服务自启动

创建 systemd 服务文件:

sudo vim /etc/systemd/system/nexus.service

写入以下内容:

[Unit]
Description=Nexus Repository Manager
After=network.target

[Service]
Type=forking
LimitNOFILE=65536
User=nexus
Group=nexus
ExecStart=/opt/nexus-3.69.0-12/bin/nexus start
ExecStop=/opt/nexus-3.69.0-12/bin/nexus stop
Restart=on-failure
RestartSec=30

[Install]
WantedBy=multi-user.target

启动服务:

sudo systemctl daemon-reload
sudo systemctl enable nexus
sudo systemctl start nexus
sudo systemctl status nexus

四、Nginx 反向代理

生产环境建议使用 Nginx 作为反向代理,并配置 HTTPS:

sudo apt install -y nginx
sudo vim /etc/nginx/sites-available/nexus
upstream nexus_backend {
    server 127.0.0.1:8081;
}

server {
    listen 80;
    server_name nexus.example.com;

    location / {
        proxy_pass http://nexus_backend;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        client_max_body_size 1G;
    }
}

启用配置:

sudo ln -s /etc/nginx/sites-available/nexus /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx

五、初始配置

5.1 获取管理员密码

首次启动后,管理员密码保存在数据目录中:

sudo cat /opt/sonatype-work/nexus3/admin.password

5.2 登录并设置

访问 http://your-server-ip:8081(或通过 Nginx 代理的域名),使用 admin 用户名和上一步获取的密码登录。

首次登录向导会引导你:

  1. 设置新的管理员密码
  2. 配置匿名访问(可选)
  3. 完成初始设置

六、仓库类型介绍

Nexus 支持三种仓库类型:

类型 说明 使用场景
Proxy(代理) 代理远程仓库,缓存到本地 加速依赖下载,节省带宽
Hosted(托管) 存储本地发布的构件 发布团队内部构建的包
Group(组) 将多个仓库合并为一个 URL 简化客户端配置

七、常见仓库配置示例

7.1 Maven 仓库

Nexus 默认已创建了以下 Maven 仓库:

  • maven-central — 代理 Maven Central
  • maven-releases — 托管发布版本
  • maven-snapshots — 托管快照版本
  • maven-public — 组仓库(包含以上三个)

在 Maven 项目中的 settings.xml 配置:

<settings>
  <servers>
    <server>
      <id>nexus</id>
      <username>admin</username>
      <password>your_password</password>
    </server>
  </servers>
  <mirrors>
    <mirror>
      <id>nexus</id>
      <mirrorOf>*</mirrorOf>
      <url>http://nexus.example.com/repository/maven-public/</url>
    </mirror>
  </mirrors>
</settings>

7.2 npm 仓库

创建 npm 仓库的步骤:

  1. 进入 Administration → Repositories → Create repository
  2. 选择 npm (proxy)
  3. 填写仓库名称,设置远程 URL 为 https://registry.npmjs.org
  4. 保存后,客户端即可配置使用该仓库

客户端配置:

# 设置 registry
npm config set registry http://nexus.example.com/repository/npm-group/

# 如需认证
npm adduser --registry http://nexus.example.com/repository/npm-group/

7.3 Docker 仓库

配置 Docker 仓库需要额外的端口(Docker 不使用 8081):

  1. 创建 docker (hosted) 仓库,设置 HTTP 端口(如 5000)
  2. 确保 Nginx 或 HAProxy 转发该端口

客户端配置:

# 配置 Docker 信任(如果使用自签名证书)
sudo mkdir -p /etc/docker/certs.d/nexus.example.com:5000
# 复制证书到该目录

# 登录
docker login nexus.example.com:5000

# 推送镜像
docker tag my-image nexus.example.com:5000/my-image
docker push nexus.example.com:5000/my-image

7.4 PyPI 仓库

配置 Python 包仓库:

  1. 创建 pypi (proxy) 仓库,远程 URL 设为 https://pypi.org
  2. 创建 pypi (hosted) 仓库用于上传私有包
  3. 创建 pypi (group) 仓库合并两者

pip 配置:

# 命令行方式
pip install --index-url http://nexus.example.com/repository/pypi-group/simple/ \
  --trusted-host nexus.example.com package_name

# 或写入 ~/.pip/pip.conf
[global]
index-url = http://nexus.example.com/repository/pypi-group/simple/
trusted-host = nexus.example.com

八、日常运维

8.1 清理策略

定期清理不再需要的构件以释放空间:

  • Administraton → Blob Stores:查看存储空间使用情况
  • Administration → Tasks:创建定时清理任务
  • Administration → Cleanup Policies:配置自动清理规则

8.2 备份与恢复

备份 sonatype-work 目录即可:

# 备份前停止服务
sudo systemctl stop nexus

# 备份
tar -czf nexus-backup-$(date +%Y%m%d).tar.gz /opt/sonatype-work/

# 恢复时解压回原位置
tar -xzf nexus-backup-20260507.tar.gz -C /

# 启动服务
sudo systemctl start nexus

8.3 日志查看

# 系统服务日志
sudo journalctl -u nexus -f

# Nexus 内部日志
tail -f /opt/sonatype-work/nexus3/log/nexus.log

九、Docker 部署方式(可选)

如果偏好容器化部署,Nexus 也提供官方 Docker 镜像:

docker run -d \
  --name nexus \
  -p 8081:8081 \
  -v nexus-data:/nexus-data \
  --restart unless-stopped \
  sonatype/nexus3:latest

数据持久化在 nexus-data 卷中。

十、常见问题排查

问题 解决方法
启动后无法访问 8081 检查防火墙、确认 Java 版本、查看 nexus.log
内存不足 调整 nexus.vmoptions 中的 -Xmx 参数
上传失败 401/403 检查用户权限和角色分配
代理仓库无数据 确认网络连接和远程仓库 URL 正确
Docker push 失败 确认端口配置和证书信任

总结

Nexus Repository OSS 是一款功能强大的私有仓库管理工具,通过一次部署就能统一管理 Maven、npm、Docker、PyPI 等多种格式的包依赖。对于团队协作来说,它能显著提升依赖下载速度、保障构建的稳定性,并为内部发布提供可靠的基础设施。

官方文档:help.sonatype.com/repomanager3