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アドレスの間に必ずコンマを入れてください。
...
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が提供する可能性に関する優れたリソースです。