一、Nexus介绍
Nexus是Maven仓库管理器,也可以叫Maven的私服。Nexus是一个强大的Maven仓库管理器,它极大地简化了自己内部仓库的维护和外部仓库的访问。利用Nexus你可以只在一个地方就能够完全控制访问和部署在你所维护仓库中的每个Artifact。Nexus是一套“开箱即用”的系统不需要数据库,它使用文件系统加Lucene来组织数据。
Nexus不是Maven的核心概念,它仅仅是一种衍生出来的特殊的Maven仓库。对于Maven来说,仓库只有两种:本地仓库和远程仓库。
Nexus Repository 是以 Java 和 JavaScript 为主,实现的一个包含前端与后台的 Web 服务。 后台方面,它采用 Jetty 作为应用服务器、Karaf 作为 OSGi 容器、OrientDB 作为数据库。 前端方面,它使用Swagger UI 作为框架,是一个单页面 Web App。
另外,它也通过 Resteasy 支持 REST API,可以通过网络进行访问控制。 并且,自行实现了一个插件系统,用插件的方式支持了更多复杂的功能。 比如,Maven、PyPI、Docker 这些支持,都是由插件实现的。 如果希望支持其它方式的代理、缓存、发布,比如 APT,也可以通过插件定制。
二、特点和功能
- 仓库管理: Nexus 提供了一个中心化的仓库来存储软件包、构建制品和依赖项。开发团队可以在这里集中管理所有的构建和依赖项,确保它们的可靠性和一致性。
- 远程
原文链接:https://www.dqzboy.com 代理: Nexus 支持远程仓库代理功能,可以从公共仓库或其他团队的仓库中自动拉取依赖项。这可以提高构建的速度,同时减少对外部资源的依赖。 - 版本控制和标签: Nexus 允许对软件包和构建制品进行版本控制和标签,以便精确追踪不同版本的软件。这有助于管理构建的历史记录和回溯。
- 安全性: Nexus 提供了安全性功能,可以限制对仓库的访问
原文链接:https://www.dqzboy.com ,确保只有授权的人员能够上传和下载构建制品。还可以集成身份验证和授权机制。 - 代理和缓存: Nexus 有助于减少外部仓库的访问频率,通过代理和缓存机制来减少下载时间和网络流量。
- 项目协作: Nexus 可以帮助团队内部协作,共享构建制品和依赖项。团队成员可以通过 Nexus 共享内部构建制品,而不必依赖外部仓库。
- 构建和持续集成集成: Nexus 可以与构建工具(如 Maven、Gradle、Ant)和持续集成服务器(如 Jenkins)集成,实现自动化的构建、发布和部署流程。
- 多种仓库格式支持: Nexus 支持多种仓库格式,包括 Maven 仓库、npm 仓库、Docker 镜像仓库等,适应不同的开发技术栈。
三、Nexus下载
官网地址:https://www.sonatype.com/
下载地址:https://help.sonatype.com/repomanager3/download

- 同时我们也需要安装JDK,点击这里下载Oracle JDK
- 如果Nexus下载不下来,请通过我提供的网盘地址进行下载,版本为3.21.1
四、Nexus安装
1、安装JDK
[root@nexus ~]# mkdir -p /opt/soft/ #存储软件包
[root@nexus ~]# cd /opt/soft/
#安装JDK
[root@nexus soft]# rpm -ivh jdk-8u231-linux-x64.rpm
2、安装Nexus
[root@nexus soft]# mkdir /usr/local/nexus
[root@nexus soft]# tar -zxvf latest-unix.tar.gz -C /usr/local/nexus/
3、启动Nexus
[root@nexus soft]# cd /usr/local/nexus/
- 解压后会有2个文件夹第一个文件夹是核心文件,第二个文件夹用来存储下载下来的jar

- 修改端口,默认端口为8081
[root@nexus nexus]# cd nexus-3.21.1-01/
[root@nexus nexus-3.21.1-01]# cd etc/
[root@nexus etc]# vim nexus-default.properties

- 启动服务
[root@nexus etc]# cd ../bin/
[root@nexus bin]# ./nexus start

- 启动比较慢;如果启动失败请查看日志
- /usr/local/nexus/sonatype-work/nexus3/log/nexus.log

4、配置防火墙
- 默认访问端口8081,上面已经改成了8090,这里防火墙需要放通8090端口
[root@nexus bin]# lsof -i:8090
[root@nexus bin]# firewall-cmd --permanent --zone=public --add-port=8090/tcp
[root@nexus bin]# firewall-cmd –reload
5、访问Nexus
- 至此
原文链接:https://www.dqzboy.com Nexus已经安装部署完成
6、设置系统服务
- 现在我们将Nexus服务由Systemd进行管理
[root@nexus ~]# cd /etc/systemd/system
[root@nexus system]# vim nexus.service
[Unit]
Description=nexus service
After=network.target
[Service]
Type=forking
LimitNOFILE=65536
ExecStart=/usr/local/nexus/nexus-3.21.1-01/bin/nexus start
ExecStop=/usr/local/nexus/nexus-3.21.1-01/bin/nexus stop
User=root
Restart=on-abort
[Install]
WantedBy=multi-user.target
- 停止命令行启动的Nexus,通过systemd启动
[root@nexus system]# /usr/local/nexus/nexus-3.21.1-01/bin/nexus stop
- 通过systemd启动
[root@nexus system]# systemctl daemon-reload
[root@nexus system]# systemctl start nexus
[root@nexus system]# systemctl enable nexus
[root@nexus system]# systemctl status nexus
- 等待一会Nexus完全启动后,浏览器查看Nexus访问页面
五、基于Docker部署Nexus
- 上面通过传统方式安装的nexus,先停止
[root@nexus ~]# systemctl stop nexus
[root@nexus ~]# systemctl disable nexus
1、安装Docker
[root@nexus ~]# wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo
[root@nexus ~]# vim /etc/yum.repos.d/docker-ce.repo
%s@https://download.docker.com/@https://mirrors.tuna.tsinghua.edu.cn/docker-ce/@
[root@nexus ~]# yum repolist
[root@nexus ~]# yum -y install docker-ce
[root@nexus ~]# docker –version
Docker version 19.03.8, build afacb8b
2、配置镜像加速
[root@nexus ~]# mkdir /etc/docker
[root@nexus ~]# vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://9p593175.mirror.aliyuncs.com"]
}
3、启动Docker
[root@nexus ~]# systemctl start docker
[root@nexus ~]# systemctl enable docker
[root@nexus ~]# systemctl status docker
4、安装Docker-compose
[root@nexus ~]# curl -L https://github.com/docker/compose/releases/download/1.25.4/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
[root@nexus ~]# chmod +x /usr/local/bin/docker-compose
[root@nexus ~]# docker-compose -version
docker-compose version 1.25.4, build 8d51620a
5、通过docker-compose启动nexus容器
5.1:创建yaml文件
#创建docker-compose.yaml文件
[root@nexus ~]# mkdir /usr/local/docker
[root@nexus ~]# cd /usr/local/docker
[root@nexus docker]# vi docker-compose.yaml
version: "2"
services:
nexus:
restart: "no"
image: sonatype/nexus3
container_name: nexus
ports:
- 8090:8081
volumes:
- /usr/local/nexus:/nexus-data
#注意:yaml文件缩进必须用空格
参数说明:
- version: 指定docker-compose语法版本,版本不同,支持的docker也不同
- services: 多种服务的根节点
- nexus: 服务名随意起,代表要创建的服务
- restart: 容器的重启策略,有no、always、on-failure、unless-stopped四种可选值。
- image: 容器依据的镜像
- container_name: 容器名
- ports: 端口;这里8090为虚机端口映射至nexus容器的8081端口
- volumes: 数据卷; 指定数据卷,防止每次启动容器,容器里的数据丢失,实现容器和虚拟机数据共享。
5.2:创建数据卷
- 上面yaml指定了数据卷,我们需要在虚拟机上创建对应的目录
[root@nexus docker]# mkdir /usr/local/nexus
#给目录赋予权限
[root@nexus docker]# chmod 777 /usr/local/nexus
5.3:启动Nexus容器
[root@nexus docker]# docker-compose up -d

[root@nexus docker]# docker ps
6、访问Nexus
#启动会比较慢,可以登入到容器中,查看nexus日志
[root@nexus docker]# docker exec -it 1a9ec41f4be7 /bin/bash
bash-4.4$ cd /nexus-data/
bash-4.4$ cd log/
bash-4.4$ tail -f nexus.log






按照教程搭建配置好了