介绍
Nexus 是一个强大的 Maven 和其它仓库的管理器,它极大地简化了自己内部仓库的维护和外部仓库的访问
Nexus官网:https://www.sonatype.com/
官方下载:https://help.sonatype.com/repomanager3/download
安装说明:https://help.sonatype.com/en/installation-methods.html
部署
-----------------------------------安装JDK
[root@wenzi ~]#apt -y install openjdk-8-jdk
[root@wenzi ~]#java -version
openjdk version "1.8.0_392"
OpenJDK Runtime Environment (build 1.8.0_392-8u392-ga-1~22.04-b08)
OpenJDK 64-Bit Server VM (build 25.392-b08, mixed mode)
[root@wenzi ~]#ls
nexus-3.54.1-01-unix.tar.gz snap sysinit.sh
[root@wenzi ~]#tar -xf nexus-3.54.1-01-unix.tar.gz -C /usr/local/
[root@wenzi ~]#ln -s /usr/local/nexus-3.54.1-01 /usr/local/nexus
[root@wenzi ~]#ln -s /usr/local/nexus/bin/nexus /usr/bin/
#指定运行身份
[root@wenzi ~]#vim /usr/local/nexus/bin/nexus.rc
run_as_user="root"
#查看配置文件,可修改端口等信息
[root@wenzi ~]#cat /usr/local/nexus/etc/nexus-default.properties
## DO NOT EDIT - CUSTOMIZATIONS BELONG IN $data-dir/etc/nexus.properties
##
# Jetty section
application-port=8081
application-host=0.0.0.0
nexus-args=${jetty.etc}/jetty.xml,${jetty.etc}/jetty-http.xml,${jetty.etc}/jetty-requestlog.xml
nexus-context-path=/
# Nexus section
nexus-edition=nexus-pro-edition
nexus-features=\
nexus-pro-feature
nexus.hazelcast.discovery.isEnabled=true
#查看JVM配置文件,默认最少4G内存才能启动
[root@wenzi ~]#cat /usr/local/nexus/bin/nexus.vmoptions
-Xms2703m
-Xmx2703m
-XX:MaxDirectMemorySize=2703m
...
#修改nexus使用的内存为512M
[root@wenzi ~]#head -n 3 /usr/local/nexus/bin/nexus.vmoptions
-Xms512m
-Xmx512m
#启动
nexus start
#状态
nexus status
#停止
nexus stop
#配置service文件
[root@wenzi ~]#systemctl cat nexus.service
# /lib/systemd/system/nexus.service
[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=root
#User=nexus
Restart=on-abort
[Install]
WantedBy=multi-user.target
#查看端口
[root@wenzi ~]#ss -tnlp | grep java
LISTEN 0 50 0.0.0.0:8081 0.0.0.0:* users:(("java",pid=5587,fd=756))
LISTEN 0 1 127.0.0.1:39963 0.0.0.0:* users:(("java",pid=5587,fd=125))
初始化
浏览器访问 http://192.168.28.60:8081
默认打开无法管理,需要点击右上角Sign In登录才能进行管理
#查看默认登录密码
[root@wenzi ~]#cat /usr/local/sonatype-work/nexus3/admin.password
d1d8a673-0e5f-4c8f-a7c6-bcc9b4de774e
然后需要重设密码,选择是否开启匿名访问,生产建议打开匿名访问功能,无需登录即可下载资源。
验证默认仓库
Hosted:本地仓库,通常我们会部署自己的构件到这一类型的仓库,比如公司的第三方库
Proxy:代理仓库,它们被用来代理远程的公共仓库,如maven 中央仓库(官方仓库)
Group:仓库组,用来合并多个 hosted/proxy 仓库,当你的项目希望在多个repository 使用资源时就不需要多次引用了,只需要引用一个 group 即可
优化Maven仓库配置
默认仓库maven-central使用国外仓库地址,可修改为如下的国内镜像地址进行加速
参考 https://developer.aliyun.com/mvn/guide
在Maven配置文件指定Nexus服务器地址,后续进行Java源码编译可以从Nexus仓库下载相关包
[root@ubuntu2204 ~]#vim /etc/maven/settings.xml
......
<mirror>
<id>my-nexus</id>
<mirrorOf>*</mirrorOf>
<name>My-Nexus</name>
<url>http://nexus.wang.org:8081/repository/maven-central/</url>
</mirror>
</mirrors>
构建私有yum仓库
通过 Nexus 构建公司内网Yum仓库,代理至阿里云镜像安装包
创建Blob Store
创建自定义存储空间路径,存放仓库数据,注意空间一定要够大。此目录下的子目录在Nexus配置后会自动创建。
[root@wenzi ~]#mkdir -p /data/blobs
Type:S3即阿里云、腾讯云等云上的对象存储;Name要见名知意;Path为之前创建的存储路径;Soft Quota是否启用空间限制
创建Repositories
此地址即为其它主机使用的baseurl=http://192.168.28.60:8081/repository/zabbix-rocky8/
使用
在Rocky8上配置使用仓库
[root@wenzi yum.repos.d]$cat zabbix-rocky8.repo
[zabbix-nexus]
name=zabbix-nexus
baseurl=http://192.168.28.60:8081/repository/zabbix-rocky8/
gpgcheck=0
[root@wenzi yum.repos.d]$dnf repolist
仓库 id 仓库名称
appstream Rocky Linux 8 - AppStream
baseos Rocky Linux 8 - BaseOS
extras Rocky Linux 8 - Extras
zabbix-nexus zabbix-nexus
[root@wenzi ~]$dnf -y install zabbix-agent
在Nexus的仓库中可看到已有从远程镜像源拉取的软件包
构建私有apt仓库
创建Blob Store
创建Repositories
此处Distribution值发行版本,2204对应的是jammy,不同版本一一样,通过cat /etc/os-release可看到
使用
在ubuntu2204上修改vim /etc/apt/sources.list,将原本的地址替换为上述地址。
vim中进入底部命令行模式
:1,$s#原地址#新地址#
[root@wenzi blobs]#apt update
Get:1 http://192.168.28.60:8081/repository/ubuntu2204-apt jammy InRelease [270 kB]
Get:2 http://192.168.28.60:8081/repository/ubuntu2204-apt jammy-updates InRelease [119 kB]
Get:3 http://192.168.28.60:8081/repository/ubuntu2204-apt jammy-backports InRelease [109 kB]
....
#安装一个软件验证
[root@wenzi blobs]#apt -y install shellcheck
在Nexus的仓库中可看到已有从远程镜像源拉取的软件包
最后在Nexus服务上查看
[root@wenzi blobs]#pwd
/data/blobs
#两个软件仓库
[root@wenzi blobs]#ls
ubuntu2204-apt zabbix-rocky8