一起学习微服务和容器4-Maven Repo Center (SonaType Nexus) 安装

简述

我们采用Nexus OSS作为私有的Maven仓库中心。OSS版本已足够使用,如果是企业的话,可以购买PRO版本。如果是单兵作战,此章节非必须,如果项目比较大,服务比较多,建议构建下私有仓库中心。

环境准备

Host List

IP Address Hosts Disk Comment
192.168.0.25 nexus 1TB

OS

我们采用CentOS作为宿主机操作系统,版本请升级为最新稳定版7.6。(CentOS7即可,建议升级到最新稳定版7.6)
升级方式,请参考本人的另一篇文章:https://www.jianshu.com/p/3e3bc1f51332

并将内核升级到最新稳定版本4.20.

[root@localhost ~]# uname -sr
Linux 4.20.0-1.el7.elrepo.x86_64
[root@localhost ~]# 
[root@localhost ~]# 

安装步骤

下载Nexus OSS安装包。

从Nexus官网下载即可,个人偏好,还是最新稳定版。
https://www.sonatype.com/download-oss-sonatype

image.png

安装 Nexus

前置条件

Nexus由于依赖于Java环境,所以我们还是需要先把JDK安装下,鉴于Nexsus官网推荐使用Oracle JDK,我们还是需要把Oracle的JDK给安装下。
访问Oracle官网,找到JDK的下载路径,鉴于后续版本Oracle的JDK可能会有各种商业条款限制,还是推荐使用1.8的版本。

image.png

下载Oracle JDK8

[root@localhost ~]# wget --header "Cookie: oraclelicense=accept-securebackup-cookie"  https://download.oracle.com/otn-pub/java/jdk/8u201-b09/42970487e3af4f5aa5bca3f542482c60/jdk-8u201-linux-x64.rpm
--2019-02-01 10:32:34--  https://download.oracle.com/otn-pub/java/jdk/8u201-b09/42970487e3af4f5aa5bca3f542482c60/jdk-8u201-linux-x64.rpm
Resolving download.oracle.com (download.oracle.com)... 23.58.216.130
Connecting to download.oracle.com (download.oracle.com)|23.58.216.130|:443... connected.
HTTP request sent, awaiting response... 302 Moved Temporarily
Location: https://edelivery.oracle.com/otn-pub/java/jdk/8u201-b09/42970487e3af4f5aa5bca3f542482c60/jdk-8u201-linux-x64.rpm [following]
--2019-02-01 10:32:35--  https://edelivery.oracle.com/otn-pub/java/jdk/8u201-b09/42970487e3af4f5aa5bca3f542482c60/jdk-8u201-linux-x64.rpm
Resolving edelivery.oracle.com (edelivery.oracle.com)... 23.10.0.83, 2600:1417:a000:29f::366, 2600:1417:a000:288::366
Connecting to edelivery.oracle.com (edelivery.oracle.com)|23.10.0.83|:443... connected.
HTTP request sent, awaiting response... 302 Moved Temporarily
Location: http://download.oracle.com/otn-pub/java/jdk/8u201-b09/42970487e3af4f5aa5bca3f542482c60/jdk-8u201-linux-x64.rpm?AuthParam=1548988480_9c35a33007884935cdd41ab3dcf556c0 [following]
--2019-02-01 10:32:40--  http://download.oracle.com/otn-pub/java/jdk/8u201-b09/42970487e3af4f5aa5bca3f542482c60/jdk-8u201-linux-x64.rpm?AuthParam=1548988480_9c35a33007884935cdd41ab3dcf556c0
Connecting to download.oracle.com (download.oracle.com)|23.58.216.130|:80... connected.
HTTP request sent, awaiting response... 302 Found
Location: http://101.96.8.157/download.oracle.com/otn-pub/java/jdk/8u201-b09/42970487e3af4f5aa5bca3f542482c60/jdk-8u201-linux-x64.rpm?AuthParam=1548988480_9c35a33007884935cdd41ab3dcf556c0 [following]
--2019-02-01 10:32:41--  http://101.96.8.157/download.oracle.com/otn-pub/java/jdk/8u201-b09/42970487e3af4f5aa5bca3f542482c60/jdk-8u201-linux-x64.rpm?AuthParam=1548988480_9c35a33007884935cdd41ab3dcf556c0
Connecting to 101.96.8.157:80... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: https://download.oracle.com/otn-pub/java/jdk/8u201-b09/42970487e3af4f5aa5bca3f542482c60/jdk-8u201-linux-x64.rpm?AuthParam=1548988480_9c35a33007884935cdd41ab3dcf556c0 [following]
--2019-02-01 10:32:41--  https://download.oracle.com/otn-pub/java/jdk/8u201-b09/42970487e3af4f5aa5bca3f542482c60/jdk-8u201-linux-x64.rpm?AuthParam=1548988480_9c35a33007884935cdd41ab3dcf556c0
Connecting to download.oracle.com (download.oracle.com)|23.58.216.130|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 176209195 (168M) [application/x-redhat-package-manager]
Saving to: ‘jdk-8u201-linux-x64.rpm’

100%[====================================================================>] 176,209,195 1.49MB/s   in 98s    

2019-02-01 10:34:19 (1.72 MB/s) - ‘jdk-8u201-linux-x64.rpm’ saved [176209195/176209195]

[root@localhost ~]# 

安装Oracle JDK8

rpm 安装 Oracle JDK8.

[root@localhost ~]# rpm -ivh jdk-8u201-linux-x64.rpm 
warning: jdk-8u201-linux-x64.rpm: Header V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:jdk1.8-2000:1.8.0_201-fcs        ################################# [100%]
Unpacking JAR files...
        tools.jar...
        plugin.jar...
        javaws.jar...
        deploy.jar...
        rt.jar...
        jsse.jar...
        charsets.jar...
        localedata.jar...
[root@localhost ~]# 

解压安装Nexus.

我们在/usr/local下创建nexus的安装目录。

[root@localhost ~]# mkdir -p /usr/local/nexus
[root@localhost ~]# 
[root@localhost ~]# tar -zxvf nexus-3.15.2-01-unix.tar.gz -C /usr/local/nexus
nexus-3.15.2-01/.install4j/9d17dc87.lprop
nexus-3.15.2-01/.install4j/MessagesDefault

配置Root启动

进入到nexus的安装目录,bin目录下,修改nexus.rc.

[root@localhost bin]# pwd
/usr/local/nexus/nexus-3.15.2-01/bin
[root@localhost bin]# vi nexus.rc 
run_as_user="root"

修改JDK的Home

找到刚才安装的Oracle JDK的路径。如果是RPM 安装,默认应该是:/usr/java/jdk1.8.0_xxxxx.

[root@localhost bin]# vi nexus
#!/bin/sh
# chkconfig:         2345 75 15
......

# Uncomment the following line to override the JVM search sequence
INSTALL4J_JAVA_HOME_OVERRIDE=/usr/java/jdk1.8.0_102
# Uncomment the following line to add additional VM parameters
# INSTALL4J_ADD_VM_PARAMS=
......

修改监听端口

Nexus默认的端口为8081,如果需要更改,可以通过如下文件调整。

[root@localhost ~]# vi /usr/local/nexus/nexus-3.15.2-01/etc/nexus-default.properties
......
# Jetty section
application-port=9881
application-host=0.0.0.0
......

修改文件存储路径

一般情况下,nexus会把文件存放在安装路径中,而我们的数据盘一般都是和应用盘分处不同的盘符中,故修改一下。视自己情况而定,亦可不做变动。
注意下,本文中,修改了三个部分:

  • LOG日志,请注意日志更换到/var/log下,nexus不会自动创建目录,需要自己在/var/log下创建nexus3目录,否则将不会有日志打出。
  • Dkaraf.data。
  • Djava.io.tmpdir。
[root@localhost ~]# vi /usr/local/nexus/nexus-3.15.2-01/bin/nexus.vmoptions
-Xms1200M
-Xmx1200M
-XX:MaxDirectMemorySize=2G
-XX:+UnlockDiagnosticVMOptions
-XX:+UnsyncloadClass
-XX:+LogVMOutput
-XX:LogFile=/var/log/nexus3/jvm.log
-XX:-OmitStackTraceInFastThrow
-Djava.net.preferIPv4Stack=true
-Dkaraf.home=.
-Dkaraf.base=.
-Dkaraf.etc=etc/karaf
-Djava.util.logging.config.file=etc/karaf/java.util.logging.properties
-Dkaraf.data=/home/nexus/data/sonatype-work/nexus3
-Djava.io.tmpdir=/home/nexus/data/sonatype-work/nexus3/tmp
-Dkaraf.startLocalConsole=false

配置Service启动

[root@localhost ~]# vi /usr/lib/systemd/system/nexus.service
[Unit] 
Description = nexus service 
After = network.target 

[Service] 
Type = forking 
LimitNOFILE = 65536 
ExecStart = /usr/local/nexus/nexus-3.15.2-01/bin/nexus start 
ExecReload= /usr/local/nexus/nexus-3.15.2-01/bin/nexus restart
ExecStop =  /usr/local/nexus/nexus-3.15.2-01/bin/nexus stop  
Restart = on- abort 

[Install] 
WantedBy = multi-user.target

加入开机自启动

[root@localhost ~]# systemctl enable nexus
Created symlink from /etc/systemd/system/multi-user.target.wants/nexus.service to /usr/lib/systemd/system/nexus.service.
[root@localhost ~]# 

尝试启动Nexus

重新装载下系统配置参数。

[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# 

启动Nexus。

[root@localhost ~]# systemctl restart nexus
[root@localhost ~]# 

检测Nexus启动状态

检测Nexus端口

[root@localhost ~]# netstat -an|grep 9881
tcp        0      0 0.0.0.0:9881            0.0.0.0:*               LISTEN     
[root@localhost ~]# 

防火墙放行

[root@localhost ~]# firewall-cmd --zone=public --add-port=9881/tcp --permanent
success
[root@localhost ~]# 
[root@localhost ~]# firewall-cmd --reload
success
[root@localhost ~]# 

更新 nexus 索引

在nexus目录创建plugin目录用来存放nexus需要更新的索引。

http://repo.maven.apache.org/maven2/.index/下载
nexus-maven-repository-index.gz
nexus-maven-repository-index.properties

[root@localhost ~]# cd /home
[root@localhost home]# cd nexus/
[root@localhost nexus]# ls -al
total 0
drwxr-xr-x. 3 root root 17 Feb  1 11:29 .
drwxr-xr-x. 4 root root 31 Feb  1 11:29 ..
drwxr-xr-x. 3 root root 34 Feb  1 11:34 data
[root@localhost nexus]# mkdir plugin
[root@localhost nexus]# 
[root@localhost nexus]# cd plugin/
[root@localhost plugin]# wget http://repo.maven.apache.org/maven2/.index/nexus-maven-repository-index.gz
--2019-02-01 11:47:53--  http://repo.maven.apache.org/maven2/.index/nexus-maven-repository-index.gz
Resolving repo.maven.apache.org (repo.maven.apache.org)... 151.101.40.215
Connecting to repo.maven.apache.org (repo.maven.apache.org)|151.101.40.215|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 615207556 (587M) [application/x-gzip]
Saving to: ‘nexus-maven-repository-index.gz’
100%[====================================================================>] 615,207,556  330KB/s   in 41m 44s

2019-02-01 12:29:48 (240 KB/s) - ‘nexus-maven-repository-index.gz’ saved [615207556/615207556]

[root@localhost plugin]# 
[root@localhost plugin]# wget http://repo.maven.apache.org/maven2/.index/nexus-maven-repository-index.properties
--2019-02-01 11:51:16--  http://repo.maven.apache.org/maven2/.index/nexus-maven-repository-index.properties
Resolving repo.maven.apache.org (repo.maven.apache.org)... 151.101.24.215
Connecting to repo.maven.apache.org (repo.maven.apache.org)|151.101.24.215|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1130 (1.1K) [text/plain]
Saving to: ‘nexus-maven-repository-index.properties’

100%[====================================================================>] 1,130       --.-K/s   in 0s      

2019-02-01 11:51:26 (58.9 MB/s) - ‘nexus-maven-repository-index.properties’ saved [1130/1130]

[root@localhost plugin]# wget http://central.maven.org/maven2/org/apache/maven/indexer/indexer-cli/6.0.0/indexer-cli-6.0.0.jar
--2019-02-01 11:53:08--  http://central.maven.org/maven2/org/apache/maven/indexer/indexer-cli/6.0.0/indexer-cli-6.0.0.jar
Resolving central.maven.org (central.maven.org)... 151.101.196.209
Connecting to central.maven.org (central.maven.org)|151.101.196.209|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 14914610 (14M) [application/java-archive]
Saving to: ‘indexer-cli-6.0.0.jar’

100%[====================================================================>] 14,914,610  91.2KB/s   in 5m 57s 

2019-02-01 11:59:06 (40.8 KB/s) - ‘indexer-cli-6.0.0.jar’ saved [14914610/14914610]

[root@localhost plugin]# 
[root@localhost plugin]# java -jar indexer-cli-6.0.0.jar -u nexus-maven-repository-index.gz -d indexer
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Index Folder:      /home/nexus/plugin
Output Folder:     /home/nexus/plugin/indexer

Total time:   6 min 2 sec
Final memory: 80M/440M
[root@localhost plugin]# 
[root@localhost plugin]# 
[root@localhost nexus]# cd plugin/
[root@localhost plugin]# ls -al
total 615380
drwxr-xr-x. 3 root root      4096 Feb  1 13:37 .
drwxr-xr-x. 4 root root        42 Feb  1 11:47 ..
drwxr-xr-x. 2 root root      8192 Feb  1 13:43 indexer
-rw-r--r--. 1 root root  14914610 Nov 28  2017 indexer-cli-6.0.0.jar
-rw-r--r--. 1 root root 615207556 Jan 28 14:42 nexus-maven-repository-index.gz
-rw-r--r--. 1 root root      1130 Jan 28 14:42 nexus-maven-repository-index.properties
[root@localhost plugin]# cd indexer/
[root@localhost indexer]# mv * /home/nexus/data/sonatype-work/nexus3/indexer/central-ctx/
[root@localhost indexer]# 

重启Nexus

[root@localhost plugin]# systemctl stop nexus
[root@localhost plugin]# systemctl start nexus
[root@localhost plugin]# 

至此Nexus已安装设置完毕,最后一步,登录到Portal上去,用默认admin和密码登录(默认密码为:admin123),修改下admin的密码就可以啦。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容