Ubuntu20.04のデフォルトのAPTリポジトリからMongoDBをインストールする方法
序章
MongoDB は、最新のWebアプリケーションで一般的に使用されている無料のオープンソースNoSQLドキュメントデータベースです。
このチュートリアルでは、MongoDBをインストールし、そのサービスを管理し、オプションでリモートアクセスを有効にします。
注:この記事の執筆時点で、このチュートリアルでは、デフォルトのUbuntuリポジトリから入手できるバージョンであるMongoDBのバージョン3.6をインストールします。 ただし、通常は、MongoDBの最新バージョン(この記事の執筆時点ではバージョン 4.4 )を代わりにインストールすることをお勧めします。 最新バージョンのMongoDBをインストールする場合は、SourceからUbuntu20.04にMongoDBをインストールする方法に関するこのガイドに従うことをお勧めします。
前提条件
このチュートリアルに従うには、次のものが必要です。
- この初期サーバーセットアップチュートリアルに従ってセットアップされた1つのUbuntu20.04サーバー。これには、管理者権限を持つ非rootユーザーと、UFWで構成されたファイアウォールが含まれます。
ステップ1—MongoDBをインストールする
Ubuntuの公式パッケージリポジトリにはMongoDBが含まれています。つまり、apt
を使用して必要なパッケージをインストールできます。 はじめに述べたように、デフォルトのリポジトリから入手できるバージョンは最新のものではありません。 最新バージョンのMongoをインストールするには、代わりにこのチュートリアルに従ってください。
まず、パッケージリストを更新して、リポジトリリストの最新バージョンを取得します。
sudo apt update
次に、MongoDBパッケージ自体をインストールします。
sudo apt install mongodb
このコマンドは、mongodb
パッケージとその依存関係をインストールすることを確認するためのプロンプトを表示します。 これを行うには、Y
を押してからENTER
を押します。
このコマンドは、MongoDBの安定バージョンを含むいくつかのパッケージと、MongoDBサーバー用の便利な管理ツールをインストールします。 データベースサーバーは、インストール後に自動的に起動されます。
次に、サーバーが実行され、正しく機能していることを確認しましょう。
ステップ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 Thu 2020-10-08 14:23:22 UTC; 49s ago Docs: man:mongod(1) Main PID: 2790 (mongod) Tasks: 23 (limit: 2344) Memory: 42.2M CGroup: /system.slice/mongodb.service └─2790 /usr/bin/mongod --unixSocketPrefix=/run/mongodb --config /etc/mongodb.conf
この出力によると、MongoDBサーバーは稼働しています。
実際にデータベースサーバーに接続し、次の診断コマンドを実行することで、これをさらに確認できます。 これにより、現在のデータベースバージョン、サーバーアドレスとポート、およびstatusコマンドの出力が出力されます。
mongo --eval 'db.runCommand({ connectionStatus: 1 })'
OutputMongoDB shell version v3.6.8 connecting to: mongodb://127.0.0.1:27017 Implicit session: session { "id" : UUID("e3c1f2a1-a426-4366-b5f8-c8b8e7813135") } MongoDB server version: 3.6.8 { "authInfo" : { "authenticatedUsers" : [ ], "authenticatedUserRoles" : [ ] }, "ok" : 1 }
応答のok
フィールドの1
の値は、サーバーが正常に動作していることを示します。
次に、サーバーインスタンスを管理する方法を見ていきます。
ステップ3—MongoDBサービスの管理
手順1で概説したインストールプロセスでは、MongoDBをsystemd
サービスとして構成します。つまり、Ubuntuの他のすべてのシステムサービスと一緒に標準のsystemctl
コマンドを使用して管理できます。
サービスのステータスを確認するには、次のように入力します。
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インストールのファイアウォール設定を調整しましょう。
手順4—ファイアウォールの調整(オプション)
初期サーバーセットアップチュートリアルの手順に従ってサーバーのファイアウォールを有効にすると、インターネットからMongoDBサーバーにアクセスできなくなります。
同じサーバー上で実行されているアプリケーションでローカルでのみMongoDBサーバーを使用する場合は、これが推奨される安全な設定です。 ただし、インターネットからMongoDBサーバーに接続できるようにする場合は、UFWルールを追加して着信接続を許可する必要があります。
どこからでもデフォルトポート27017
でMongoDBにアクセスできるようにするには、sudo ufw allow 27017
を実行できます。 ただし、デフォルトのインストールでMongoDBサーバーへのインターネットアクセスを有効にすると、データベースサーバーとそのデータに無制限にアクセスできるようになります。
ほとんどの場合、MongoDBには、アプリケーションをホストしている別のサーバーなど、特定の信頼できる場所からのみアクセスする必要があります。 別の信頼できるサーバーによるMongoDBのデフォルトポートへのアクセスのみを許可するには、ufw
コマンドでリモートサーバーのIPアドレスを指定できます。 このようにして、そのマシンのみが明示的に接続を許可されます。
sudo ufw allow from trusted_server_ip/32 to any port 27017
ufw
を使用して、ファイアウォール設定の変更を確認できます。
sudo ufw status
出力で許可されているポート27017
へのトラフィックが表示されます。 特定のIPアドレスのみにMongoDBサーバーへの接続を許可することにした場合、このコマンドの出力には、Anywhere
の代わりに許可された場所のIPアドレスが表示されることに注意してください。
OutputStatus: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere 27017 ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) 27017 (v6) ALLOW Anywhere (v6)
サービスへのアクセスを制限するためのより高度なファイアウォール設定は、 UFW Essentials:Common Firewall RulesandCommandsにあります。
ポートが開いていても、MongoDBはローカルアドレス127.0.0.1
でのみリッスンします。 リモート接続を許可するには、サーバーのパブリックにルーティング可能なIPアドレスをmongodb.conf
ファイルに追加します。
お好みのテキストエディタでMongoDB構成ファイルを開きます。 このコマンド例では、nano
を使用しています。
sudo nano /etc/mongodb.conf
MongoDBサーバーのIPアドレスをbindIP
値に追加します。 既存のIPアドレスと追加したIPアドレスの間に必ずコンマを入れてください。
/etc/mongodb.conf
... logappend=true bind_ip = 127.0.0.1,your_server_ip #port = 27017 ...
ファイルを保存して、エディターを終了します。 nano
を使用してファイルを編集した場合は、CTRL + X
、Y
、ENTER
の順に押して編集します。
次に、MongoDBサービスを再起動します。
sudo systemctl restart mongodb
MongoDBは現在リモート接続をリッスンしていますが、誰でもアクセスできます。 Ubuntu 20.04でMongoDBを保護する方法に従って、管理ユーザーを追加し、さらにロックダウンします。
結論
MongoDBの構成と使用方法に関するより詳細なチュートリアルは、これらのDigitalOceanコミュニティの記事にあります。 公式のMongoDBドキュメントも、MongoDBが提供する可能性に関する優れたリソースです。