MongoDB是一個免費的開源NoSQL文檔數據庫,在現代Web應用程序中常用。在本教程中,您將安裝MongoDB,管理其服務,並可選擇啟用遠程訪問。要遵循這個......
介紹
MongoDB是一個免費的開源NoSQL文檔數據庫,在現代Web應用程序中常用。
在本教程中,您將安裝MongoDB,管理其服務,並可選擇啟用遠程訪問。
先決條件
要學習本教程,您需要按照此初始服務器設置教程設置一個Debian 9服務器,包括啟用了sudo的非root用戶和防火牆。
第1步 - 安裝MongoDB
Debian 9的官方軟件包存儲庫包含稍微過時的MongoDB版本,這意味着我們將從官方的MongoDB repo安裝。
首先,我們需要使用apt-key add MongoDB簽名密鑰。 在執行此操作之前,我們需要確保安裝了curl命令:
sudo apt install curl
接下來我們下載密鑰並將其傳遞給apt-key add:
curl https://www.mongodb.org/static/pgp/server-4.0.asc | sudo apt-key add -
接下來我們將為MongoDB repo創建一個源列表,因此apt知道從哪里下載。 首先在文本編輯器中打開源列表文件:
sudo nano /etc/apt/sources.list.d/mongodb-org-4.0.list
這將打開一個新的空白文件。 粘貼如下:
/etc/apt/sources.list.d/mongodb-org-4.0.list
deb http://repo.mongodb.org/apt/debian stretch/mongodb-org/4.0 main
保存並關閉該文件,然后更新包緩存:
sudo apt update
安裝mongodb-org軟件包以安裝服務器和一些支持工具:
sudo apt-get install mongodb-org
最后,啟用並啟動mongod服務以使MongoDB數據庫運行:
sudo systemctl enable mongod
sudo systemctl start mongod
我們現在已經安裝並啟動了最新的穩定版MongoDB,以及MongoDB服務器的有用管理工具。
接下來,讓我們驗證服務器是否正在運行並正常運行。
第2步 - 檢查服務和數據庫
我們在上一步中啟動了MongoDB服務,現在讓我們驗證它是否已啟動且數據庫是否正常工作。
首先,檢查服務的狀態:
sudo systemctl status mongod
你會看到這個輸出:
Output● mongod.service - MongoDB Database Server Loaded: loaded (/lib/systemd/system/mongod.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2018-09-05 16:59:56 UTC; 3s ago Docs: https://docs.mongodb.org/manual Main PID: 4321 (mongod) Tasks: 26 CGroup: /system.slice/mongod.service └─4321 /usr/bin/mongod --config /etc/mongod.conf
根據systemd ,MongoDB服務器已啟動並運行。
我們可以通過實際連接到數據庫服務器並執行診斷命令來進一步驗證這一點
執行以下命令:
mongo --eval 'db.runCommand({ connectionStatus: 1 })'
這將輸出當前數據庫版本,服務器地址和端口以及status命令的輸出:
OutputMongoDB shell version v4.0.2 connecting to: mongodb://127.0.0.1:27017 MongoDB server version: 4.0.2 { "authInfo" : { "authenticatedUsers" : [ ], "authenticatedUserRoles" : [ ] }, "ok" : 1 }
響應中ok字段的值為1表示服務器正常工作。
接下來,我們將了解如何管理服務器實例。
第3步 - 管理MongoDB服務
MongoDB作為systemd服務安裝,這意味着您可以使用標准systemd命令以及Ubuntu中的所有其他系統服務來管理它。
要驗證服務的狀態,請鍵入:
sudo systemctl status mongod
您可以通過鍵入以下命令隨時停止服務器:
sudo systemctl stop mongod
要在服務器停止時啟動它,請鍵入:
sudo systemctl start mongod
您還可以使用以下命令重新啟動服務器:
sudo systemctl restart mongod
在上一步中,我們啟用了MongoDB以自動啟動服務器。 如果要禁用自動啟動,請鍵入:
sudo systemctl disable mongod
再次啟用它也很容易。 為此,請使用:
sudo systemctl enable mongod
接下來,讓我們調整MongoDB安裝的防火牆設置。
第4步 - 調整防火牆(可選)
假設您已按照初始服務器設置教程說明在服務器上啟用防火牆,則無法從Internet訪問MongoDB服務器。
如果您打算僅在本地使用MongoDB服務器與在同一服務器上運行的應用程序,則這是推薦的安全設置。 但是,如果您希望能夠從Internet連接到MongoDB服務器,則必須允許ufw的傳入連接。
要允許從任何地方訪問默認端口27017上的MongoDB,可以使用sudo ufw allow 27017 。 但是,在默認安裝上啟用對MongoDB服務器的Internet訪問可以使任何人無限制地訪問數據庫服務器及其數據。
在大多數情況下,只能從某些受信任的位置訪問MongoDB,例如托管應用程序的另一台服務器。 要完成此任務,您可以允許訪問MongoDB的默認端口,同時指定將明確允許連接的另一台服務器的IP地址:
sudo ufw allow from your_other_server_ip/32 to any port 27017
您可以使用ufw驗證防火牆設置的更改:
sudo ufw status
您應該看到輸出中允許的端口27017流量:
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere 27017 ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) 27017 (v6) ALLOW Anywhere (v6)
如果您決定僅允許某個IP地址連接到MongoDB服務器,則將在輸出中列出允許位置的IP地址而不是Anywhere 。
您可以在UFW Essentials中找到更高級的防火牆設置,以限制對服務的訪問:通用防火牆規則和命令 。
即使端口是打開的,MongoDB當前只監聽本地地址127.0.0.1 。 要允許遠程連接,請將服務器的可公共路由IP地址添加到mongod.conf文件中。
在編輯器中打開MongoDB配置文件:
sudo nano /etc/mongod.conf
將服務器的IP地址添加到bindIP值:
/etc/mongod.conf . . . # network interfaces net: port: 27017 bindIp: 127.0.0.1,your_server_ip
. . .
請務必在現有IP地址和您添加的IP地址之間放置逗號。
保存文件,退出編輯器,然后重新啟動MongoDB:
sudo systemctl restart mongod
MongoDB現在正在監聽遠程連接,但任何人都可以訪問它。 按照如何在Ubuntu 16.04上安裝和保護MongoDB的第2部分添加管理用戶並進一步鎖定。
結論
您可以在這些DigitalOcean社區文章中找到有關如何配置和使用MongoDB的更深入的教程。 MongoDB官方文檔也是MongoDB提供的可能性的絕佳資源。
參考https://www.howtoing.com/how-to-install-mongodb-on-debian-9
