linux下部署nexus私有仓库核心是搭建可托管、代理和分发jar/war/zip等二进制依赖的中心化服务,支持maven、npm、docker、pypi、raw等多种格式;需jdk 11+环境,下载解压后创建nexus用户、配置端口与jvm参数,启动服务并通过web ui或curl上传管理二进制包。

Linux 环境下部署 Nexus 私有仓库来管理二进制包依赖,核心是搭建一个可托管、代理和分发各类构件(如 JAR、WAR、ZIP、自定义二进制等)的中心化服务。它不只限于 Maven,也支持 npm、Docker、PyPI、Raw 等格式——只要依赖是文件形式,就能纳入 Nexus 统一管理。
确认基础运行环境
Nexus 3.x 要求 Java 8 或更高版本(推荐 JDK 11+,Nexus 3.40+ 已正式要求 JDK 11)。先验证:
- 执行 java -version,确保输出含 11 或 17(避免使用过时的 JDK 8,尤其在 Nexus 3.50+ 版本)
- 若未安装,建议用系统包管理器安装 OpenJDK,例如:
yum install -y java-11-openjdk-devel(CentOS/RHEL)或 apt install -y openjdk-11-jdk(Ubuntu/Debian) - 无需额外配置 JAVA_HOME(现代 Nexus 启动脚本会自动探测),但确保 java 命令全局可用
下载解压并初始化目录结构
推荐将 Nexus 安装到非 root 用户可写路径(如 /opt/nexus),避免权限冲突:
- 下载最新稳定版 Unix 包(例如 Nexus 3.69.0-01):
wget https://download.sonatype.com/nexus/3/nexus-3.69.0-01-unix.tar.gz -P /tmp - 解压并重命名规范路径:
tar -xzf /tmp/nexus-3.69.0-01-unix.tar.gz -C /opt
ln -sf /opt/nexus-3.69.0-01 /opt/nexus - 修改工作目录归属(关键!):
chown -R nexus:nexus /opt/sonatype-work(默认生成在 /opt/nexus-3.69.0-01/sonatype-work) - 创建专用运行用户:
useradd -r -m -d /opt/sonatype-work nexus
配置与启动服务
启动前需调整两处关键配置:
- 编辑 /opt/nexus/bin/nexus.rc,取消注释并设置:
run_as_user="nexus" - 如需修改端口或 JVM 参数,编辑 /opt/nexus/etc/nexus-default.properties:
— 修改 application-port=8081 为所需端口(如 8082)
— 在 /opt/nexus/bin/nexus.vmoptions 中调大堆内存(如 -Xms2G -Xmx2G) - 首次启动(前台验证):
/opt/nexus/bin/nexus run,观察日志直到出现 "Started Sonatype Nexus" - 后台常驻:
/opt/nexus/bin/nexus start,然后用 systemctl 或 supervisord 管理更稳妥
上传与管理二进制依赖(Raw 类型最灵活)
对于非标准格式的二进制包(如 SDK ZIP、CLI 工具、配置模板、内部构建产物),推荐使用 Raw 类型 Hosted 仓库:
- 登录 Web UI(http://your-ip:8081),用 admin / 初始密码(见 /opt/sonatype-work/nexus3/admin.password)
- 进入 Repository → Repositories → Create repository → raw (hosted)
- 填写名称(如 internal-binaries)、在线状态(Online)、存储策略(Strict,防覆盖)
- 上传方式有三种:
— Web UI:点击仓库 → Upload → 选择文件 + 设置路径(如 tools/my-cli/v1.2.0/my-cli-linux-amd64)
— cURL(适合 CI 脚本):
curl -v -u admin:password --upload-file ./my-tool.zip "http://localhost:8081/repository/internal-binaries/tools/my-tool/v1.0/my-tool.zip"
— Maven deploy(需配置 raw 类型的 deploy URL)
至此,你已拥有一个可稳定托管任意二进制依赖的私有仓库。后续只需在项目中通过 HTTP 直接下载,或配合 shell 脚本、CI 流水线自动拉取,彻底摆脱对本地 lib 目录或共享盘的硬编码依赖。











