1. 程式人生 > >如何在Debian 9上安裝MongoDB

如何在Debian 9上安裝MongoDB

如何在Debian 9上安裝MongoDB

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

你會看到這個輸出:

● 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命令的輸出:

MongoDB 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提供的可能性的絕佳資源。