Ubuntu18.04のデフォルトのAPTリポジトリからMongoDBをインストールする方法
著者は、 Creative Commons Corporation を選択して、 Write forDOnationsプログラムの一環として100ドルの寄付を受け取りました。
序章
MongoDB は、 Mongo とも呼ばれ、最新のWebアプリケーションで一般的に使用されている無料のオープンソースNoSQLドキュメントデータベースです。
このチュートリアルでは、MongoDBをインストールし、そのサービスを管理し、オプションでリモートアクセスを有効にします。
注:この記事の執筆時点で、このチュートリアルでは、デフォルトのUbuntuリポジトリから入手できるバージョンであるMongoDBのバージョン3.6をインストールします。 ただし、通常は、MongoDBの最新バージョン(この記事の執筆時点ではバージョン 4.4 )を代わりにインストールすることをお勧めします。 最新バージョンのMongoDBをインストールする場合は、SourceからUbuntu18.04にMongoDBをインストールする方法に関するこのガイドに従うことをお勧めします。
前提条件
このチュートリアルに従うには、次のものが必要です。
- この初期サーバーセットアップチュートリアルに従ってセットアップされた1つのUbuntu18.04サーバー。これには、sudo非rootユーザーとファイアウォールが含まれます。
ステップ1—MongoDBをインストールする
Ubuntuの公式パッケージリポジトリにはMongoDBが含まれています。つまり、apt
を使用して必要なパッケージをインストールできます。 はじめに述べたように、デフォルトのリポジトリから入手できるバージョンは最新のものではありません。 最新バージョンのMongoをインストールするには、代わりにこのチュートリアルに従ってください。
まず、パッケージリストを更新して、リポジトリリストの最新バージョンを取得します。
- sudo apt update
次に、MongoDBパッケージ自体をインストールします。
- sudo apt install -y mongodb
このコマンドは、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 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
の値は、サーバーが正常に動作していることを示します。
次に、サーバーインスタンスを管理する方法を見ていきます。
ステップ3—MongoDBサービスの管理
MongoDBはsystemdサービスとしてインストールされます。つまり、Ubuntuの他のすべてのシステムサービスと一緒に標準のsystemd
コマンドを使用して管理できます。
サービスのステータスを確認するには、次のように入力します。
- sudo systemctl status mongodb
次のように入力すると、いつでもサーバーを停止できます。
- sudo systemctl stop mongodb
サーバーが停止しているときにサーバーを起動するには、次のように入力します。
- sudo systemctl start mongodb
次の1つのコマンドでサーバーを再起動することもできます。
- 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には、アプリケーションをホストしている別のサーバーなど、特定の信頼できる場所からのみアクセスする必要があります。 このタスクを実行するために、明示的に接続を許可される別のサーバーのIPアドレスを指定しながら、MongoDBのデフォルトポートへのアクセスを許可できます。
- 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サーバーへの接続を許可することにした場合、出力に Anywhere の代わりに、許可された場所のIPアドレスが表示されます。
サービスへのアクセスを制限するためのより高度なファイアウォール設定は、 UFW Essentials:Common Firewall RulesandCommandsにあります。
ポートが開いていても、MongoDBは現在ローカルアドレス127.0.0.1
のみをリッスンしています。 リモート接続を許可するには、サーバーのパブリックにルーティング可能なIPアドレスをmongod.conf
ファイルに追加します。
エディターでMongoDB構成ファイルを開きます。
- sudo nano /etc/mongodb.conf
サーバーのIPアドレスをbindIP
の値に追加します。
[label ]
...
logappend=true
bind_ip = 127.0.0.1,your_server_ip
#port = 27017
...
既存のIPアドレスと追加したIPアドレスの間に必ずコンマを入れてください。
ファイルを保存し、エディターを終了して、MongoDBを再起動します。
- sudo systemctl restart mongodb
MongoDBは現在リモート接続をリッスンしていますが、誰でもアクセスできます。 Ubuntu 16.04 にMongoDBをインストールして保護する方法のパート2に従って、管理ユーザーを追加し、さらにロックダウンします。
結論
MongoDBの構成と使用方法に関するより詳細なチュートリアルは、これらのDigitalOceanコミュニティの記事にあります。 公式のMongoDBドキュメントも、MongoDBが提供する可能性に関する優れたリソースです。