與 Nexus 2.x 相比,Nexus 3.x 為我們提供了更多實(shí)用的新特性,隨著 Nexus 3.x 對(duì) Maven 的支持越來(lái)穩(wěn)定,很多公司和組織都陸續(xù)將數(shù)據(jù)從 Nexus 2.x 遷移升級(jí)到 Nexus 3.x。
SonaType 官方建議我們,使用最新版本 Nexus 2.x 升級(jí)到最新版本 Nexus 3.x,并在 Nexus 升級(jí)兼容性 一文中為我們提供了各個(gè)版本 Nexus 升級(jí)到最新版本 Nexus 3.x 的流程,如下表。
舊版本 | 升級(jí)流程 |
---|---|
3.1.0 或更高版本 | 1.升級(jí)到最新 3.x 版本 |
3.0.0 到 3.0.2 | 1.學(xué)習(xí) 3.1.0 中引入的重要目錄布局2.升級(jí)到最新 3.x 版本 |
最新 2.x 版本 | 1.升級(jí)到最新 3.x 版本 |
2.0 及 其他 2.x 版本 | 1.升級(jí)到最新 2.x 版本2.升級(jí)到最新 3.x 版本 |
1.x | 1.升級(jí)到 2.7.2 之前的任何 2.x 版本2.升級(jí)到最新 2.x 版本3.升級(jí)到最新 3.x 版本 |
注:Nexus 1.x 不支持直接升級(jí)到 2.7.2 之后的版本
由上表可知,從 Nexus 2.x 升級(jí)到 Nexus 3.x 需要 2 步:
升級(jí)到 Nexus 2.x 最新版本
升級(jí)到 Nexus 3.x 最新版本
本節(jié)我們以 Nexus 2.11.4-01 為例,演示如何將 Nexus 2.x 升級(jí)到 Nexus 3.x。
下載并解壓最新版本的 Nexus 2.x(目前為 Nexus-2.14.20-02),具體下載和解壓步驟請(qǐng)參考 Nexus 2.x 下載和安裝
無(wú)論是 Nexus 2.x 還是 Nexus 3.x,其安裝包在解壓后都包含兩部分:
nexus-版本號(hào) Nexus 應(yīng)用程序目錄
sonatype-work Nexus 工作目錄(真正的倉(cāng)庫(kù),同時(shí)包含了 Nexus 的配置,如定時(shí)任務(wù)、用戶配置)
若 Nexus 的版本升級(jí)是在大版本相同的情況下進(jìn)行的(例如從 Nexus 2.11.4-01 升級(jí)到 Nexus-2.14.20-02),則只需要將新的 Nexus 工作目錄復(fù)制到現(xiàn)有版本的目錄下,替換舊版本 Nexus 的工作目錄即可。
如果用戶對(duì)以下文件的默認(rèn)配置進(jìn)行了任何更改,則需要在新版本中手動(dòng)進(jìn)行相同的更改,Nexus 不支持將這些文件從一個(gè)版本復(fù)制到另一個(gè)版本。
<應(yīng)用程序目錄> /conf/nexus.properties
<應(yīng)用程序目錄> /conf/jetty*.xml
<應(yīng)用程序目錄> /bin/jsw/conf/wrapper.conf
<應(yīng)用程序目錄> /nexus/WEB-INF/classes/ehcache.xml
<應(yīng)用程序目錄> /conf/logback*.xml
由于 Nexus 升級(jí)遷移過(guò)程需要同時(shí)啟動(dòng) Nexus 2.x 和 Nexus 3.x,為了防止端口(兩者默認(rèn)端口都是 8081)沖突,我們可以將 Nexus 2.x 啟動(dòng)時(shí)監(jiān)聽的端口(端口在 <應(yīng)用程序目錄>/conf/nexus.properties 中配置)修改為 8082。
在以上步驟完成后,如果舊版本 Nexus 是作為 Windows 服務(wù)運(yùn)行的,那么我們需要將舊版本的 Nexus 服務(wù)卸載,然后使用新實(shí)例重新安裝 Nexus 服務(wù),具體操作步驟如下。
1) 使用 win +R 快捷鍵,打開運(yùn)行窗口,輸入 services.msc,點(diǎn)擊確定按鈕,如圖 2 所示。
2)進(jìn)入Windows 服務(wù)列表,找到服務(wù)名為 nexus 的服務(wù)。
3)雙擊 nexus 服務(wù),打開服務(wù)屬性窗口,可以看到該服務(wù)指向的是舊版本的 Nexus 2.x。
4)在舊版本 Nexus 應(yīng)用程序目錄下的 bin\jsw\windows-x86-64 目錄(根據(jù)本機(jī)操作系統(tǒng)而定)中,以管理員身份運(yùn)行 uninstall-nexus.bat,卸載 nexus 服務(wù)。
5)在新版本 Nexus 應(yīng)用程序目錄下的 bin\jsw\windows-x86-64 目錄(根據(jù)本機(jī)操作系統(tǒng)而定)中 ,以管理員身份運(yùn)行 install-nexus.bat,安裝 nexus 服務(wù)。
6)再次進(jìn)入服務(wù)列表,查看 nexus 服務(wù)屬性,可以看到該服務(wù)已經(jīng)指向新版本 Nexus 實(shí)例。
在新版本 Nexus 的 <應(yīng)用程序目錄>\bin\jsw\windows-x86-64 目錄(根據(jù)本機(jī)操作系統(tǒng)而定),以管理員身份運(yùn)行 start-nexus.bat。啟動(dòng)成功后,在瀏覽器地址欄輸入:http://localhost:8082/nexus,訪問(wèn)新版本 Nexus 2.x 用戶界面。
將 Nexus 2.x 升級(jí)到 Nexus 3.x,從本質(zhì)上說(shuō)就是將 Nexus 2.x 中的數(shù)據(jù)傳輸或遷移到 Nexus 3.x。
Nexus 2.x 升級(jí)到 Nexus 3.x 通常需要如下 4 步:
Nexus 2.x 啟用 Upgrade: Agent (升級(jí)代理)功能
Nexus 3.x 啟用 Upgrade (升級(jí))功能
在 Nexus 3.x 中配置升級(jí)信息
運(yùn)行升級(jí)程序
Nexus 2.x 升級(jí)到 Nexus 3.x 的第一步,就是在 Nexus 2.x 中開啟 Upgrade: Agent 功能,操作步驟如下。
1)在 Nexus 2.x 用戶界面左側(cè)的導(dǎo)航欄中,點(diǎn)擊 Administration 下的 Capabilities,查看 Nexus 2.x 功能列表,如下圖。
2)點(diǎn)擊 Capabilities 列表上方的 New 按鈕,新建一個(gè)類型(Type)為 Upgrade: Agent 的功能,并填寫 Access Token,最后點(diǎn)擊下方的 Add 按鈕,如下圖。
3) 返回列表頁(yè),可以看到已經(jīng)添加了 Upgrade: Agent,選中該功能可以在下方查看或修改其中配置,如下圖。
這里需要注意的是,Access Token 扮演的角色十分的重要,它是 Nexus 之間數(shù)據(jù)傳輸?shù)闹匾獞{證之一。
接下來(lái),我們需要在 Nexus 3.x 中開啟 Upgrade 功能,用來(lái)接收來(lái)自 Nexus 2.x 傳輸?shù)臄?shù)據(jù),具體步驟如下。
1)點(diǎn)擊最上方的齒輪狀圖標(biāo),切換到 Nexus 3.x “管理和配置”模塊,然后點(diǎn)擊 System 下的 Capabilities ,查看 Nexus 3.x 功能列表,如下圖。
2)點(diǎn)擊列表上方的 Create capability 按鈕,創(chuàng)建一個(gè)類型(Type)為 Upgrade 的功能,如下圖。
3)隨后我們發(fā)現(xiàn),不但在功能列表中新增了一條類型為 Upgrade 的數(shù)據(jù),而且在 System 下還多出了一個(gè) Upgrade 菜單,如下圖。
1)Nexus 3.x 啟用升級(jí)功能后,點(diǎn)擊 System 下的 Upgrade ,進(jìn)入升級(jí)程序概述。概述中介紹了升級(jí)過(guò)程中的注意事項(xiàng)、允許升級(jí)的內(nèi)容、無(wú)法升級(jí)的內(nèi)容。閱讀完成后,點(diǎn)擊下方的 Next 按鈕。
2)跳轉(zhuǎn)到 “代理鏈接(Agent Connection)”頁(yè)面,配置 URL 、Access Token 等字段,配置完成后,點(diǎn)擊下方的 Next 按鈕。
以上字段說(shuō)明如下:
URL:Nexus 2.x 的完整訪問(wèn)地址,例如 http://localhost:8082/nexus。
Access Token:Nexus 2.x 啟用升級(jí)代理(Upgrade: Agent)功能時(shí)配置的 Access Token。
3)跳轉(zhuǎn)到“內(nèi)容”頁(yè)面,在該頁(yè)面中,我們需要選擇升級(jí)過(guò)程中傳輸?shù)膬?nèi)容,包括以下 2 項(xiàng):
倉(cāng)庫(kù)的配置及內(nèi)容
Nexus 服務(wù)器配置
選擇完成后,點(diǎn)擊下方的 Next 按鈕。
4)跳轉(zhuǎn)到“倉(cāng)庫(kù)默認(rèn)設(shè)置(Repository Defaults)”頁(yè)面,設(shè)置倉(cāng)庫(kù)內(nèi)容的存儲(chǔ)位置(Blob store)以及數(shù)據(jù)傳輸方式(Data Transfer Method),設(shè)置完成后,點(diǎn)擊下方的 Next 按鈕。
5)跳轉(zhuǎn)到“倉(cāng)庫(kù)(Repositories)” 頁(yè)面,選擇遷移的倉(cāng)庫(kù),選擇完成后,點(diǎn)擊下方得 Next 按鈕,如下圖。
選擇完成后,點(diǎn)擊下方的 Next 按鈕。
6)配置完成后,點(diǎn)擊最下方的 Next 按鈕,跳轉(zhuǎn)到 “預(yù)覽(Preview)”頁(yè)面。該頁(yè)面中展示了所有的升級(jí)配置信息,確認(rèn)無(wú)誤后,點(diǎn)擊下面的 Begin 按鈕,開始運(yùn)行升級(jí)程序,如下圖。
7)開始升級(jí)前,會(huì)先跳轉(zhuǎn)到 “準(zhǔn)備(Preparing)”頁(yè)面,先進(jìn)行簡(jiǎn)短的準(zhǔn)備工作。當(dāng)準(zhǔn)備工作進(jìn)度條到達(dá) 100% 后,點(diǎn)擊下方的 Continue 按鈕,繼續(xù)進(jìn)行下一步。
8)跳轉(zhuǎn)到“同步(Synchronizing)”頁(yè)面,在這里 Nexus 升級(jí)程序會(huì)執(zhí)行兩步操作,掃描倉(cāng)庫(kù)和數(shù)據(jù)同步。倉(cāng)庫(kù)掃描完成后,點(diǎn)擊下方的 Continue 按鈕,開始同步數(shù)據(jù)。同步開始以后,再對(duì) Nexus 2.x 倉(cāng)庫(kù)所做的任何修改都不會(huì)同步到 Nexus 3.x 中。
9)同步完成后,點(diǎn)擊下方的 Done 按鈕,退出升級(jí)程序。
10)點(diǎn)擊最上方的立方體圖標(biāo),切換到 Nexus 3.x “瀏覽”模塊,點(diǎn)擊左側(cè)的 Browse 菜單,瀏覽 Nexus 3.x 倉(cāng)庫(kù)列表,可以看到 Nexus 2.x 中的倉(cāng)庫(kù)及構(gòu)件都已經(jīng)遷移到 Nexus 3.x 了。
至此,我們就完成了將數(shù)據(jù)從 Nexus 2.x 遷移到 Nexus 3.x 的全部工作。