Ubuntu 18.04にMongoDBをインストールする方法

著者は、Write for DOnationsプログラムの一部として100ドルの寄付を受け取るためにCreative Commons Corporationを選択しました。

前書き

MongoDBは、最新のWebアプリケーションで一般的に使用されている無料のオープンソースNoSQLドキュメントデータベースです。

このチュートリアルでは、MongoDBをインストールし、そのサービスを管理し、オプションでリモートアクセスを有効にします。

前提条件

このチュートリアルを実行するには、次のものが必要です。

  • このinitial server setup tutorialに従ってセットアップされた1つのUbuntu 18.04サーバー。これには、sudo非rootユーザーとファイアウォールが含まれます。

[[step-1 -—- installing-mongodb]] ==ステップ1—MongoDBのインストール

Ubuntuの公式パッケージリポジトリには、最新バージョンのMongoDBが含まれています。つまり、aptを使用して必要なパッケージをインストールできます。

最初に、パッケージリストを更新して、リポジトリリストの最新バージョンを取得します。

sudo apt update

次に、MongoDBパッケージ自体をインストールします。

sudo apt install -y mongodb

このコマンドは、MongoDBサーバーの有用な管理ツールとともに、MongoDBの最新の安定バージョンを含むいくつかのパッケージをインストールします。 データベースサーバーはインストール後に自動的に起動します。

次に、サーバーが実行中で正常に動作していることを確認しましょう。

[[step-2 -—- checking-the-service-and-database]] ==ステップ2—サービスとデータベースのチェック

インストールプロセスはMongoDBを自動的に開始しましたが、サービスが開始され、データベースが機能していることを確認しましょう。

まず、サービスのステータスを確認します。

sudo systemctl status mongodb

次の出力が表示されます。

Output● mongodb.service - An object/document-oriented database
   Loaded: loaded (/lib/systemd/system/mongodb.service; enabled; vendor preset: enabled)
   Active: active (running) since Sat 2018-05-26 07:48:04 UTC; 2min 17s ago
     Docs: man:mongod(1)
 Main PID: 2312 (mongod)
    Tasks: 23 (limit: 1153)
   CGroup: /system.slice/mongodb.service
           └─2312 /usr/bin/mongod --unixSocketPrefix=/run/mongodb --config /etc/mongodb.conf

systemdによると、MongoDBサーバーは稼働しています。

データベースサーバーに実際に接続し、診断コマンドを実行することにより、これをさらに検証できます。

このコマンドを実行してください。

mongo --eval 'db.runCommand({ connectionStatus: 1 })'

これにより、現在のデータベースのバージョン、サーバーのアドレスとポート、およびstatusコマンドの出力が出力されます。

OutputMongoDB shell version v3.6.3
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.6.3
{
        "authInfo" : {
                "authenticatedUsers" : [ ],
                "authenticatedUserRoles" : [ ]
        },
        "ok" : 1
}

応答のokフィールドの1の値は、サーバーが正しく機能していることを示します。

次に、サーバーインスタンスの管理方法を見ていきます。

[[step-3 -—- managing-the-mongodb-service]] ==ステップ3—MongoDBサービスの管理

MongoDBはsystemdサービスとしてインストールされます。つまり、Ubuntuの他のすべてのシステムサービスと一緒に標準のsystemdコマンドを使用して管理できます。

サービスのステータスを確認するには、次を入力します。

sudo systemctl status mongodb

次のように入力して、サーバーをいつでも停止できます。

sudo systemctl stop mongodb

停止時にサーバーを起動するには、次を入力します。

sudo systemctl start mongodb

単一のコマンドでサーバーを再起動することもできます。

sudo systemctl restart mongodb

デフォルトでは、MongoDBはサーバーで自動的に起動するように設定されています。 自動起動を無効にする場合は、次を入力します。

sudo systemctl disable mongodb

再度有効にするのは簡単です。 これを行うには、次を使用します。

sudo systemctl enable mongodb

次に、MongoDBインストールのファイアウォール設定を調整しましょう。

[[step-4 -—- adjusting-the-firewall-optional]] ==ステップ4—ファイアウォールの調整(オプション)

サーバーでファイアウォールを有効にするためにinitial server setup tutorialの指示に従ったとすると、MongoDBサーバーはインターネットからアクセスできなくなります。

MongoDBサーバーを同じサーバーで実行されているアプリケーションでローカルでのみ使用する場合は、これが推奨される安全な設定です。 ただし、インターネットからMongoDBサーバーに接続できるようにする場合は、ufwで着信接続を許可する必要があります。

どこからでもデフォルトのポート27017でMongoDBにアクセスできるようにするには、sudo ufw allow 27017を使用できます。 ただし、デフォルトのインストールでMongoDBサーバーへのインターネットアクセスを有効にすると、誰でもデータベースサーバーとそのデータに無制限にアクセスできます。

ほとんどの場合、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: Common Firewall Rules and Commandsにあります。

ポートが開いていても、MongoDBは現在ローカルアドレス127.0.0.1のみをリッスンしています。 リモート接続を許可するには、サーバーのパブリックにルーティング可能なIPアドレスをmongod.confファイルに追加します。

エディターでMongoDB構成ファイルを開きます。

sudo nano /etc/mongodb.conf

サーバーのIPアドレスをbindIP値に追加します。

...
logappend=true

bind_ip = 127.0.0.1,your_server_ip
#port = 27017

...

既存のIPアドレスと追加したIPアドレスの間に必ずコンマを入れてください。

ファイルを保存し、エディターを終了して、MongoDBを再起動します。

sudo systemctl restart mongodb

MongoDBは現在リモート接続をリッスンしていますが、誰でもアクセスできます。 How to Install and Secure MongoDB on Ubuntu 16.04のパート2に従って、管理ユーザーを追加し、さらにロックダウンします。

結論

these DigitalOcean community articlesでMongoDBを構成および使用する方法に関するより詳細なチュートリアルを見つけることができます。 公式のMongoDB documentationは、MongoDBが提供する可能性に関する優れたリソースでもあります。

Related