Nexus是什么
本文介紹的Nexus不是谷歌的一個手機品牌哈,而是一個非常強大的倉庫管理平台。支持常見的Docker、Maven、npm、PyPI等倉庫的管理。
Nexus是一個開源的軟件,有Nexus OSS版本和Pro的版本。
Nexus在我們的日常工作中有接觸到嗎?
在我們的日常工作中,我們是否經常會被已下問題困擾:
1、java開發的項目,使用maven工程進行管理時,編譯項目下載jar包時非常緩慢
2、編譯前端vue項目,需要使用npm命令下載依賴的插件非常慢
3、使用docker的時候,pull鏡像非常慢
4、公司對XXX網絡做了限制,可能無法訪問到某網絡,或者團隊成員都要從外網下載某個文件,下載非常慢
......
下面,通過一張圖片的對比來介紹一下使用Nexus的好處:
從左邊的圖片可以看出,開發人員使用傳統的方式從官網去下載各種插件,這個過程容易受到網絡的影響以及公司網絡策略和安全的限制。
從右邊的圖可以看出,如果在公司內部搭建一個自己的Nexus倉庫管理平台的話,那么開發人員只需從內部的倉庫中去下載所需文件,下載速度會加快 ,只需在服務器上配置代理倉庫到官方倉庫即可。
在日常工作中,我們經常會使用類似下面的命令去安裝一些所需的插件/軟件:
npm install --registry=https://registry.npm.taobao.org
實際上,這些就是國內的一些第三方的鏡像倉庫。倉庫管理目前用的多的應該是Nexus和Artifactory,至於2個工具之間的優勢和差異對比 ,感興趣的可以自己去了解一下。
Nexus OSS免費版的環境搭建
1、安裝包下載
官網下載地址:https://www.sonatype.com/nexus/repository-oss/download
百度網盤下載好的地址:
鏈接:https://pan.baidu.com/s/1grqqQFHCpheFrH8y6QQVmA
提取碼:1234
2、linux環境下的部署(以nexus3.27.0-03為例)
將安裝包傳到服務器某個目錄,然后使用tar命令去解壓文件
進入到安裝目錄的bin目錄下,執行./nexus start 即可啟動nexus
常用命令如下:
./nexus start : 后台啟動,類似於nohup
./nexus run : 前台啟動,能看到實時刷新的日志信息,關掉窗口后就停止了
./nexus stop:停止服務
注意事項:
a、目前的nexus os3.xxx的版本,需要依賴jdk環境,且必須是jdk1.8
b、如果服務器安裝的jdk配置的環境變量不是jdk1.8,在啟動的時候會報錯:
No suitable Java Virtual Machine could be found on your system.
The version of the JVM must be 1.8.
Please define INSTALL4J_JAVA_HOME to point to a suitable JVM.
解決方法:
修改nexus的bin目錄下的nexus文件,將jdk1.8的安裝目錄配置到INSTALL4J_JAVA_HOME中,無需配置到系統環境變量中去:(之前試過jdk1.8.0_251的版本不行 ,換成jdk1.8.0_261的版本才可以)
c、在安裝目錄下的etc/nexus-default.properties文件中,可以自定義端口,默認是8081端口。
3、windows環境下的部署
將下載下來的壓縮包解壓,進入到bin目錄下后,在當前目錄打開cmd窗口,輸入nexus /run 即可啟動。
如果啟動過程中報下面的錯誤:
java.lang.NumberFormatException: null
安裝目錄不能包含中文
將安裝目錄遷移到不包含中文的路徑之后,重新執行命令即可。如果還報錯的話,就檢查一下jdk的版本,目前在windows上,jdk的版本是11,也可以啟動成功。端口號一樣的在etc目錄下的etc/nexus-default.properties文件中更改。
4、訪問nexus環境
在瀏覽器輸入ip+端口號就可以訪問。
不管是在linux還是windows上搭建的環境,初始的admin帳號的密碼都存儲在nexus同層級目錄下的sonatype-work文件夾下面的admin.password文件中,登錄后會提示你修改默認密碼,修改后,該保存初始密碼的文件會被清除掉。
Nexus Repository倉庫類型介紹
啟動nexus服務后,可能要稍微等一會,頁面才能正常訪問,因為在啟動的時候,后台需要初始化一些數據之類的,同時會創建幾個maven和nuget默認的倉庫。
不管是創建maven還是npm的倉庫,在nexus中,倉庫主要有proxy,hosted以及group 這3種類型,下面分別介紹一下這3種類型的區別:
hosted,本地代理倉庫,通常用來存儲自己編寫的一些插件和包到這一類型的倉庫,可以push和pull。
proxy,代理的遠程倉庫,它們被用來代理遠程的公共倉庫,如maven中央倉庫,只能pull,proxy倉庫可以用來加速。
group,倉庫組,用來合並多個hosted/proxy倉庫,通常我們配置maven依賴倉庫組,只能pull。
演示如何通過自己搭建的nexus環境下載jar包編譯maven工程代碼
登錄nexus環境后,在nexus網站找到group類型的maven倉庫:maven-public,進入設置頁面后,查看該倉庫的url地址:
然后將地址填入maven的配置文件中即可(maven安裝目錄下conf/settings.xml)
maven的settings.xml文件中,在mirrors下面添加一個鏡像:
<mirror>
<id>maven-public</id>
<name>maven-public</name>
<url>http://192.168.64.128:8000/repository/maven-public/</url>
<mirrorOf>*</mirrorOf>
</mirror>
然后找一個maven工程用命令編譯,可以看一下輸出日志:
從日志可以看出,已經從我們自己搭建的倉庫中開始下載插件了。
同時,在倉庫中也可以看到有我們下載的一些包:
ps:只有本地沒有的包,才會從私服上去下載
好了,到這就已經介紹完了Nexus是如何搭建倉庫管理平台的,你get到了嗎?有收獲的話,幫忙分享給身邊的其他小伙伴唄