前言
這兩天接到任務,需要在國産麒麟作業系統上安裝MongoDB。說實話一開始我沒怎麼放在心上,畢竟以前在CentOS上通過腳本一鍵安裝、全程隻要幾十秒。但後續不斷踩坑我才發現,這次顯然低估了它的難度。
首先系統架構不一樣,以前的shell腳本及安裝包隻适用于X86架構的系統,肯定是行不通了。其次,Ubuntu我也沒怎麼接觸過,聽說安裝軟體是用apt-get而不是yum。沒辦法,隻能硬着頭皮上了。
通過下圖能夠看出,系統是國産麒麟V10SP1作業系統,核心版本為Linux 5.4.18-35-generic,arm64架構:
在網上大概搜尋了一圈,沒有完全比對的教程,即:既是國産麒麟V10作業系統,又是基于Ubuntu,還得是arm64架構。但也粗略地了解到有以下幾種安裝方式:
- 源碼編譯安裝,這種比較靈活,可以自由選擇安裝core核心服務、隻安裝server服務端、全量安裝;
- 從官網下載下傳安裝包、解壓安裝,但是比對系統架構以後,發現隻有server等可以下載下傳,不夠全面:
- 線上下載下傳安裝,這種安裝出來的也比較全,就是安裝目錄和配置檔案目錄看不出來在哪,需要自己找;
我一開始選擇的是第一種源碼編譯安裝,我選擇的是4.x版本,依賴Python2、pip、setuptools、scons等一堆環境。順便提一句,MongoDB 3.x、4.x都依賴Python2,MongoDB 5.x、6.x依賴Python3編譯安裝。在安裝依賴過程中遇到了各種報錯,隻能不斷檢視日志以及在網上搜尋各種解決辦法,但是解決了問題A,問題B又冒出來了,就這樣層出不窮,有時候一個問題會卡半天。索性我就放棄了,轉而選擇第3種采用線上下載下傳安裝的方式,本文也主要是記錄這種方式的安裝過程。
一、前置準備過程
1.安裝依賴包
我選擇安裝的是5.0.6版本,依賴libcurl4和openssl這兩個庫,需要先安裝依賴庫:
sudo apt-get install libcurl4 openssl
2.導入MongoDB5.0版的公鑰
如果安裝的是6.0版本,就把指令中的版本号5.0改為6.0即可,成功的話會傳回一個OK。
wget -qO - https://www.mongodb.org/static/pgp/server-5.0.asc | sudo apt-key add -
檢查公鑰是否導入成功
apt-key list
3.導入軟體包資源連結
向APT導入MongoDB5.0版軟體包的資源連結,如果安裝的是6.0版本,就把指令中的版本号5.0改為6.0即可。
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/5.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-5.0.list
4.更新apt資源
sudo apt-get update
二、安裝mongodb5.0
1.線上安裝各個相關元件
sudo apt-get install -y mongodb-org=5.0.6 mongodb-org-server=5.0.6 mongodb-org-shell=5.0.6 mongodb-org-mongos=5.0.6 mongodb-org-tools=5.0.6
以下為下載下傳過程,時間可能會比較長,也和網絡有關
2.手動安裝已下載下傳的檔案
軟體都已經下載下傳完成,但是在最後安裝的時候報錯了:
在網上搜尋、試驗了很多種方法都沒用,最後在一篇博文中找到如下方式解決問題:
參考:https://blog.csdn.net/qq_44866828/article/details/121141194
安裝指定包裹内的deb檔案,并強制覆寫:
sudo dpkg -i --force-overwrite /var/cache/apt/archives/*.deb
出現如下提示表示安裝成功:
3.更改MongoDB配置檔案:
- 預設安裝目錄:/var/lib/mongodb
- 預設資料目錄:/var/lib/mongodb
- 配置檔案路徑:/etc/mongod.conf
- 預設日志目錄:/var/log/mongodb/mongod.log
/etc/mongod.conf 預設配置如下,如有需要可以進行更改:
配置解讀:
# Where and how to store data.
storage:
dbPath: /var/lib/mongodb # 資料存儲目錄
journal:
enabled: true # 啟用日志檔案,預設開啟
# engine:
# wiredTiger:
# where to write logging data.
systemLog:
destination: file
logAppend: true # 采用追加模式寫入日志,預設開啟
path: /var/log/mongodb/mongod.log # 日志存儲路徑
# network interfaces
net:
port: 27017 # 端口号
bindIp: 127.0.0.1 # 網絡位址
# how the process runs
processManagement:
timeZoneInfo: /usr/share/zoneinfo
4.啟動MongoDB
sudo systemctl daemon-reload # 重新加載系統服務配置
sudo systemctl start mongod # 啟動MongoDB服務
sudo systemctl status mongod # 檢視MongoDB運作狀态
MongoDB為激活狀态:
此時我們也可以通過ps指令檢視是否存在MongoDB相關程序:
5.連接配接MongoDB(登入)
通過這種方式安裝的可執行腳本檔案都在/usr/bin下
是以可以在指令行直接運作mongo指令,可以看到,MongoDB版本為5.0.6:
6.測試一下MongoDB
登入MongoDB後,在MongoDB的shell下運作:
show dbs # 檢視資料庫清單
use test # 切換到test資料庫,不存在會建立,但是要建立資料後才會生效
db.createCollection("TestCollection") # 在test資料庫下建立一個名為TestCollection的資料表
db.TestCollection.insert({"name":"test-user","age":"28","city":"beijing"}) # 插入一條資料
db.TestCollection.find() # 檢視TestCollection資料表的所有資料
7.通過工具連接配接MongoDB
連接配接配置
① SSH配置
由于我的是部署在外網,是以需要SSH進行跳轉。主機就是IP位址,端口号填寫能連接配接到該主機的SSH端口号。
② 正常配置
主機位址為localhost,端口27017,如果沒更改過的話。
檢視資料
可以看到前面在shell下建立的資料庫、表、資料都存在。
小結
以上就是在arm64架構的國産麒麟V10作業系統上安裝MongoDB的全過程。國産作業系統據聽說還有銀河麒麟、中标麒麟,後來合并了。除此之外還有龍芯系統、龍芯架構的麒麟系統,呃......眼花缭亂。總之不同的系統架構安裝方式也各不一樣。個人感覺還是CentOS搞起來最簡單。對于CentOS、Linux、Windows如何安裝MongoDB可以參考另一篇文章《測開必備技能之MongoDB的安裝(Windows&Linux&MacOS)》。