Nexus製品庫安裝使用指南

目錄

前言

安裝

啓動服務

使用與配置

上傳構件包


前言

伴隨着團隊的微服務越來越多,測試團隊也重視版本管理並要求 “所測即所得”,即SIT/UAT通過測試的二進制編譯包即是上線部署包,而非重新拉取代碼再打包。因此,要達到這個目標,開發這邊需要做兩個事情:

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

2、編譯包要通過製品庫進行管理。目前用得比較多的是Nexus和Artifactory。因爲本人公司主要是用Nexus的,因此就用Nexus進行講解。

安裝

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

2、解壓tar包並在解壓後會多了兩個文件夾

文件夾 作用
nexus-3.16.0-01 核心
sonatype-work maven下載jar存放地址

 

 

 

 

[xxxx@localhost 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

[xxxx@localhost 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

啓動服務

1、進入Nexus的bin文件夾並啓動服務。

[root@localhost 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@localhost 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@localhost 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@localhost nexus-3.16.0-01]# ./bin/nexus start
WARNING: ************************************************************
WARNING: Detected execution as "root" user.  This is NOT recommended!
WARNING: ************************************************************
Starting nexus
[root@localhost nexus-3.16.0-01]#

4、常見命令

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

查看防火牆狀態
查看防火牆狀態 systemctl status firewalld
開啓防火牆 systemctl start firewalld  
關閉防火牆 systemctl stop firewalld
開啓防火牆 service firewalld start 
若遇到無法開啓
先用:systemctl unmask firewalld.service 
然後:systemctl start firewalld.service

5、常見問題

5.1 即使nexus已經啓動成功,但是web端訪問還是報超時,一般情況就是端口沒有開放。

#查詢指定端口是否已開 (yes表示開啓;no表示未開啓)
firewall-cmd --query-port=666/tcp

#假若沒有開啓

#添加指定需要開放的端口:
firewall-cmd --add-port=666/tcp --permanent
#重載入添加的端口:
firewall-cmd --reload
#查詢指定端口是否開啓成功:
firewall-cmd --query-port=666/tcp

使用與配置

1、輸入http://localhost:8081/,登錄並顯示以下界面證明Nexus安裝並啓動成功。

onboard

2、使用admin/admin123進行登錄。

signed-in

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

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

種類 作用
group(倉庫組類型) 組倉庫,用於方便開發人員自己設定的倉庫
hosted(宿主類型)

內部項目的發佈倉庫,一般用於內部開發人員發佈上去存放程序包的倉庫。其中根據版本分爲兩類:

Release:用於版本發佈的倉庫

Snapshot:用於開發、調試、測試的倉庫

proxy(代理類型) 從遠程中央倉庫中尋找數據的倉庫,一般用於從遠程拉取jar包
virtual(虛擬類型) 虛擬倉庫,一般不怎麼用到

 

 

 

 

 

 

創建遠程倉庫
創建宿主快照倉庫
創建宿主發佈倉庫
創建組合倉庫

 

上傳構件包

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

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

<server>
      <id>release</id>  <!--對應pom.xml的id=releases的倉庫-->
      <username>XXXXX</username>
      <password>YYYYYYYY</password>
</server>
<server>
      <id>snapshot</id> <!--對應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、在項目的根目錄下執行以下命令:

mvn clean source:jar package
mvn deploy -e

3、當命令執行成功後會看到以下日誌:

另外:maven會判斷版本後面是否帶了-SNAPSHOT,如果帶了就發佈到snapshots倉庫,否則發佈到release倉庫。

mvn deploy -e

4、通過日誌發現該源代碼包與程序包部署到nexus私服成功,並存到releas倉庫。我們到私服查看確認無誤。

該程序包已經被上傳到Nexus的team-release倉庫

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章