nexus保姆级教程,搭建maven私服、docker私服、yum私服

1.安装Nexus

普通安装

Docker安装

2.初始化

进入nexus页面

查看密码

删除自带仓库

创建仓库

3.搭建maven私服

使用proxy仓库

使用hosted仓库

使用group仓库

4.搭建Docker私服

使用proxy仓库

使用hosted仓库

使用group仓库

5.搭建yum私服

6.数据备份和恢复

数据备份

数据恢复


1.安装Nexus

普通安装

环境要求

安装好jdk8,并且配置了JAVA_HOME环境变量

注意:只能是jdk8,太新或太旧版本的jdk是不支持的

下载nexus

下载地址:https://www.sonatype.com/download-nexus-repo-oss

Linux系统选择unix版本即可

上传到Linux后解压

tar -zxf nexus-3.42.0-01-unix.tar.gz

启动

./nexus-3.42.0-01/bin/nexus start

出现此界面说明启动成功

Docker安装

拉取镜像

docker pull sonatype/nexus3:3.42.0

启动容器

docker run -d --network=host --name nexus sonatype/nexus3:3.42.0

这里使用host网络的原因,是因为一会儿docker私服要开好几个端口,用host方便些,毕竟容器创建之后要再修改端口映射就比较麻烦了

2.初始化

进入nexus页面

输入http://ip:8081即可看到nexus页面

如果没有出现不要着急,等待个1分钟左右即可

如果无法访问,请检查防火墙和安全组是否放行了8081端口

查看密码

点击右上角的登录

第一次进入的时候会提示密码文件的位置

如果是docker安装,则需要进入容器

docker exec -it nexus /bin/bash

查看密码

cat /nexus-data/admin.password

 复制的时候要注意,后面的bash-4.4$不要复制到

登录

    帐号是admin

    密码是刚刚查看的内容

初始化密码

我这里用123456

这里提示是否允许匿名访问,选择Enable就好了

点finish就可以了

删除自带仓库

登录之后可以看到这里有很多自带的仓库

全部删了也没关系,我们一会儿要重新创建

干干净净,看了就很舒服

创建仓库

点击左上角的创建按钮

可以看到如下界面

每种仓库都有3种模式

  • proxy: 可以代理其它远程仓库,比如阿里云仓库
  • hosted: 我们可以把自己jar包或者项目,发布到该仓库
  • group: 如果我们同时想代理多个仓库,比如同时想代理hosted和proxy,就可以使用这个,注意:group仓库是不能用来发布的,只能用来代理

下面我会详细说明使用方法

3.搭建maven私服

使用proxy仓库

创建的时候选择maven2(proxy)

输入仓库名称和代理的地址就好了

我们这里先代理阿里云的公共仓库

阿里云代理地址:http://maven.aliyun.com/nexus/content/groups/public/

创建后点击copy可以查看该仓库的url

在pom.xml中添加

<repositories>
    <repository>
        <!--这个随便填-->
        <id>nexus</id>
        <!--这个是刚刚复制的url-->
        <url>http://192.168.100.3:8081/repository/aliyun/</url>
    </repository>
</repositories>

检查.m2下的setting.xml

如果之前有配置过镜像加速,要在*后面加上,!nexus,没有则不用管它,如果没有settings.xml这个文件也不用管它

否则会优先使用settings.xml里面的镜像地址

测试

随便拿个依赖测试一下

<dependency>
	<groupId>mysql</groupId>
	<artifactId>mysql-connector-java</artifactId>
	<version>8.0.30</version>
</dependency>

如果本地仓库有该依赖,要先删除本地的依赖,否则不会使用远程仓库的依赖

点击刷新就好了

去仓库看下

如果出现依赖就说明成功了

maven3.8.x版本问题

maven3.8.x版本会出现以下错误

官网的解释:从3.8.1版本开始,不建议使用http请求,建议使用https

解决办法:到maven的安装目录/conf/settings.xml中(注意,不是.m2下的settings.xml),注释以下代码

使用hosted仓库

创建的时候选择maven2(hosted)

输入 仓库名称,选择允许发布,其它保持默认就行

创建好之后,复制url

在pom.xml文件中粘贴

<distributionManagement>
    <repository>
        <!--这里的仓库id,要和settings.xml里面server标签里的id一致-->
        <id>nexus</id>
        <!--刚刚复制的hosted仓库的url-->
        <url>http://192.168.100.3:8081/repository/maven-hosted/</url>
    </repository>
</distributionManagement>

在settings.xml文件中配置nexus的用户名和密码

<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
	<servers>
		<server>
			<!--这里的id要和pom文件里distributionManagement的id一致-->
			<id>nexus</id>
			<!--nexus登录的用户名和密码-->
			<username>admin</username>
			<password>123456</password>
		</server>
	</servers>
</settings>

settings.xml一般在C:\Users\Administrator\.m2\文件夹下,如果没有的话可以新建一个,把以上代码粘贴进去

双击deploy发布到仓库

发布异常处理

401错误处理

解决办法:检查用户名或密码是否正确

400错误处理

解决办法:在version中去掉-SNAPSHOT

因为我们当时建仓库的时候,选择的是Release发布版,所以无法使用快照版的版本

到仓库查看是否发布成功

如果有显示刚刚的依赖则发布成功

发布jar包

刚刚的步骤是在编译器里面操作的,如果只有jar包,想要发布上去,可以用以下命令,该命令需要把maven安装目录下的bin目录配置到环境变量

mvn deploy:deploy-file -Dfile=ojdbc6.jar -DgroupId=com.oracle -DartifactId=ojdbc -Dversion=6 -DrepositoryId=upload -DgeneratePom=true -Durl=http://192.168.100.3:8081/repository/maven-hosted/

如果出现400错误,请检查仓库的版本是不是Release

使用group仓库

如果想同时引用多个仓库的话,一般是这么写

<repositories>
	<repository>
		<id>nexus</id>
		<url>http://192.168.100.3:8081/repository/maven-proxy/</url>
	</repository>
	<repository>
		<id>nexus</id>
		<url>http://192.168.100.3:8081/repository/maven-hosted/</url>
	</repository>
</repositories>

如果仓库很多的话,那么repository标签就会非常多,这时就需要group把他们整合到一起

新建仓库,选择maven2(group)

输入名称,并且把要代理的仓库添加进来

pom.xml中只需要引入group仓库的url就可以同时代理多个仓库了

<repositories>
	<repository>
		<id>nexus</id>
		<url>http://192.168.100.3:8081/repository/maven-group/</url>
	</repository>
</repositories>

4.搭建Docker私服

使用proxy仓库

新建仓库,选择docker(proxy)

填上名称、端口和代理地址

代理地址:

https://registry-1.docker.io

连接仓库

 编辑配置文件

vim /etc/docker/daemon.json

配置私服地址

{
    "insecure-registries":  ["http://192.168.100.3:8082"]
}

注意:这里的8082端口是创建仓库时填的端口,不是copy的端口

重新加载

systemctl daemon-reload
systemctl restart docker

进行登录

docker login 192.168.100.3:8082

输入用户名和密码即可

也可以直接一句话登录

docker login -u admin -p 123456 192.168.100.3:8082

登录成功如图所示

如果想要退出登录,直接docker logout即可

使用私服拉取镜像

docker pull 192.168.100.3:8082/nginx:1.22.0

注意:镜像前面要加上私服的地址,这样才会从私服去拉取镜像

查看已拉取的镜像

docker images

能拉取就说明搭建成功了

使用hosted仓库

新建仓库,选择docker(hosted)

填上名称、端口

修改配置文件

vim /etc/docker/daemon.json

把http://192.168.100.3:8083添加进去

{
    "insecure-registries":  [
        "http://192.168.100.3:8082",
        "http://192.168.100.3:8083"
    ]
}

重新加载配置文件

systemctl daemon-reload
systemctl restart docker

进行登录

docker login -u admin -p 123456 192.168.100.3:8083

登录成功如图所示

我这里有一个自己的镜像

给镜像打标签,相当于重命名你的镜像

docker tag test:1.0 192.168.100.3:8083/test:1.0

注意:要以自己的仓库地址开头,否则一会儿会push不上去

打完标签之后就能看到打了标签后的镜像

然后把打标签后的镜像push上去

docker push 192.168.100.3:8083/test:1.0

然后再到hosted仓库看一下

如果有出现你的镜像,就说明发布成功了

使用group仓库

新建仓库,选择docker(group)

输入名称和端口

然后把proxy和hosted添加进来

 创建成功之后,你可以在group仓库里同时看到proxy和hosted的镜像

编辑配置文件

vim /etc/docker/daemon.json

把http://192.168.100.3:8084添加进去

{
    "insecure-registries":  [
        "http://192.168.100.3:8082",
        "http://192.168.100.3:8083",
        "http://192.168.100.3:8084"
    ]
}

刷新配置文件并重启docker

systemctl daemon-reload
systemctl restart docker

登录

docker login -u admin -p 123456 192.168.100.3:8084

我们先清除本地多余的镜像,现在没有任何镜像了

先拉取官方镜像试试

docker pull 192.168.100.3:8084/nginx:1.22.1

然后在拉取刚刚push的镜像试试

docker pull 192.168.100.3:8084/test:1.0

拉取成功如图所示

5.搭建yum私服

一般需要用到yum私服的,基本都是centos6,或者内网的情况,都使用不了yum,这时候就需要用到yum私服

新建仓库,选择yum(proxy)

填上名称和代理的地址

CentOS 6使用以下地址:

https://mirrors.aliyun.com/centos-vault

CentOS 7使用以下地址:

https://mirrors.aliyun.com/centos

点击右边的copy可以看到链接

进入到yum配置文件目录下

cd /etc/yum.repos.d

可以看到目录下有这几个文件,有些人可能会比较多,不过这都没关系

先把Base备份一下

mv CentOS-Base.repo CentOS-Base.repo.bak

然后重新编辑一份

vim CentOS-Base.repo

把以下粘贴进去,将http://192.168.100.3:8081/repository/yum-proxy/替换成自己的url地址

CentOS 6使用以下配置

[base]
name=CentOS-$releasever - Base
baseurl=http://192.168.100.3:8081/repository/yum-proxy/6.0/os/$basearch/
gpgcheck=1
gpgkey=http://192.168.100.3:8081/repository/yum-proxy/RPM-GPG-KEY-CentOS-6

[updates]
name=CentOS-6.0 - Updates
baseurl=http://192.168.100.3:8081/repository/yum-proxy/6.0/updates/$basearch/
gpgcheck=1
gpgkey=http://192.168.100.3:8081/repository/yum-proxy/RPM-GPG-KEY-CentOS-6

[extras]
name=CentOS-6.0 - Extras
baseurl=http://192.168.100.3:8081/repository/yum-proxy/6.0/extras/$basearch/
gpgcheck=1
gpgkey=http://192.168.100.3:8081/repository/yum-proxy/RPM-GPG-KEY-CentOS-6

CentOS 7使用以下配置

[base]
name=CentOS-$releasever - Base
baseurl=http://192.168.100.3:8081/repository/yum-proxy/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://192.168.100.3:8081/repository/yum-proxy/RPM-GPG-KEY-CentOS-7

[updates]
name=CentOS-$releasever - Updates
baseurl=http://192.168.100.3:8081/repository/yum-proxy/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://192.168.100.3:8081/repository/yum-proxy/RPM-GPG-KEY-CentOS-7

[extras]
name=CentOS-$releasever - Extras
baseurl=http://192.168.100.3:8081/repository/yum-proxy/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=http://192.168.100.3:8081/repository/yum-proxy/RPM-GPG-KEY-CentOS-7

刷新yum源

yum clean all && yum makecache

没报错就说明可以了

有些人可能会出现这个错误

解决办法:编辑CentOS-Media.repo文件

vim CentOS-Media.repo

enabled=1改成enabled=0

再刷新一下

yum clean all && yum makecache

现在就可以正常使用yum了

yum install -y tree

6.数据备份和恢复

数据备份

将容器下的nexus-data文件夹拷贝出来并压缩

docker cp nexus:/nexus-data .
zip -rv nexus-data.zip nexus-data

nexus-data.zip就是备份的文件

数据恢复

拉取同一个版本的nexus镜像,不同版本之间可能会存在容器无法启动问题

docker pull sonatype/nexus3:3.42.0

3.42.0要替换成你之前nexus的版本

准备之前的备份文件

解压备份文件

unzip nexus-data.zip

启动容器,把nexus-data挂载到容器里面

docker run -d --name nexus --network=host -u root -v /root/nexus-data:/nexus-data sonatype/nexus3:3.42.0

查看以下容器的运行状态

docker ps -a

没有退出就说明恢复成功了

等待1分钟左右启动,然后就可以正常使用了

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值