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分钟左右启动,然后就可以正常使用了