# 安裝 MongoDB for Ubuntu 22.04

## 概述
本文將說明如何在 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`

2. 檢查處理器規格 `lscpu`

> 補充說明:
> Linux 可以透過 `cat /proc/cpuinfo` 來查詢 cpu 詳細資訊,內容包括型號、核心數、最高頻率、幾個線程等等
> 
>
> Intel 官網上可以查到這個型號,由此得知他是什麼指令集
> 
>
> 但這樣更麻煩就是了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`

3. 確保系統開機時自動將 mongodb 服務帶起來的指令
`sudo systemctl enable mongod`
4. 執行 MongoDB Shell 指令
`mongosh`

## 同場加映 Failed with result 'core-dump'
本次測試環境實作時,剛好遇上這個問題,若你也有一樣的情形,可以參考一下我的經驗,先附上案發現場紀實

爬文得知其中的錯誤訊息`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 即可

再次啟動服務,確認服務在線即可

## 參考文章
[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)