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)件的倉庫。
上傳構(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倉庫。
4、通過日志發(fā)現(xiàn)該源代碼包與程序包部署到nexus私服成功,并存到releas倉庫。我們到私服查看確認(rèn)無誤。
04 特別說明
本文非原創(chuàng),轉(zhuǎn)載至部門領(lǐng)導(dǎo)的cdsn博文:
作者:塵世間一名迷途小碼農(nóng)
原文:https://blog.csdn.net/justyman/article/details/89279395