Nexus 3.x 私服搭建与运维完全指南(Maven 实战)

前言

Nexus 作为强大的 Maven 仓库管理器,是企业级开发中搭建私有仓库的首选工具。它能解决公共仓库访问慢、依赖包私有化存储、第三方构件管理等问题,大幅提升团队研发效率。本文基于 Nexus 3.13.0 版本,详细讲解从安装部署到日常运维的完整流程,适配 JDK 1.8 + Maven 3.5.4 环境。

一、Nexus 安装部署

  1. 下载 Nexus
    •官网下载:访问 Sonatype 官方下载页,选择 Unix 版本(Linux 环境)。
    •命令行下载(推荐脚本自动化安装):
bash 复制代码
#下载到 /opt/maven 目录(自定义路径需修改)
wget -O /opt/maven/nexus-unix.tar.gz http://download.sonatype.com/nexus/3/nexus-3.13.0-01-unix.tar.gz
  1. 解压与目录说明
bash 复制代码
执行解压命令:
tar -zxf nexus-unix.tar.gz -C /opt/maven/
解压后生成两个核心目录:
目录名	作用说明
nexus-3.13.0-01	程序目录(核心运行文件),etc/nexus.properties 为核心配置文件
sonatype-work	仓库数据目录(存储配置、日志、依赖包),备份时仅需打包此目录
  1. 环境变量配置
bash 复制代码
 编辑全局环境变量
vim /etc/profile
#添加以下内容(路径需与实际安装目录一致)
NEXUS_HOME=/opt/maven/nexus-3.13.0-01
export NEXUS_HOME
#刷新环境变量
source /etc/profile
#验证安装:显示版本信息即成功
nexus -version
  1. 防火墙配置(关键步骤)
bash 复制代码
Nexus 默认端口为 8081,需开放端口访问:
(1)iptables 防火墙

iptables -I INPUT -p tcp --dport 8081 -j ACCEPT
/etc/rc.d/init.d/iptables save  # 保存规则
service iptables restart        # 重启服务
(2)firewalld 防火墙(CentOS 7+)

firewall-cmd --zone=public --add-port=8081/tcp --permanent
firewall-cmd --reload  # 重载规则

二、Nexus 基础使用

  1. 启动 / 停止 / 重启
bash 复制代码
进入程序目录的 bin 文件夹执行操作:
cd /opt/maven/nexus-3.13.0-01/bin/
#启动(首次启动可能需30秒左右)
./nexus start
#停止
./nexus stop
 重启
./nexus restart
 查看状态
./nexus status
  1. 访问与登录
bash 复制代码
•浏览器访问:http://服务器IP:8081
•默认账号密码:admin/admin123(首次登录建议修改密码)
•登录后界面:左侧为仓库管理、系统设置等核心功能入口
  1. 仓库类型与配置方案
bash 复制代码
Nexus 仓库分为 4 种类型,推荐以下企业级配置:

仓库类型	推荐仓库名	用途说明
hosted	maven-releases	存储私有项目发行版构件(稳定版本)
hosted	maven-snapshots	存储私有项目快照版构件(开发调试版本)
proxy	maven-central	代理 Maven 中央仓库(默认配置,地址:https://repo1.maven.org/maven2/)
proxy	maven-aliyun	代理阿里云 Maven 仓库(国内加速,地址:http://maven.aliyun.com/nexus/content/groups/public/)
group	maven-public	仓库组(组合上述所有仓库,提供统一访问入口)
配置步骤(Web 界面):
1.登录后点击左侧「Repositories」→「Create repository」
2.选择对应仓库类型(如 proxy 仓库选「maven2 (proxy)」)
3.填写仓库名、远程地址(如阿里云地址),保存即可
4.编辑 maven-public 仓库组,将所有仓库添加到「Members」列表
  1. YUM 仓库配置(扩展功能)
bash 复制代码
除了 Maven 仓库,Nexus 还支持 YUM 仓库管理:
1.创建 YUM 代理仓库:选择「yum (proxy)」,远程地址填写阿里云 YUM 源(http://mirrors.aliyun.com/centos)
2.配置本地 YUM 源:

#创建 repo 文件
vim /etc/yum.repos.d/nexus.repo
 写入以下内容(替换服务器IP和端口)
[nexus-yum]
name=Nexus YUM Repository
baseurl=http://192.168.1.100:8081/repository/yum-aliyun/$releasever/os/$basearch/
enabled=1
gpgcheck=0
priority=1
 刷新 YUM 缓存
yum clean all && yum makecache
  1. 定时任务配置(磁盘清理)
bash 复制代码
快照版构件会持续占用磁盘空间,需配置定时清理:
1.左侧「System」→「Tasks」→「Create task」
2.选择「Maven - Delete SNAPSHOT components」
3.设置清理周期(如每周日凌晨 2 点)、保留天数(如 30 天)
4.保存并启用任务

三、开机自启动配置(Systemd)

为保证服务稳定性,配置 Systemd 自启动:

1.创建服务文件:

bash 复制代码
vim /lib/systemd/system/nexus.service

2.写入以下内容(路径需匹配实际安装目录):

bash 复制代码
[Unit]
Description=Nexus Repository Manager
After=network.target
[Service]
Type=forking
LimitNOFILE=65536  # 解决文件句柄限制警告
Environment=RUN_AS_USER=root
ExecStart=/opt/maven/nexus-3.13.0-01/bin/nexus start
ExecReload=/opt/maven/nexus-3.13.0-01/bin/nexus restart
ExecStop=/opt/maven/nexus-3.13.0-01/bin/nexus stop
Restart=on-failure  # 故障自动重启
PrivateTmp=true
[Install]
WantedBy=multi-user.target

3.启用自启动:

bash 复制代码
 重新加载系统服务
systemctl daemon-reload
#启用开机自启
systemctl enable nexus
#验证自启状态
systemctl is-enabled nexus

四、Nexus 与 Maven 集成

  1. 配置 Maven Settings.xml
bash 复制代码
修改本地 Maven 的 conf/settings.xml(或用户目录 .m2/settings.xml),添加私服认证和镜像配置:

<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
  <!-- 本地仓库路径(自定义) -->
  <localRepository>D:\Tools\maven\.m2</localRepository>
  <!-- 私服账号认证(id需与仓库id一致) -->
  <servers>
    <server>
      <id>releases</id>
      <username>admin</username>
      <password>admin123</password>
    </server>
    <server>
      <id>snapshots</id>
      <username>admin</username>
      <password>admin123</password>
    </server>
  </servers>
  <!-- 镜像配置(优先从私服下载) -->
  <mirrors>
    <mirror>
      <id>public</id>
      <mirrorOf>*</mirrorOf>  <!-- 匹配所有仓库请求 -->
      <url>http://192.168.1.100:8081/repository/maven-public/</url>  <!-- 私服仓库组地址 -->
    </mirror>
  </mirrors>
  <!-- 激活Profile -->
  <profiles>
    <profile>
      <id>nexus</id>
      <repositories>
        <repository>
          <id>central</id>
          <url>http://central</url>
          <releases><enabled>true</enabled></releases>
          <snapshots><enabled>true</enabled></snapshots>
        </repository>
      </repositories>
    </profile>
  </profiles>
  <activeProfiles>
    <activeProfile>nexus</activeProfile>
  </activeProfiles>
</settings>
  1. 配置项目 POM.xml(发布构件)
bash 复制代码
在项目 POM.xml 中添加分发管理配置,支持 mvn deploy 上传构件到私服:

<distributionManagement>
  <!-- 发行版构件上传到 releases 仓库 -->
  <repository>
    <id>releases</id>
    <name>Maven Releases Repository</name>
    <url>http://192.168.1.100:8081/repository/maven-releases/</url>
  </repository>
  <!-- 快照版构件上传到 snapshots 仓库 -->
  <snapshotRepository>
    <id>snapshots</id>
    <name>Maven Snapshots Repository</name>
    <url>http://192.168.1.100:8081/repository/maven-snapshots/</url>
  </snapshotRepository>
</distributionManagement>
  1. Maven 命令示例
bash 复制代码
#编译打包(跳过测试)
mvn clean package -Dmaven.skip.test=true
#发布构件到私服(需激活Profile)
mvn clean deploy -Dmaven.skip.test=true -P nexus

五、备份与迁移

  1. 备份
bash 复制代码
Nexus 所有数据(配置、依赖包)均存储在 sonatype-work 目录,备份命令:

#打包备份(建议定时执行)
tar -zcf nexus-backup-$(date +%Y%m%d).tar.gz /opt/maven/sonatype-work/
  1. 迁移
bash 复制代码
1.在新服务器安装相同版本的 Nexus
2.停止新服务器 Nexus 服务:systemctl stop nexus
3.删除新服务器的 sonatype-work 目录
4.将原服务器的备份包解压到新服务器对应目录:

tar -zxf nexus-backup-20240520.tar.gz -C /opt/maven/
1.启动新服务器 Nexus 服务:systemctl start nexus

六、常见问题(FAQ)

  1. 启动报错:Please define INSTALL4J_JAVA_HOME to point to a suitable JVM
bash 复制代码
原因:Nexus 未找到 JDK 路径,即使配置了 JAVA_HOME 也可能识别失败。
解决:编辑 Nexus 启动脚本,指定 JDK 路径:

vim /opt/maven/nexus-3.13.0-01/bin/nexus
 在脚本开头添加(替换为实际 JDK 安装路径)
INSTALL4J_JAVA_HOME_OVERRIDE=/usr/local/jdk1.8.0_202
  1. 访问 Nexus 页面超时
bash 复制代码
•检查防火墙是否开放 8081 端口
•查看 Nexus 日志:tail -f /opt/maven/sonatype-work/nexus3/log/nexus.log
•确认服务器内存是否充足(Nexus 建议最小内存 2G)
  1. Maven 下载依赖失败
bash 复制代码
•检查 Settings.xml 中镜像地址、账号密码是否正确
•确认 Nexus 仓库是否正常运行(Web 界面可访问)
•检查网络连通性:ping 服务器IP + telnet 服务器IP 8081
相关推荐
OliverH-yishuihan5 分钟前
在 Windows 上安装 Linux
linux·运维·windows
zclinux_11 分钟前
【Linux】虚拟化的内存气泡
linux·运维·服务器
ZHang......18 分钟前
LeetCode 1114. 按序打印
java·开发语言·算法
程序员欣宸19 分钟前
LangChain4j实战之四:集成到spring-boot
java·人工智能·spring boot
松涛和鸣25 分钟前
DAY33 Linux Thread Synchronization and Mutual Exclusion
linux·运维·服务器·前端·数据结构·哈希算法
慧都小项26 分钟前
Parasoft Jtest 如何用 JSON 文件驱动Java 测试自动化
java·自动化·json
CCI34440 分钟前
Remote ssh无法连接?
运维·ssh
Hui Baby1 小时前
全局事务入口感知子事务方法-TCC
java·开发语言·数据库
爱笑的眼睛111 小时前
FastAPI 请求验证:超越 Pydantic 基础,构建企业级验证体系
java·人工智能·python·ai
czlczl200209251 小时前
Spring Boot 参数校验进阶:抛弃复杂的 Group 分组,用 @AssertTrue 实现“动态逻辑校验”
java·spring boot·后端