關於Nexus
如下圖,在區域網部署了Nexus之後,可以快取中央倉庫的jar,開發者開發的二方庫釋出到Nexus上,區域網內的其他人也可以從Nexus下載這些二方庫使用:
環境資訊
本次實戰是在Linux伺服器上通過Docker安裝Nexus3:
- 作業系統:Ubuntu 18.04.3 LTS
- Docker:19.03.5
- Nexus:3.19.1
安裝docker
- apt更新:
apt-get update
- 安裝curl:
apt-get install -y curl
- 安裝docker:
curl -sSL https://get.docker.com | sh
- 安裝完成後,檢查docker是否正常:
root@hedy:~# docker version
Client: Docker Engine - Community
Version: 19.03.5
API version: 1.40
Go version: go1.12.12
Git commit: 633a0ea838
Built: Wed Nov 13 07:29:52 2019
OS/Arch: linux/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 19.03.5
API version: 1.40 (minimum version 1.12)
Go version: go1.12.12
Git commit: 633a0ea838
Built: Wed Nov 13 07:28:22 2019
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.2.10
GitCommit: b34a5c8af56e510852c35414db4c1f4fa6172339
runc:
Version: 1.0.0-rc8+dev
GitCommit: 3e425f80a8c931f88e6d94a8c831b9d5aa481657
docker-init:
Version: 0.18.0
GitCommit: fec3683
部署Nexus3
- 建立工作目錄並賦許可權:
mkdir -p /usr/local/work/nexus-data && chown -R 200 /usr/local/work/nexus-data
- 下載Nexus映象並建立容器:
docker run -d \
-p 8081:8081 \
--name nexus \
-v /usr/local/work/nexus-data:/nexus-data \
sonatype/nexus3:3.19.1
上述命令的引數較多,有幾點需要注意:
a. 容器的8081埠對映到宿主機的8081埠;
b. 容器名為nexus;
c. 容器的/nexus-data/目錄被對映到宿主機的/usr/local/work/nexus-data/;
d. 映象是sonatype官方的3.19.1版本;
3. 等待容器建立成功後,Nexus3即部署成功;
登入和操作Nexus3
- 在控制檯執行以下命令,即可獲得Nexuse3的初始密碼:
echo `docker exec nexus cat /nexus-data/admin.password`
我這裡得到的是2c9c5399-d0da-48ec-9050-dc4f43cede10
2. 點選下圖右上角紅框中的Sign in,進入登入頁面:
3. 登入頁面如下圖,賬號admin,密碼是剛才獲取的2c9c5399-d0da-48ec-9050-dc4f43cede10:
4. 登入成功會提示修改密碼,如下圖,請修改:
5. 是否執行匿名訪問,這裡勾選上:
角色和賬號
在實際使用中,為了安全起見,不能讓每個使用者使用admin賬號,您可以先建立角色,按實際需要給角色增加各種許可權,再建立此角色下的賬號:
- 點選下圖紅框中的按鈕,進入設定頁面:
- 下圖紅框中是角色管理頁面的連結,您可以按照實際情況建立角色:
- 這裡為了簡化操作就不新建角色了,而是建立一個管理員角色的賬號boling_cavalry,操作如下圖所示:
至此,Nexus3部署完畢,接下來驗證Nexus能否提供jar快取的功能;
準備兩臺電腦驗證Nexus服務
接下來驗證的是Nexus快取中央倉庫jar包的能力,看看有了Naxus,能否讓我們在開發和構建過程中更快的下載到所需jar;
- 另外準備兩臺電腦,分別是A電腦和B電腦,用來驗證剛剛部署的Nexus3可以快取中央倉庫的jar包(您也可以用虛擬機器建立兩臺電腦);
- A、B兩臺電腦都已經裝好了JDK8和Maven3;
- 如下圖,在倉庫列表頁面,點選下圖紅框位置,可以得到maven-central倉庫的地址http://192.168.50.75:8081/repository/maven-central/:
修改兩臺電腦的maven配置檔案
電腦A和電腦B上的maven目錄下的conf/settings.xml檔案都要做以下修改:
- 找到servers節點,增加以下內容:
<server>
<id>maven-central</id>
<username>bolingcavalry</username>
<password>888888</password>
</server>
- 找到mirrors節點,增加以下內容,其中url的內容就是前面得到的maven-central倉庫地址:
<mirror>
<id>maven-central</id>
<mirrorOf>*</mirrorOf>
<url>http://192.168.50.75:8081/repository/maven-central/</url>
</mirror>
在A電腦上編譯構建專案(應該很慢)
在A電腦上編譯開源專案spring-cloud-alibaba,此時Nexus上沒有快取任何jar包,所以編譯速度會很慢,因為所有依賴jar都要從中央倉庫下載,我們來試試:
- 登入A電腦,下載spring-cloud-alibaba的2.1.1.RELEASE歸檔包:
wget https://github.com/alibaba/spring-cloud-alibaba/archive/v2.1.1.RELEASE.tar.gz
- 解壓下載的檔案:
tar -zxvf v2.1.1.RELEASE.tar.gz
- 進入解壓後的目錄:
cd spring-cloud-alibaba-2.1.1.RELEASE/
- 編譯:
mvn clean compile -U -DskipTests
- 編譯完成,如下圖紅框所示,本次編譯耗時9分27秒:
- 去Nexus網頁上看看,如下圖,此時已經快取了不少jar:
在B電腦上編譯構建專案(應該很快)
在B電腦上做同樣的操作,此時Nexus上已經快取了編譯所需的jar包,所以整個編譯過程應該明顯變快,最終操作結果如下圖所示,僅用了1分零6秒:
至此,Ubuntu上部署和體驗Nexus3的實戰就完成了,如果您正在尋求簡單快捷的Nexus部署方案,希望本文能給您一些參考。