1. Nexus简介与版本说明
Nexus Repository Manager是一款强大的仓库管理器,支持Maven、npm、Docker、PyPI等多种包管理格式。它提供代理仓库、托管仓库和仓库组功能,是企业DevOps基础设施的重要组成部分。更多学习教程www.fgedu.net.cn
Nexus最新版本:
Nexus Repository 3.72.0(最新稳定版)- 发布于2025年,提供增强的安全性和新特性
Nexus Repository 3.70.0 – 长期支持版本,适合生产环境
Nexus Repository 3.68.0 – 旧版稳定版本,维护支持中
Nexus Repository 3.65.0 – 传统稳定版本
Nexus主要特性:
多格式支持:支持Maven、npm、Docker、PyPI、NuGet、RubyGems等
代理缓存:代理外部仓库,加速依赖下载
私有仓库:托管内部构建产物和依赖
安全扫描:集成安全漏洞扫描功能
高可用:支持集群部署和故障转移
2. Nexus下载方式
Nexus提供压缩包和Docker镜像两种下载方式。学习交流加群风哥微信: itpux-com
方式一:下载压缩包(推荐)
# cd /fgedudb/nexus
# wget https://download.sonatype.com/nexus/3/latest-unix.tar.gz
# 下载输出案例如下:
–2026-04-04 16:00:15– https://download.sonatype.com/nexus/3/latest-unix.tar.gz
Resolving download.sonatype.com… 54.192.28.193
Connecting to download.sonatype.com|54.192.28.193|:443… connected.
HTTP request sent, awaiting response… 200 OK
Length: 189567890 (181M) [application/gzip]
Saving to: ‘latest-unix.tar.gz’
latest-unix.tar.gz 100%[===============================================>] 180.78M 15.2MB/s in 12s
2026-04-04 16:00:27 URL:https://download.sonatype.com/nexus/3/latest-unix.tar.gz [189567890/189567890] -> “latest-unix.tar.gz” [1]
# 下载指定版本
# wget https://download.sonatype.com/nexus/3/nexus-3.72.0-04-unix.tar.gz
# 验证下载文件
# ls -lh latest-unix.tar.gz
-rw-r–r– 1 root root 181M Apr 4 16:00 latest-unix.tar.gz
# 解压文件
# tar -xzf latest-unix.tar.gz
# 查看解压目录
# ls -la
total 183M
drwxr-xr-x 3 root root 4096 Apr 4 16:00 .
drwxr-xr-x 3 root root 4096 Apr 4 16:00 ..
drwxr-xr-x 9 root root 4096 Apr 4 16:00 nexus-3.72.0-04
drwxr-xr-x 3 root root 4096 Apr 4 16:00 sonatype-work
-rw-r–r– 1 root root 181M Apr 4 16:00 latest-unix.tar.gz
# 查看版本信息
# cat nexus-3.72.0-04/etc/nexus-default.properties | grep version
nexus.version=3.72.0-04
方式二:Docker镜像下载
# docker pull sonatype/nexus3:latest
# 下载输出案例如下:
latest: Pulling from sonatype/nexus3
Digest: sha256:a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z6a7b8c9d0e1f2
Status: Downloaded newer image for sonatype/nexus3:latest
docker.io/sonatype/nexus3:latest
# 拉取指定版本
# docker pull sonatype/nexus3:3.72.0
# 查看镜像
# docker images sonatype/nexus3
REPOSITORY TAG IMAGE ID CREATED SIZE
sonatype/nexus3 latest a1b2c3d4e5f6 2 days ago 634MB
sonatype/nexus3 3.72.0 a1b2c3d4e5f6 2 days ago 634MB
# 运行Nexus容器
# docker run -d -p 8081:8081 –name nexus sonatype/nexus3:latest
# 查看容器状态
# docker ps | grep nexus
a1b2c3d4e5f6 sonatype/nexus3:latest “sh -c ${SONATYPE_…” 2 minutes ago Up 2 minutes 0.0.0.0:8081->8081/tcp nexus
方式三:下载Windows版本
# cd /fgedudb/nexus
# wget https://download.sonatype.com/nexus/3/latest-win64.zip
# 下载输出案例如下:
–2026-04-04 16:05:30– https://download.sonatype.com/nexus/3/latest-win64.zip
Resolving download.sonatype.com… 54.192.28.193
Connecting to download.sonatype.com|54.192.28.193|:443… connected.
HTTP request sent, awaiting response… 200 OK
Length: 192345678 (183M) [application/zip]
Saving to: ‘latest-win64.zip’
latest-win64.zip 100%[===============================================>] 183.45M 12.5MB/s in 15s
2026-04-04 16:05:45 URL:https://download.sonatype.com/nexus/3/latest-win64.zip [192345678/192345678] -> “latest-win64.zip” [1]
# 验证文件
# ls -lh latest-win64.zip
-rw-r–r– 1 root root 184M Apr 4 16:05 latest-win64.zip
3. 系统环境准备
Nexus依赖Java运行环境,需要提前安装配置。学习交流加群风哥QQ113257174
步骤1:安装Java运行环境
# yum install -y java-17-openjdk java-17-openjdk-devel
# 验证Java版本
# java -version
openjdk version “17.0.13” 2024-10-15 LTS
OpenJDK Runtime Environment (Red_Hat-17.0.13.0.11-1) (build 17.0.13+11-LTS)
OpenJDK 64-Bit Server VM (Red_Hat-17.0.13.0.11-1) (build 17.0.13+11-LTS, mixed mode, sharing)
# 配置JAVA_HOME
# vi /etc/profile.d/java.sh
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk
export PATH=$JAVA_HOME/bin:$PATH
# 使配置生效
# source /etc/profile.d/java.sh
步骤2:创建Nexus用户和目录
# useradd -r -s /sbin/nologin nexus
# 创建目录
# mkdir -p /opt/nexus
# mkdir -p /data/nexus-data
# 移动解压文件
# mv nexus-3.72.0-04 /opt/nexus/
# mv sonatype-work /data/nexus-data
# 设置权限
# chown -R nexus:nexus /opt/nexus
# chown -R nexus:nexus /data/nexus-data
# 配置数据目录
# vi /opt/nexus/nexus-3.72.0-04/bin/nexus.vmoptions
-Xms2703m
-Xmx2703m
-XX:MaxDirectMemorySize=2703m
-XX:+UnlockDiagnosticVMOptions
-XX:+LogVMOutput
-XX:LogFile=/data/nexus-data/sonatype-work/nexus3/log/jvm.log
-XX:-OmitStackTraceInFastThrow
-Djava.net.preferIPv4Stack=true
-Dkaraf.home=.
-Dkaraf.base=.
-Dkaraf.etc=etc/karaf
-Djava.util.logging.config.file=etc/karaf/java.util.logging.properties
-Dkaraf.data=/data/nexus-data/sonatype-work/nexus3
-Dkaraf.log=/data/nexus-data/sonatype-work/nexus3/log
-Djava.io.tmpdir=/data/nexus-data/sonatype-work/nexus3/tmp
-Dkaraf.startLocalConsole=false
4. Nexus安装实战
完成环境准备后,配置并启动Nexus服务。更多学习教程公众号风哥教程itpux_com
步骤1:配置Nexus服务
# vi /opt/nexus/nexus-3.72.0-04/bin/nexus.rc
run_as_user=”nexus”
# 配置服务端口
# vi /opt/nexus/nexus-3.72.0-04/etc/nexus-default.properties
application-host=0.0.0.0
application-port=8081
nexus-args=${jetty.etc}/jetty.xml,${jetty.etc}/jetty-http.xml,${jetty.etc}/jetty-requestlog.xml
nexus-context-path=/
# 创建systemd服务文件
# vi /etc/systemd/system/nexus.service
[Unit]
Description=Nexus Repository Manager
After=network.target
[Service]
Type=forking
User=nexus
Group=nexus
ExecStart=/opt/nexus/nexus-3.72.0-04/bin/nexus start
ExecStop=/opt/nexus/nexus-3.72.0-04/bin/nexus stop
Restart=on-failure
RestartSec=10
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
# 重载systemd
# systemctl daemon-reload
步骤2:启动Nexus服务
# systemctl start nexus
# systemctl enable nexus
# 查看服务状态
# systemctl status nexus
● nexus.service – Nexus Repository Manager
Loaded: loaded (/etc/systemd/system/nexus.service; enabled; vendor preset: disabled)
Active: active (running) since Fri 2026-04-04 16:15:00 CST; 30s ago
Process: 40123 ExecStart=/opt/nexus/nexus-3.72.0-04/bin/nexus start (code=exited, status=0/SUCCESS)
Main PID: 40125 (java)
Tasks: 85
Memory: 1.2G
CGroup: /system.slice/nexus.service
└─40125 /usr/bin/java -server -Dinstall4j.jvmDir=/usr/lib/jvm/java-17-openjdk …
Apr 04 16:15:00 fgedu.net.cn systemd[1]: Starting Nexus Repository Manager…
Apr 04 16:15:00 fgedu.net.cn nexus[40123]: Starting nexus
Apr 04 16:15:00 fgedu.net.cn systemd[1]: Started Nexus Repository Manager.
# 查看启动日志
# tail -f /data/nexus-data/sonatype-work/nexus3/log/nexus.log
2026-04-04 16:15:30,123+0800 INFO [jetty-main-1] *SYSTEM org.sonatype.nexus.bootstrap.jetty.JettyServer – Starting
2026-04-04 16:15:35,234+0800 INFO [jetty-main-1] *SYSTEM org.sonatype.nexus.bootstrap.jetty.JettyServer – Started
2026-04-04 16:15:35,345+0800 INFO [jetty-main-1] *SYSTEM org.sonatype.nexus.bootstrap.jetty.JettyServer – ————————————————-
2026-04-04 16:15:35,456+0800 INFO [jetty-main-1] *SYSTEM org.sonatype.nexus.bootstrap.jetty.JettyServer – Nexus Repository Manager 3.72.0-04
2026-04-04 16:15:35,567+0800 INFO [jetty-main-1] *SYSTEM org.sonatype.nexus.bootstrap.jetty.JettyServer – ————————————————-
步骤3:获取初始密码
# cat /data/nexus-data/sonatype-work/nexus3/admin.password
a1b2c3d4-e5f6-7890-abcd-ef1234567890
# 访问Web界面
# http://192.168.1.51:8081
# 登录后修改密码
# 用户名: admin
# 初始密码: a1b2c3d4-e5f6-7890-abcd-ef1234567890
# 新密码: fgedu_nexus_password_2026
# 验证服务端口
# netstat -tlnp | grep 8081
tcp 0 0 0.0.0.0:8081 0.0.0.0:* LISTEN 40125/java
5. Nexus配置实战
完成安装后,进行基础配置和安全加固。from:www.itpux.com
步骤1:配置邮件服务
# 导航到 Administration -> System -> Email
# 配置SMTP服务器
SMTP Host: smtp.fgedu.net.cn
SMTP Port: 587
Username: nexus@fgedu.net.cn
Password: your_password
From Address: nexus@fgedu.net.cn
Enable TLS: true
# 发送测试邮件
# 点击 “Send test email” 按钮
# 输出案例如下:
Test email sent successfully to admin@fgedu.net.cn
步骤2:配置LDAP认证
# 配置LDAP连接
Name: fgedu-ldap
LDAP server URL: ldap://192.168.1.100:389
Bind DN: cn=admin,dc=fgedu,dc=net,dc=cn
Bind Password: ldap_password
# 配置用户映射
Base DN: ou=users,dc=fgedu,dc=net,dc=cn
User ID attribute: uid
User real name attribute: cn
User email attribute: mail
# 配置组映射
Group base DN: ou=groups,dc=fgedu,dc=net,dc=cn
Group ID attribute: cn
Group member attribute: member
# 测试连接
# 点击 “Verify connection” 按钮
# 输出案例如下:
Connection successful. Found 156 users and 23 groups.
步骤3:配置SSL证书
# keytool -genkeypair -keystore /opt/nexus/nexus-3.72.0-04/etc/ssl/keystore.jks -storepass changeit -keypass changeit -alias nexus -keyalg RSA -keysize 2048 -validity 3650 -dname “CN=nexus.fgedu.net.cn, OU=IT, O=, L=Beijing, ST=Beijing, C=CN”
# 导入CA签名证书
# keytool -importcert -keystore /opt/nexus/nexus-3.72.0-04/etc/ssl/keystore.jks -storepass changeit -alias ca -file /etc/pki/tls/certs/ca.crt
# 配置HTTPS
# vi /opt/nexus/nexus-3.72.0-04/etc/nexus-default.properties
application-port-ssl=8443
nexus-args=${jetty.etc}/jetty.xml,${jetty.etc}/jetty-https.xml,${jetty.etc}/jetty-requestlog.xml
# 配置SSL参数
# vi /opt/nexus/nexus-3.72.0-04/etc/jetty/jetty-https.xml
# 重启Nexus
# systemctl restart nexus
# 验证HTTPS访问
# curl -k https://192.168.1.51:8443
6. 仓库管理实战
Nexus支持创建多种类型的仓库,满足不同开发需求。
步骤1:创建Maven仓库
# 导航到 Repository -> Repositories -> Create repository -> maven2(proxy)
Name: maven-aliyun
Proxy URL: https://maven.aliyun.com/repository/public
Blob store: default
Maximum component age: 1440
Maximum metadata age: 1440
# 创建Maven托管仓库
# 导航到 Repository -> Repositories -> Create repository -> maven2(hosted)
Name: maven-releases
Blob store: default
Deployment policy: Allow redeploy
Version policy: Release
# 创建Maven仓库组
# 导航到 Repository -> Repositories -> Create repository -> maven2(group)
Name: maven-public
Blob store: default
Member repositories:
– maven-releases
– maven-aliyun
– maven-central
# 配置Maven客户端
# vi ~/.m2/settings.xml
# 测试Maven部署
# mvn deploy:deploy-file -DgroupId=com.fgedu -DartifactId=test -Dversion=1.0.0 -Dpackaging=jar -Dfile=test.jar -DrepositoryId=nexus -Durl=http://192.168.1.51:8081/repository/maven-releases/
# 输出案例如下:
[INFO] Scanning for projects…
[INFO] Building Maven Stub Project (No POM) 1
[INFO] Uploading to nexus: http://192.168.1.51:8081/repository/maven-releases/com/fgedu/test/1.0.0/test-1.0.0.jar
[INFO] Uploaded to nexus: http://192.168.1.51:8081/repository/maven-releases/com/fgedu/test/1.0.0/test-1.0.0.jar (2.5 kB at 15.6 kB/s)
[INFO] BUILD SUCCESS
步骤2:创建Docker仓库
# 导航到 Repository -> Repositories -> Create repository -> docker(proxy)
Name: docker-hub
Proxy URL: https://registry-1.docker.io
Docker Index: Use Docker Hub
Blob store: default
# 创建Docker托管仓库
# 导航到 Repository -> Repositories -> Create repository -> docker(hosted)
Name: docker-private
HTTP Port: 5000
Blob store: default
Deployment policy: Allow redeploy
# 创建Docker仓库组
# 导航到 Repository -> Repositories -> Create repository -> docker(group)
Name: docker-public
HTTP Port: 5001
Member repositories:
– docker-private
– docker-hub
# 配置Docker客户端
# vi /etc/docker/daemon.json
{
“insecure-registries”: [“192.168.1.51:5000”, “192.168.1.51:5001”]
}
# 重启Docker
# systemctl restart docker
# 登录Docker仓库
# docker login 192.168.1.51:5000 -u admin -p fgedu_nexus_password_2026
Login Succeeded
# 推送镜像
# docker tag nginx:latest 192.168.1.51:5000/nginx:latest
# docker push 192.168.1.51:5000/nginx:latest
The push refers to repository [192.168.1.51:5000/nginx]
a1b2c3d4e5f6: Pushed
latest: digest: sha256:a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0 size: 1234
# 拉取镜像
# docker pull 192.168.1.51:5001/nginx:latest
latest: Pulling from nginx
Digest: sha256:a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0
Status: Downloaded newer image for 192.168.1.51:5001/nginx:latest
步骤3:创建npm仓库
# 导航到 Repository -> Repositories -> Create repository -> npm(proxy)
Name: npm-taobao
Proxy URL: https://registry.npmmirror.com
Blob store: default
# 创建npm托管仓库
# 导航到 Repository -> Repositories -> Create repository -> npm(hosted)
Name: npm-private
Blob store: default
# 创建npm仓库组
# 导航到 Repository -> Repositories -> Create repository -> npm(group)
Name: npm-public
Member repositories:
– npm-private
– npm-taobao
# 配置npm客户端
# npm config set registry http://192.168.1.51:8081/repository/npm-public/
# 登录npm仓库
# npm login –registry=http://192.168.1.51:8081/repository/npm-public/
Username: admin
Password: fgedu_nexus_password_2026
Email: admin@fgedu.net.cn
Logged in as admin on http://192.168.1.51:8081/repository/npm-public/
# 发布npm包
# npm publish –registry=http://192.168.1.51:8081/repository/npm-private/
+ @fgedu/test-package@1.0.0
7. 生产环境最佳实践
在生产环境中部署Nexus需要考虑性能优化、安全加固和备份恢复。
性能优化配置
# vi /opt/nexus/nexus-3.72.0-04/bin/nexus.vmoptions
-Xms4g
-Xmx4g
-XX:MaxDirectMemorySize=4g
# 配置任务调度
# 导航到 Administration -> System -> Tasks
# 创建清理任务
Name: Cleanup service
Task type: Admin – Cleanup service using blob store
Blob store: default
Schedule: Daily at 02:00
# 创建重建索引任务
Name: Rebuild index
Task type: Repair – Rebuild repository search
Repository: All repositories
Schedule: Weekly on Sunday at 03:00
# 配置Blob存储
# 导航到 Repository -> Blob Stores -> Create blob store
Name: maven-blob
Type: File
Path: /data/nexus-blob/maven
# 配置压缩存储
# 导航 to Administration -> Repository -> Compression
Enable compression: true
备份与恢复
# 导航到 Administration -> System -> Tasks -> Create task
Name: Database backup
Task type: Admin – Export databases for backup
Backup location: /backup/nexus
Schedule: Daily at 01:00
# 手动执行备份
# 导航到 Administration -> System -> Tasks
# 选择备份任务,点击 “Run”
# 输出案例如下:
Task ‘Database backup’ started at 2026-04-04 01:00:00
Exporting database…
Export completed successfully at 2026-04-04 01:05:30
# 恢复数据库
# 停止Nexus服务
# systemctl stop nexus
# 恢复数据
# cd /opt/nexus/nexus-3.72.0-04
# java -jar lib/support/nexus-orient-console.jar
CONNECT PLOCAL:/data/nexus-data/sonatype-work/nexus3/db/component admin admin
IMPORT DATABASE /backup/nexus/component-20260404.zip
DISCONNECT
# 启动Nexus服务
# systemctl start nexus
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
