# 安裝 MongoDB for Ubuntu 22.04 ![image](https://hackmd.io/_uploads/r16Ne5QgR.png) ## 概述 本文將說明如何在 Ubuntu 22.04 環境下透過 apt 套件管理器來安裝 MongoDB Community Edition。 * [前置準備](#前置準備) * [安裝 MongoDB Community Edition](#安裝-MongoDB-Community-Edition) * [啟動 MongoDB](#啟動-MongoDB) * [同場加映](#同場加映-Failed-with-result-core-dump) * [參考文章](#參考文章) ## 前置準備 我們必須先檢查作業系統版本及 CPU 架構,才能安裝相應的 MongoDB Version,由於我的伺服器是 x86_64 架構,故本篇紀錄以 x86_64 為主。 1. 檢查作業系統版本 `lsb_relase -a` ![image](https://hackmd.io/_uploads/S1gzIkZgC.png) 2. 檢查處理器規格 `lscpu` ![image](https://hackmd.io/_uploads/H1aJ8yWxR.png) > 補充說明: > Linux 可以透過 `cat /proc/cpuinfo` 來查詢 cpu 詳細資訊,內容包括型號、核心數、最高頻率、幾個線程等等 > ![image](https://hackmd.io/_uploads/ByXkBCmxR.png) > > Intel 官網上可以查到這個型號,由此得知他是什麼指令集 > ![image](https://hackmd.io/_uploads/HylOBRmeA.png) > > 但這樣更麻煩就是了xD ## 安裝 MongoDB Community Edition 1. 首先我們需要安裝 gnupg, curl 這兩個套件 `sudo apt-get install gnupg curl` 2. 匯入 MongoDB 公用 GPG 金鑰 `curl -fsSL https://www.mongodb.org/static/pgp/server-7.0.asc | \ sudo gpg -o /usr/share/keyrings/mongodb-server-7.0.gpg \ --dearmor` 3. 為作業系統建立 MongoDB 安裝項目清單 `echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-7.0.gpg ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/7.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-7.0.list` 4. 加入上述清單後,重新讀取 apt 套件管理器 `sudo apt-get update` 5. 透過 apt 安裝最新版本 MongoDB `sudo apt-get install -y mongodb-org` ## 啟動 MongoDB > 如果不用 systemctl 管理應用程序,啟動 MongoDB 服務會超麻煩,所以非常建議服用此方法 1. 透過 systemctl 啟動 mongoDB 應用程序 `sudo systemctl start mongod ` 2. 檢查程序是否正常運行 `sudo systemctl status mongod` ![image](https://hackmd.io/_uploads/BJt7lnQeA.png) 3. 確保系統開機時自動將 mongodb 服務帶起來的指令 `sudo systemctl enable mongod` 4. 執行 MongoDB Shell 指令 `mongosh` ![image](https://hackmd.io/_uploads/ry8PknmeA.png) ## 同場加映 Failed with result 'core-dump' 本次測試環境實作時,剛好遇上這個問題,若你也有一樣的情形,可以參考一下我的經驗,先附上案發現場紀實 ![image](https://hackmd.io/_uploads/rkCY-3mlA.png) 爬文得知其中的錯誤訊息`mongod.service: Main process exited, code=dumped, status=4/ILL` 是指 mongod.service 含有非法指令,導致 cpu 停止運行,技術細節這邊不深究,有興趣可以參考[這篇文章](https://superuser.com/questions/1814515/mongodb-error-failed-with-result-core-dump),這邊直接講結論,符合下列兩種情形都可能導致錯誤發生: * 硬體設備太老舊不支援 AVX 指令集擴充,只能更新硬體設備 * 在虛擬環境下運行,很可能因為相容性設定關係隱藏實體 cpu flags,請依下列方式調整(這邊以 Proxmox 舉例) 將虛擬機器關機後調整成 host,將虛擬環境的 cpu 架構設定指向實體 cpu 即可 ![image](https://hackmd.io/_uploads/HJjZ0FQl0.png) 再次啟動服務,確認服務在線即可 ![image](https://hackmd.io/_uploads/BJt7lnQeA.png) ## 參考文章 [MongoDB 官方文件](https://www.mongodb.com/docs/manual/tutorial/install-mongodb-on-ubuntu/) [MongoDB on Ubuntu 22.04](https://techvblogs.com/blog/install-and-secure-mongodb-on-ubuntu-22-04#google_vignette)