Nexus 安装教程
本文基于 Nexus 3.95 版本、CentOS 系统进行安装介绍。
一、Nexus 简介
1.1 产品定位
Nexus Repository Manager(简称 Nexus)是 Sonatype 公司开发的一款业界领先的仓库管理平台,主要用于构建企业级私有仓库系统。它能够代理、存储和管理你的软件构件(Artifacts),是 Java / Maven 生态中最常用的私有仓库解决方案。
1.2 核心价值
- 构建加速:缓存远程中央仓库的依赖,避免重复从公网下载,大幅提升团队构建速度
- 带宽节省:团队内部共享同一份依赖缓存,减少重复下载带来的带宽浪费
- 内部构件共享:提供私有仓库用于存储和分发团队内部构建的私有 jar 包
- 安全管控:统一管理依赖的版本与来源,避免引入不安全的公共依赖漏洞
- 多格式支持:支持 Maven、npm、Docker、PyPI、Go Modules、Helm、RubyGems 等多种仓库格式
1.3 仓库类型
Nexus 仓库主要分为以下三种类型:
| 类型 | 名称 | 说明 | 读写属性 |
|---|---|---|---|
| proxy | 代理仓库 | 对外部公共仓库的代理。当客户端请求的依赖本地不存在时,Nexus 会自动从配置的远程仓库下载并缓存。一人下载,全团队共享。默认 Maven Central 访问速度较慢,建议替换为国内镜像源(如阿里云:https://maven.aliyun.com/repository/public) | 只读 |
| hosted | 宿主仓库 | 即私有仓库,用于上传和管理团队内部构件。创建时建议将 Deployment Policy 设置为 Allow Redeploy(允许重复发布,支持覆盖同版本) | 可读写 |
| group | 仓库组 | 一个逻辑容器,可聚合多个 proxy、hosted 或其他 group 仓库。开发人员只需配置一个 group URL,即可访问其下所有仓库的内容 | 只读 |
三种仓库类型的关系示意:

二、安装准备
2.1 JDK 版本要求
Nexus 对 Java 版本有严格要求,不同版本对应关系如下:
- Nexus 3.87.0 及以后:官方安装包自带 Java 21,无需额外安装。
- Nexus 3.71.0 ~ 3.86.x:需要 Java 17。
- Nexus 3.70.x 及更早:支持 Java 8 或 Java 11。
2.2 数据库选择
- 内置 H2:Nexus 内置了 H2 数据库,开箱即用,适合测试和开发环境。
- 外部 PostgreSQL(推荐生产):生产环境强烈建议使用独立的 PostgreSQL 数据库,以获得更好的性能、稳定性和备份能力。
2.3 安装包下载
官方下载地址(以 3.95.1-01 为例):
https://download.sonatype.com/nexus/3/nexus-3.95.1-01-linux-x86_64.tar.gz三、安装步骤
3.1 解压安装包
解压后会在当前目录生成 nexus-3.95.1-01 和 sonatype-work 两个目录。
tar -zxvf nexus-3.95.1-01-linux-x86_64.tar.gz目录说明:
nexus-3.95.1-01:Nexus 程序目录,包含启动脚本、依赖库等。sonatype-work:工作目录,存放配置文件、仓库数据、日志等持久化数据。
3.2 创建专用运行用户
为了安全起见,不建议使用 root 用户运行 Nexus,应创建专用的系统用户:
# 创建无登录权限的系统用户
useradd -r -s /bin/false nexus
# 赋予用户文件目录权限
sudo chown -R nexus:nexus /opt/nexus-3.95.1-01
sudo chown -R nexus:nexus /opt/sonatype-work3.3 设置运行用户
3.95 版本官方不再自动生成 nexus.rc 文件,需要手动创建:
echo 'run_as_user="nexus"' | sudo tee /opt/nexus-3.95.1-01/bin/nexus.rc3.4 配置系统服务(推荐)
将 Nexus 配置为 systemd 系统服务,便于管理启动、停止和开机自启。
创建服务文件:
sudo vi /etc/systemd/system/nexus.service服务配置内容(注意将 /opt/nexus/bin 替换为你的实际安装目录):
[Unit]
Description=Nexus Repository Manager
After=network.target
[Service]
Type=forking
LimitNOFILE=65536
ExecStart=/opt/nexus/bin/nexus start
ExecStop=/opt/nexus/bin/nexus stop
User=nexus
Restart=on-abort
[Install]
WantedBy=multi-user.target参数说明:
LimitNOFILE=65536:提升文件句柄数限制,Nexus 运行需要打开大量文件。Restart=on-abort:异常中止时自动重启服务。
3.5 修改默认端口(可选)
Nexus 默认监听端口为 8081,如需修改:
- 配置文件通常位于工作目录(
sonatype-work)下:/opt/sonatype-work/nexus3/etc/nexus.properties - 更早版本可能在安装目录的
etc文件夹下,文件名为nexus-default.properties
# Jetty section
application-port=8081 # 将这里的 8081 改为新端口,例如 8088
application-host=0.0.0.0保存文件后,需要重启 Nexus 服务使配置生效。
四、启动与验证
4.1 服务管理命令
# 重载服务配置
sudo systemctl daemon-reload
# 启动 Nexus 服务
sudo systemctl start nexus
# 设置开机自启
sudo systemctl enable nexus
# 查看服务状态
sudo systemctl status nexus4.2 防火墙配置
如服务器开启了防火墙,需放行 Nexus 端口(默认 8081):
sudo firewall-cmd --permanent --zone=public --add-port=8081/tcp
sudo firewall-cmd --reload4.3 登录验证
启动成功后,在浏览器访问 http://服务器IP:8081,即可进入 Nexus 登录页面。

- 初始用户名:
admin - 初始密码:位于
{安装目录}/sonatype-work/admin.password文件内,首次登录后会提示修改密码并删除该文件。
五、常用配置
5.1 配置 Maven Central 代理源
登录成功后,建议将 Maven Central 仓库的远程地址修改为国内镜像源,以提升下载速度。
操作路径:左侧菜单 → Server administration and configuration → Repositories → 找到 maven-central → Configuration
将 Remote storage 路径修改为阿里云公共仓库地址:
https://maven.aliyun.com/repository/public
5.2 安全认证与角色管理
Nexus 的权限体系基于「用户(User)→ 角色(Role)→ 权限(Privilege)」的三层模型。权限是最小粒度的授权单元,通过组合成角色,再将角色赋予用户,实现灵活的访问控制。
权限管理界面示意:

5.2.1 权限命名规则
Nexus 的权限 ID 采用统一的分段命名格式,各段之间用短横线 - 连接。以 nx-repository-view-maven2-maven-central-* 为例:
| 组成部分 | 含义说明 |
|---|---|
nx | 固定前缀,表明这是 Nexus 内部的系统权限。 |
repository-view | 权限类型,代表「仓库视图」权限,用于操作已配置好的仓库内容。 |
maven2 | 指定仓库格式(Format),即 Maven 2 格式。 |
maven-central | 指定具体的仓库名称(Repository Name),即 Nexus 默认创建的 Maven 中央仓库代理。 |
* | 通配符,代表该仓库下的所有操作(浏览、读取、上传、删除等)。 |
5.2.2 权限类型对比
Nexus 主要包含两大类仓库相关权限:
| 特性 | Repository-View 权限 | Repository-Admin 权限 |
|---|---|---|
| 核心目的 | 使用已配置好的仓库 | 管理和配置仓库本身 |
| 管理对象 | 仓库内的内容(组件、制品) | 仓库的设置、元数据和生命周期 |
| 典型操作 | 浏览、读取、上传、编辑、删除组件 | 创建、修改、删除仓库;更改仓库配置 |
| 适用场景 | 为普通用户(如开发者)分配,以便与仓库内容交互 | 为管理员分配,用于仓库的运维和管理 |
5.2.3 创建用户
在 Nexus 中创建新用户操作非常简单:打开左侧菜单的 Security → Users,点击 Create user,填写用户名、密码、邮箱等基本信息,并在下方 Roles 列表中勾选要赋予的角色(如 nx-admin 为管理员,或自定义的只读角色),保存即可完成创建。新创建的用户可直接使用用户名密码登录 Nexus。
5.3 配置本地 Maven settings.xml
在本地 Maven 的 conf/settings.xml 中配置 Nexus 认证和镜像:
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.2.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.2.0 https://maven.apache.org/xsd/settings-1.2.0.xsd">
<!-- 本地仓库路径 -->
<localRepository>D:\Program Files\apache-maven-3.8.4\mvn_resp</localRepository>
<!-- Nexus 认证信息 -->
<servers>
<server>
<id>nexus</id>
<username>改成你的 Nexus 用户名</username>
<password>改成你的 Nexus 密码</password>
</server>
</servers>
<!-- 镜像配置:所有请求都走 Nexus 仓库组 -->
<mirrors>
<mirror>
<id>nexus</id>
<name>nexus maven</name>
<url>http://nexusIP:端口/repository/maven-public/</url>
<mirrorOf>*</mirrorOf>
</mirror>
</mirrors>
<!-- Profile 配置:优先从 Nexus 获取,失败回退阿里云 -->
<profiles>
<profile>
<id>nexus</id>
<repositories>
<!-- Nexus 仓库组 -->
<repository>
<id>nexus-maven-public</id>
<url>http://nexusIP:端口/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
<!-- 阿里云兜底仓库(兜底备用) -->
<repository>
<id>aliyun-public</id>
<url>https://maven.aliyun.com/repository/public</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<!-- 插件仓库也走同样的策略 -->
<pluginRepository>
<id>nexus-maven-public</id>
<url>http://nexusIP:端口/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
<pluginRepository>
<id>aliyun-public</id>
<url>https://maven.aliyun.com/repository/public</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<!-- 激活 nexus profile -->
<activeProfiles>
<activeProfile>nexus</activeProfile>
</activeProfiles>
</settings>配置说明:
<servers>中的<id>需与后续pom.xml中<distributionManagement>的<id>保持一致,用于发布构件时进行身份认证。<mirrorOf>*</mirrorOf>表示所有仓库请求均通过 Nexus 镜像。maven-public是 Nexus 默认的仓库组,包含了 maven-central(代理)、maven-releases(宿主)、maven-snapshots(宿主)三个仓库。- snapshots 设置为 false,因为阿里云快照仓库更新不稳定,建议开发环境不直接依赖快照。