Nexus制品庫安裝使用指南

Nexus制品庫安裝使用指南

01 前言

伴隨著團(tuán)隊(duì)的微服務(wù)越來越多,測(cè)試團(tuán)隊(duì)也重視版本管理并要求 “所測(cè)即所得”,即SIT/UAT通過測(cè)試的二進(jìn)制編譯包即是上線部署包,而非重新拉取代碼再打包。因此,要達(dá)到這個(gè)目標(biāo),開發(fā)這邊需要做兩個(gè)事情:

1、把配置從程序包中解耦。這塊不是這篇文章的重點(diǎn),我后續(xù)會(huì)開另外一篇說一下如何通過使用攜程開源的配置中心Apollo進(jìn)行解耦。(但是在2019GOPS上聽到去哪兒的效能總監(jiān)說,自從去哪兒和攜程合并后內(nèi)部也慢慢不用Apollo,而改用QConfig。)

2、編譯包要通過制品庫進(jìn)行管理。目前用得比較多的是Nexus和Artifactory。因?yàn)楸救斯局饕怯肗exus的,因此就用Nexus進(jìn)行講解。

02 安裝

1、下載地址:https://www.sonatype.com/download-oss-sonatype(這里我使用3.16.0版本進(jìn)行演示)

2、解壓tar包并在解壓后會(huì)多了兩個(gè)文件夾

[root@dev2 opt]# tar -zxvf /tmp/nexus-3.16.0-01-unix.tar.gz

nexus-3.16.0-01/.install4j/9d17dc87.lprop

nexus-3.16.0-01/.install4j/MessagesDefault

nexus-3.16.0-01/.install4j/build.uuid

nexus-3.16.0-01/.install4j/i4j_extf_0_17is1ik.utf8

.....

sonatype-work/nexus3/log/.placeholder

sonatype-work/nexus3/orient/plugins/studio.zip

sonatype-work/nexus3/tmp/.placeholder

[root@dev2 opt]# ls -alrt

total 0

dr-xr-xr-x. 17 root root 224 Mar 29 20:42 ..

drwxr-xr-x.? 9 root root 163 Apr 12 22:59 nexus-3.16.0-01

drwxr-xr-x.? 3 root root? 20 Apr 12 22:59 sonatype-work

啟動(dòng)服務(wù)

1、進(jìn)入Nexus的bin文件夾并啟動(dòng)服務(wù)。

[root@dev2 nexus-3.16.0-01]# java -version

openjdk version "1.8.0_201"

OpenJDK Runtime Environment (build 1.8.0_201-b09)

OpenJDK 64-Bit Server VM (build 25.201-b09, mixed mode)

[root@dev2 nexus-3.16.0-01]# ./bin/nexus start

WARNING: ************************************************************

WARNING: Detected execution as "root" user.? This is NOT recommended!

WARNING: ************************************************************

Starting nexus

2、如有你想忽略該警告,可以通過修改nexus配置。

[root@dev2 nexus-3.16.0-01]# vi bin/nexus

---------------------------------------------------------

# user to execute as; optional but recommended to set

#run_as_user=''

run_as_user=root

3、重啟

[root@dev2 nexus-3.16.0-01]# ./bin/nexus start

WARNING: ************************************************************

WARNING: Detected execution as "root" user.? This is NOT recommended!

WARNING: ************************************************************

Starting nexus

4、常見命令

bin/nexus {start|stop|run|run-redirect|status|restart|force-reload}

查看防火墻狀態(tài)

查看防火墻狀態(tài) systemctl status firewalld

開啟防火墻 systemctl start firewalld?

關(guān)閉防火墻 systemctl stop firewalld

開啟防火墻 service firewalld start

若遇到無法開啟

先用:systemctl unmask firewalld.service

然后:systemctl start firewalld.service

5、常見問題

5.1 即使nexus已經(jīng)啟動(dòng)成功,但是web端訪問還是報(bào)超時(shí),一般情況就是端口沒有開放。

#查詢指定端口是否已開 (yes表示開啟;no表示未開啟)

firewall-cmd --query-port=666/tcp

#假若沒有開啟

#添加指定需要開放的端口:

firewall-cmd --add-port=666/tcp --permanent

#重載入添加的端口:

firewall-cmd --reload

#查詢指定端口是否開啟成功:

firewall-cmd --query-port=666/tcp

03 使用與配置

1、輸入http://localhost:8081/,登錄并顯示以下界面證明Nexus安裝并啟動(dòng)成功。

2、使用admin/admin123進(jìn)行登錄。

3、然后創(chuàng)建三種不同類型的倉庫(Hosted、Proxy、Group),每個(gè)倉庫的格式為maven2或者maven1,同時(shí)倉庫還有一個(gè)Policy(策略)的屬性,它表示該倉庫為發(fā)布(Release)版本倉庫還是快照(Snapshot)版本倉庫。最后兩列的值為倉庫的狀態(tài)和路徑。具體每種倉庫的描述可以參考以下表格。

值得注意的是,倉庫組所包含的倉庫的順序決定了倉庫組遍歷其所含倉庫的次序,因此最好將常用的倉庫放在前面,當(dāng)用戶從倉庫組下載構(gòu)件的時(shí)候,就能夠盡快地訪問到包含構(gòu)件的倉庫。

創(chuàng)建遠(yuǎn)程倉庫
創(chuàng)建宿主快照倉庫
創(chuàng)建宿主發(fā)布倉庫
創(chuàng)建組合倉庫

上傳構(gòu)件包

1、配置pom.xml與setting.xml。

setting.xml:配置nexus私庫的登錄賬戶與密碼。

<server>

? ? ? <id>release</id>? <!--對(duì)應(yīng)pom.xml的id=releases的倉庫-->

? ? ? <username>XXXXX</username>

? ? ? <password>YYYYYYYY</password>

</server>

<server>

? ? ? <id>snapshot</id> <!--對(duì)應(yīng)pom.xml中id=snapshots的倉庫-->

? ? ? <username>XXXXX</username>

? ? ? <password>YYYYYYYY</password>

</server>

pom.xml:用于配置

<distributionManagement>

? ? <repository>

? ? ? ? <!--id的名字可以任意取,但是在setting文件中的屬性<server>的ID與這里一致-->

? ? ? ? <id>release</id>

? ? ? ? <!--指向倉庫類型為host(宿主倉庫)的Release倉庫,這里我倉庫為team-release-->

? ? ? ? <url>http://{ip}:{port}/repository/team-release/</url>

? ? </repository>

? ? <snapshotRepository>

? ? ? ? <id>snapshot</id>

? ? ? ? <!--指向倉庫類型為host(宿主倉庫)的Snapshot倉庫,這里我倉庫為team-snapshot-->

? ? ? ? <url>http://{ip}:{port}/repository/team-snapshot/</url>

? ? </snapshotRepository>

</distributionManagement>

2、在項(xiàng)目的根目錄下執(zhí)行以下命令:

mvn clean source:jar package

mvn deploy -e

3、當(dāng)命令執(zhí)行成功后會(huì)看到以下日志:

另外:maven會(huì)判斷版本后面是否帶了-SNAPSHOT,如果帶了就發(fā)布到snapshots倉庫,否則發(fā)布到release倉庫。

mvn deploy-e

4、通過日志發(fā)現(xiàn)該源代碼包與程序包部署到nexus私服成功,并存到releas倉庫。我們到私服查看確認(rèn)無誤。

該程序包已經(jīng)被上傳到Nexus的team-release倉庫

04 特別說明

本文非原創(chuàng),轉(zhuǎn)載至部門領(lǐng)導(dǎo)的cdsn博文:

作者:塵世間一名迷途小碼農(nóng)

原文:https://blog.csdn.net/justyman/article/details/89279395

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。