和Mac OS相處-環境設置
透過「重灌mongoDB」這件事情摸到Mac OS的一點邊邊
前言
一直以來都是Windows的使用者,不過在提供公司電腦的狀況,就稍稍碰一下Mac OS,也有些有趣的事情發生,就記錄一下當作有趣的學習吧。
初步從「快速上手Linux的九堂課」了解到的是,Mac OS和linux本質上是不一樣的東西,Mac OS從BSD Unix系統衍生而來,而Linux則因為沒有沿用Unix的原始碼,有時會被稱為Unix-like作業系統。
心得、結論
- 「重灌」是一個基於Windows的概念,對於Mac OS來說,更換command的版本其實就是更換要執行command的目錄,只要確保原本的命令已經停止,這時候執行新的命令,基底就已經不同了。
- 想要把命令變為global,而不需要每次都搜尋特定路徑,可以使用
export PATH=./<bin目錄的路徑>:$PATH
目標、前提條件
這次目標來源是因為新開發的應用程式的mongoDB是使用較新的版本,於是就需要將電腦裡面原本的3.4升級到5.0。
另外最正規、最能相容舊資料的方式是按照mongoDB升級的版本一一升級,這樣比較可以確保舊資料不會出現問題,不過因為我是新電腦,裡面沒有任何資料,所以會用最暴力的直接重灌以省事。
步驟
- 檢查mongoDB有沒有在run
- 清除原本的mongoDB
- 下載新的mongoDB
- 註冊mongoDB的command: mongod、mongo
檢查mongoDB有沒有在run
感謝仲崴,提供了一個非常有幫助的stack overflow資料
指令: ps -ef | grep mongod | grep -v grep | wc -l | tr -d ' '
若有出現任何數字就代表MongoDB的process正在運作,回答者甚至認真地說明每段指令的運作方式:
ps -ef | grep mongod
回傳所有跟mongod有關且正在運行的process
grep -v grep
當我們運行前面的指令時,grep mongod也會變成一個process並出現在回傳的資料上面(意思是若缺少這段指令一定會出現非0的數字),於是需要在前面指令執行後用這段指令排除新增加的指令,將所有grep的指令都篩除掉。
wc -l
現在已經有所有條可能性的指令都列出來了,接著就是透過這條指令去數(count)。
tr -d ' '
前面的指令包含額外的空白,所以為了整齊、方便閱讀,使用這條指令去清除多餘的空白。
清除原本的mongoDB執行序
在了解仍然有mongoDB在process中時,我們會先停止執行序再刪除相關資料。
pkill -f mongod
接著就解除安裝,若是使用brew安裝的使用這個指令
brew uninstall mongodb
若是自己去網站下載並解壓縮的話,使用這個指令
rm -rf <mongodb_folder>
如果需要清除掉資料的話(通常用這麼暴力的升級方式你應該是需要啦XD)
# 檔案通常都被放在下面的位置
rm -rf /usr/local/var/mongodb
rm -rf /data/db
下載新的mongoDB
接著我們下載最新的mongoDB,根據資訊,HomeBrew從2019年的9月就已經將mongodb的資料從核心倉庫移除,但還是有社區版的可以使用!!
不過我這次是採取官方網站下載的方式。
基本上步驟就是
- 下載
- 解壓縮
接著就是下一個大階段:註冊指令。
下載
到社區版的官方網站下載,下載後解壓縮他
可以使用指令:
sudo tar -zxvf <該壓縮檔案>
註冊mongoDB的command: mongod、mongo
有兩件事情要注意
- 一定要做的是指定DB所在的資料夾,預設值其實是/data/db ,你可以建一個;或是自己找其他地方,但後者妳就需要指定DB的資料夾
# 建立存放DB的資料夾
sudo mkdir -p /data/db# 若出現讀寫權問題使用下列指令
sudo chmod 777 /data/db
# 或這個指令
sudo chown <使用者名稱> <DB資料夾路徑>
- 第二件事情是視需求決定需不需要log日誌
設定同上。
最後開啟mongoDB時,看你是否使用預設值決定參數
# 若是自己找其他資料夾作為DB資料夾則要改為使用,注意後者是檔案喔!
mongod --dbpath <DB資料夾路徑> --logpath <log檔案路徑>
參考資料