Nexus Repository OSS 部署使用教程:打造企业级私有仓库 原创
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 用户名和上一步获取的密码登录。
首次登录向导会引导你:
- 设置新的管理员密码
- 配置匿名访问(可选)
- 完成初始设置
六、仓库类型介绍
Nexus 支持三种仓库类型:
| 类型 | 说明 | 使用场景 |
|---|---|---|
| Proxy(代理) | 代理远程仓库,缓存到本地 | 加速依赖下载,节省带宽 |
| Hosted(托管) | 存储本地发布的构件 | 发布团队内部构建的包 |
| Group(组) | 将多个仓库合并为一个 URL | 简化客户端配置 |
七、常见仓库配置示例
7.1 Maven 仓库
Nexus 默认已创建了以下 Maven 仓库:
maven-central— 代理 Maven Centralmaven-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 仓库的步骤:
- 进入 Administration → Repositories → Create repository
- 选择 npm (proxy)
- 填写仓库名称,设置远程 URL 为
https://registry.npmjs.org - 保存后,客户端即可配置使用该仓库
客户端配置:
# 设置 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):
- 创建 docker (hosted) 仓库,设置 HTTP 端口(如 5000)
- 确保 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 包仓库:
- 创建 pypi (proxy) 仓库,远程 URL 设为
https://pypi.org - 创建 pypi (hosted) 仓库用于上传私有包
- 创建 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 等多种格式的包依赖。对于团队协作来说,它能显著提升依赖下载速度、保障构建的稳定性,并为内部发布提供可靠的基础设施。