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