本文由ilanniweb提供友情赞助,首发于烂泥行天下
想要获得更多的文章,可以关注我的微信ilanniweb
jenkins技术分享QQ群:571981257
20190829更新
nexus2 下载地址:
https://help.sonatype.com/repomanager2/download/download-archives—repository-manager-oss
nexus3 下载地址:
https://help.sonatype.com/repomanager3/download/download-archives—repository-manager-3
公司的代码依赖是通过maven进行管理的,而maven的私库我们使用的是nexus,目前使用的是nexus2.11.2版本。
考虑到后续要使用docker虚拟容器,打算把nexus2升级到nexus3.1,nexus3.1是可以作为docker的仓库的,所以就有了本篇文章。
有关nexus2.11.2版本升级到nexus2.14.1很简单,我们只需要把安装nexus2.14.1,修改仓库的存储路径就行了。
如果要把nexus2的仓库升级到nexus3.1,就需要进行单独的配置,而且必须是nexus2.14.1才能迁移到nexus3.1。
PS:本次实验,我们所需要的jdk环境全部是在同一台服务器上。
nexus2使用的是jdk 1.7以上版本,而nexus3使用的是jdk1.8以上版本。
所以我们在配置jdk时,没有把jdk加入到系统的环境变量中,而是根据不同的nexus版本加载不同的jdk版本。
为了更形象的说明仓库的迁移,在此我们以ilanni和ilanniproxy仓库为例。
一、下载并安装nexus2.14.1
nexus2.14.1的安装和配置,需要以下几个步骤。
1.1 配置jdk环境
nexus是基于java语言开发的,所有在安装nexus2.14.1之前,我们需要配置nexus2.14.1运行所需要的jdk环境。
使用如下命令:
wget http://mirrors.linuxeye.com/jdk/jdk-7u80-linux-x64.tar.gz
tar -xf jdk-7u80-linux-x64.tar.gz -C /usr/local/
chown root:root -R /usr/local/jdk1.7.0_80/
jdk1.7安装完毕回,我们可以把它配置到系统的环境变量中,如下:
vim /etc/profile
export JAVA_HOME=/usr/local/jdk1.7.0_80
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
source /etc/profile
java –version
1.2 下载、安装nexus2.14.1
下载和安装nexus2.14.1,使用如下命令:
wget https://sonatype-download.global.ssl.fastly.net/nexus/oss/nexus-2.14.1-01-bundle.tar.gz
tar -xf nexus-2.14.1-01-bundle.tar.gz -C /usr/local/
cd /usr/local/nexus-2.14.1-01/
把nexus2.14.1加入系统服务,使用如下命令:
cp bin/nexus /etc/init.d/nexus2
chkconfig –add nexus2
chkconfig nexus2 on
修改nexus2脚本的配置文件,如下:
vim /etc/init.d/nexus2
NEXUS_HOME=”/usr/local/nexus-2.14.1-01/”
RUN_AS_USER=root
在前面我们介绍了jdk没有加入到系统的环境变量中,所以我们要修改nexus2.14.1启动时要使用的jdk版本,如下:
vim ./bin/jsw/conf/wrapper.conf
wrapper.java.command=/usr/local/jdk1.7.0_80/bin/java
以上修改完毕后,我们再来修改nexus2.14.1监听的端口,以及仓库的存储位置,如下:
vim conf/nexus.properties
application-port=8081
nexus-work=${bundleBasedir}/sonatype-work/nexus
以上就是2.14.1的安装与配置。
1.2 启动nexus2.14.1
现在我们可以启动nexus2.14.1,使用如下命令:
/etc/init.d/nexus2 start
Nexus2.14.1启动完毕后,我们现在可以通过web进行访问nexus2.14.1,如下:
http://192.168.1.231:8081/nexus
通过上图,我们可以很明显的看到nexus2.14.1已经正常启动。
现在我们登录到nexus2.14.1管理后台,nexus管理后台默认的管理员用户和密码是:admin/admin123。
上图说明我们已经正常登录到nexus2.14.1管理后台。
1.3 新建ilanni私库
登录nexus2.14.1管理后台后,我们来创建一个自己的私有仓库ilanni,如下:
Repositories-Add-Hosted Repository
我们只需要填写Repository ID和Repository Name,其他的保持默认即可。
通过上图,我们可以看到ilanni这个nexus2.14.1仓库已经创建完毕。
注意上图中的http://192.168.1.231:8081/nexus/content/repositories/ilanni/连接,该链接地址就是ilanni私库的地址。
1.4 上传jar包和依赖使用
ilanni私库创建完毕后,我们现在来给ilanni仓库手工上传一个maven依赖的jar包epps-merchantsignature-0.0.2.jar。
在上传jar依赖包之前,我们还需要知道该依赖在maven编译文件pom.xml配置中goupid、artifactid和version。如下:
<dependency>
<groupId>com.suning.epps.codec.Digest</groupId>
<artifactId>epps-merchantsignature</artifactId>
<version>0.0.2</version>
</dependency>
有了goupid、artifactid和version与此对应关系,我们现在就可以上传该jar依赖了。如下:
上图中所需要填写的相关信息都是从前面pom.xml文件中获得的。
上图就已经说明jar依赖上传成功。
注意:上图中的xml圈出来的部分,可以很明显的看出这个和我们前面pom.xml文件中配置的该依赖一模一样的。
现在我们是知道了该jar包的goupid、artifactid和version,通过pom.xml文件
但是如果我们不知道goupid、artifactid和version的话,那我们也可以进行自定义goupid、artifactid和version。
下面来一个实例,现在有一个ilanni.jar文件,是代码所依赖的,要把它上传到nexus私库中。
同时我们现在给该jar文件定义的groupid为com.ilanni,定义的artifactid为ilanilog,而定义的version为1.0.0。
上传具体操作如下:
上传完毕后,我们就可以得到能在pom.xml文件中使用的XML内容如下:
<dependency>
<groupId>com.ilanni</groupId>
<artifactId>ilanilog</artifactId>
<version>1.0.0</version>
</dependency>
除此之外,如果我们不使用内网依赖仓库的话,我们也可以使用公共的依赖仓库,在公共依赖仓库中找到自己需要的依赖复制对应xml到自己的pom.xml文件,就能使用该依赖。
来个例子:
现在代码里面需要slf4j-log4j12-1.7.21.jar这个jar包,那么我们就可以从maven官网仓库获取,如下:
http://mvnrepository.com/artifact/org.slf4j/slf4j-log4j12/1.7.21
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.21</version>
</dependency>
现在只需要把XML内容复制到自己的pom.xml文件中,就可以使用该依赖了。
1.5 新建代理仓库ilanniproxy
在平时使用过程中,我们使用最多的还是代理远程的maven仓库,这样可以节省公司网络带宽,所以在此我们新建一个代理jenkins仓库的maven仓库ilanniproxy。
jenkins仓库的地址是:
http://repo.jenkins-ci.org/public/
现在我们来新建ilanniproxy仓库,如下:
Repository ID和Repository Name可以进行自定义,Remote Storage Location填写的是需要代理的远程maven仓库,在此填写的是http://repo.jenkins-ci.org/public/。
ilanniproxy仓库创建完毕后,我们就可以看到ilanniproxy仓库连接地址:
http://192.168.1.231:8081/nexus/content/repositories/ilanniproxy/
目前ilanniproxy仓库是空的,我们通过maven进行编译构建时,ilanniproxy仓库才会去http://repo.jenkins-ci.org/public/仓库下载相关依赖。如下:
通过上图,我们可以看明显的看到目前ilanniproxy仓库,已经有相关的依赖了。
为了下面验证ilanniproxy仓库的完整性,我们在此记录wagon-gitsite-0.3.5.jar依赖。
1.6 配置Upgrade:Agent
Nexus2.14.1要进行仓库迁移的话,需要我们配置Upgrade:Agent,Upgrade:Agent的配置比较简单,如下:
上图中的Access Token非常重要,在此我们配置的是123456。
上图是我们配置好了Upgrade:Agent,要把nexus2.14.1仓库迁移到nexus3.1,需要我们安装和配置nexus3.1。
下面开始介绍有关nexus3.1相关的知识点。
二、下载并安装nexus3.1
nexus3.1的安装和配置,需要以下几个步骤。
2.1 配置jdk环境
nexus3.1必须使用jdk1.8以上版本,下面安装和配置jdk。如下:
wget http://mirrors.linuxeye.com/jdk/jdk-8u92-linux-x64.tar.gz
tar -xf jdk-8u92-linux-x64.tar.gz -C /usr/local/
chown root:root -R /usr/local/jdk1.8.0_92/
2.2 下载、安装nexus3.1
下载和安装nexus3.1,使用如下命令:
wget https://sonatype-download.global.ssl.fastly.net/nexus/3/nexus-3.1.0-04-unix.tar.gz
tar -xf nexus-3.1.0-04-unix.tar.gz -C /usr/local/
cd /usr/local/nexus-3.1.0-04
修改运行nexus3.1所使用的用户,如下:
vim bin/nexus.rc
run_as_user=”root”
把nexus3.1加入到系统服务,如下:
ln -s /usr/local/nexus-3.1.0-04/bin/nexus /etc/init.d/nexus3
chkconfig –add nexus3
chkconfig nexus3 on
修改nexus3.1启动时要使用的jdk版本,如下:
vim bin/nexus
INSTALL4J_JAVA_HOME_OVERRIDE=/usr/local/jdk1.8.0_92
修改nexus3.1监听的端口,在此我们修改为8282端口,如下:
vim etc/nexus-default.properties
application-port=8282
修改nexus3.1数据以及相关日志的存储位置,如下:
vim bin/nexus.vmoptions
-XX:LogFile=./sonatype-work/nexus3/log/jvm.log
-Dkaraf.data=./sonatype-work/nexus3
-Djava.io.tmpdir=./sonatype-work/nexus3/tmp
2.2 启动nexus3.1
现在我们可以启动nexus3.1,使用如下命令:
/etc/init.d/nexus3 start
Nexus3.1启动后,我们现在可以通过web进行访问,如下:
http://192.168.1.231:8282
通过上图,我们可以很明显的看到nexus3.1已经正常启动。
现在我们登录到nexus3.1管理后台,管理员用户和密码是:admin/admin123。
上图说明我们已经正常登录到nexus3.1管理后台。
2.3 配置Upgrade
要把nexus2.14.1仓库迁移到Nexus3.1,还需要我们在nexus3.1上开启Upgrade功能,如下:
到此nexus3.1的Upgrade功能,开启完毕。
三、迁移、验证ilanni和ilanniproxy仓库
Nexus2.14.1和nexus3.1各自配置完毕后,我们现在开始迁移nexus2.14.1上的ilanni和ilanniproxy仓库。
3.1 迁移操作
仓库迁移操作是在nexus3.1的web界面完成的,具体操作如下:
上图中的url填写的是nexus2.14.1的web访问地址,Access Token是nexus2.14.1的Upgrade:Agent中配置的是123456。
下面基本就可以一路next就行了。
上图中,我们迁移仓库只选择为ilanni和ilanniproxy。
上图是要迁移的相关依赖。
这个过程会有花费点时间,需要耐心等待一下。
上图说明已经仓库已经迁移完毕,下面我们来验证这两个仓库的完整性。
3.2 验证ilanni私库
仓库迁移完毕后,我们现在来验证ilanni这个私库,如下:
通过上图,我们可以很明显的看出ilanni和ilanniproxy仓库已经迁移过来。下面我们要验证下仓库的完整性。Ilanni仓库我们以ilanni.jar这个依赖为例,如下:
通过上图我们可以很明显的看出,ilanni仓库里面的ilanni.jar依赖已经迁移过来。
下面我们再来看看ilanniproxy仓库。
3.3 验证ilanniproxy
上一章节我们已经验证ilanni仓库的迁移完整性,这次我们再来验证ilanniproxy仓库,如下:
通过以上几个图片ilanniproxy仓库也已经迁移过来了。
3.4 启用匿名访问权限
Nexus3.1仓库迁移完毕后,匿名用户是无法访问仓库功能,为了后续访问的方便,我们开启匿名访问功能。如下:
未经允许不得转载:烂泥行天下 » 烂泥:maven私库nexus2.14.1迁移到nexus3.1(20190829更新)