Nexus 介绍
Nexus 是一个强大的 Maven 仓库管理器,它极大地简化了本地内部仓库的维护和外部仓库的访问。 如果使用了公共的 Maven 仓库服务器,可以从 Maven 中央仓库下载所需要的构件(Artifact),但这通常不是一个好的做法。正常做法是在本地架设一个 Maven 仓库服务器,即利用 Nexus 私服可以只在一个地方就能够完全控制访问和部署在你所维护仓库中的每个 Artifact。
Nexus 在代理远程仓库的同时维护本地仓库,以降低中央仓库的负荷,节省外网带宽和时间,Nexus 私服就可以满足这样的需要。Nexus 是一套 “开箱即用” 的系统不需要数据库,它使用文件系统加 Lucene 来组织数据。Nexus支持WebDAV 与 LDAP 安全身份认证。
Nexus 还提供了强大的仓库管理功能,构件搜索功能,它基于REST,友好的 UI 是一个 extjs 的 REST 客户端,它占用较少的内存,基于简单文件系统而非数据库。
Nexus 私服的优点:
1)加速构建;
2)节省带宽;
3)节省中央 maven 仓库的带宽;
4)稳定(应付一旦中央服务器出问题的情况);
5)控制和审计;
6)能够部署第三方构件;
7)可以建立本地内部仓库;
8)可以建立公共仓库
容器部署 Nexus
下载镜像
这里使用官方 nexus3:3.9.0 镜像
1 | docker pull docker.io/sonatype/nexus3:3.9.0 |
创建容器映射目录
1 | mkdir -p /data/nexus-data && chmod 777 -R /data/nexus-data |
运行容器
1 | docker run \ |
使用 docker logs -f nexus 查看容器的运行日志,当出现 Started Sonatype Nexus 字样时,则可以访问 nexus 程序;
使用浏览器访问
在浏览器中输入 http://192.168.64.61:8081/
,即可访问 Nexus Repository Manager,如下
服务器本地安装
安装 Java 环境
- 下载 jdk 压缩包,此处略…
- 安装 jdk
1 | # 创建 java 安装目录 |
安装 Nexus3
下载安装包到服务器
1
wget https://download.sonatype.com/nexus/3/latest-unix.tar.gz
创建 Nexus 服务运行用户
1
useradd -s /sbin/nologin -M nexus
解压压缩包并重命名
1
2
3tar zxvf latest-unix.tar.gz
mv nexus-3.30.0-01/ /usr/local/nexus
chown -R nexus:nexus /usr/local/nexus创建 nexus 数据存放目录
1
2mkdir -p /data/nexus
chown -R nexus.nexus /data/nexus修改 nexus 配置文件
1
2
3
4
5
6
7
8# 修改 /usr/local/nexus/bin/nexus.vmoptions 文件,主要修改以下几项
-XX:LogFile=/data/nexus/sonatype-work/nexus3/log/jvm.log
-Dkaraf.data=/data/nexus/sonatype-work/nexus3
-Dkaraf.log=/data/nexus/sonatype-work/nexus3/log
-Djava.io.tmpdir=/data/nexus/sonatype-work/nexus3/tmp
# 修改 /usr/local/nexus/bin/nexus 文件
sed -i 's%# INSTALL4J_JAVA_HOME_OVERRIDE=%INSTALL4J_JAVA_HOME_OVERRIDE=/usr/local/java/jdk1.8.0_202%' /usr/local/nexus/bin/nexus注册 nexus 为系统服务
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17cat > /usr/lib/systemd/system/nexus.service <<EOF
[Unit]
Description=nexus service
After=network.target
[Service]
Type=forking
LimitNOFILE=65536
ExecStart=/usr/local/nexus/bin/nexus start
ExecStop=/usr/local/nexus/bin/nexus stop
User=nexus
Restart=on-abort
TimeoutSec=600
[Install]
WantedBy=multi-user.target
EOF启动 nexus 并配置开机启动
1
2systemctl daemon-reload
systemctl enable --now nexus.service查看 nexus 服务运行状态
1
2
3
4
5
6
7
8
9
10
11
12# systemctl status nexus.service
● nexus.service - nexus service
Loaded: loaded (/usr/lib/systemd/system/nexus.service; enabled; vendor preset: disabled)
Active: active (running) since Fri 2021-04-09 10:29:33 CST; 1min 32s ago
Process: 6198 ExecStart=/usr/local/nexus/bin/nexus start (code=exited, status=0/SUCCESS)
Main PID: 6368 (java)
CGroup: /system.slice/nexus.service
└─6368 /usr/local/java/jdk1.8.0_202/bin/java -server -Dinstall4j.jvmDir=/usr/local/java/jdk1.8.0_202 -Dexe4j.moduleName=/usr/local/nexus/bin/nexus -XX:+UnlockDiagnosticVMOptions -Dinstall4j.launcherId...
Apr 09 10:29:33 prometheus.local systemd[1]: Starting nexus service...
Apr 09 10:29:33 prometheus.local nexus[6198]: Starting nexus
Apr 09 10:29:33 prometheus.local systemd[1]: Started nexus service.访问存储库管理器用户界面和资源的 HTTP 端口的默认值为 8081,要更改或更新端口,在
$data-dir/etc/nexus.properties
中找到application-port=8081 行修改即可;这里使用默认的端口访问,如下