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
相关推荐
R.lin2 小时前
mmap内存映射文件
java·后端
chxii2 小时前
Maven 详解(中)
java·maven
梁正雄2 小时前
linux-shell-基础与变量和运算符-1
linux·运维
意疏2 小时前
《金仓KingbaseES vs 达梦DM:从迁移到运维的全维度TCO实测对比》
运维
shawnyz2 小时前
rhcse----DNS
运维·服务器
SimonKing2 小时前
消息积压、排查困难?Provectus Kafka UI 让你的数据流一目了然
java·后端·程序员
☆璇2 小时前
【Linux】Reactor反应堆模式
linux·运维·服务器·网络
拾心212 小时前
【云运维】zabbix管理(续)
运维·zabbix
考虑考虑2 小时前
点阵图更改背景文字
java·后端·java ee