*このチュートリアルの以前のバージョンは、Melissa Andersonによって作成されました。*

はじめに

MongoDBは、*Mongo*とも呼ばれ、多くの最新のWebアプリケーションで使用されているオープンソースドキュメントデータベースです。従来のテーブルベースのリレーショナルデータベース構造に依存しないため、NoSQLデータベースとして分類されます。

代わりに、動的スキーマを持つJSONのようなドキュメントを使用します。つまり、リレーショナルデータベースとは異なり、MongoDBはデータベースにデータを追加する前に事前定義されたスキーマを必要としません。更新されたスキーマを使用して新しいデータベースを設定しなくても、いつでも必要なだけスキーマを変更できます。

このチュートリアルでは、Ubuntu 20.04サーバーにMongoDBをインストールしてテストし、systemdサービスとして管理する方法を学びます。

前提条件

mongodb illustration for: 前提条件

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

  • Ubuntu 20.04サーバー1台。このサーバーにはroot以外の管理権限が付与されたユーザーと、ufwで設定されたファイアウォールが必要です。Ubuntu 20.04 初期サーバーセットアップガイドに従ってこれをセットアップします。

ステップ1 — MongoDBをインストールする

Ubuntuの公式パッケージリポジトリには、MongoDBの安定版が含まれています。ただし、この執筆時点では、デフォルトのUbuntuリポジトリから入手できるMongoDBのバージョンは<^>3.6<^>であり、最新の安定版リリースは<^>4.4<^>です。

このソフトウェアの最新バージョンを入手するには、MongoDBの専用パッケージリポジトリをAPTソースに追加する必要があります。その後、MongoDBの常に利用可能な最新バージョンのメタパッケージであるmongodb-orgをインストールすることができます。

次のコマンドを実行して、MongoDBの最新の安定バージョンの公開GPGキーをインポートして開始します。<^>4.4<^>以外の MongoDBのバージョンを使用する場合は、インストールするバージョンに合わせて、このコマンドのURL部分の<^>4.4<^>を必ず変更してください。

				
					
curl -fsSL &lt;^&gt;https://www.mongodb.org/static/pgp/server-4.4.asc&lt;^&gt; | sudo apt-key add -

				
			

cURLは、データ転送に使用される多くのオペレーティングシステムで使用できるコマンドラインツールです。渡されたURLに保存されているデータをすべて読み取り、その内容をシステムに出力します。次の例では、cURLはGPGキーファイルの内容を出力し、次のsudo apt-key add -コマンドにパイプして、信頼できるキーのリストにGPGキーを追加します。

また、このcurlコマンドは基本的に、うまく動作できなくてもエラーを表示しない-fsSLオプションを使用することに注意してください。何らかの理由でcURLがGPGサーバーに接続できない場合、またはGPGサーバーがダウンしている場合でも、結果のエラーコードが信頼できるキーのリストに誤って追加されません。

このコマンドは、キーが正常に追加された場合にOKを返します。

				
					
[secondary_label Output]

OK

				
			

キーが正しく追加されたことを再確認する場合は、次のコマンドを使用します。

				
					
apt-key list

				
			

これにより、出力のどこかにMongoDBキーが返されます。

				
					
[secondary_label Output]

/etc/apt/trusted.gpg

--------------------

pub   rsa4096 2019-05-28 [SC] [expires: 2024-05-26]

      2069 1EEC 3521 6C63 CAF6  6CE1 6564 08E3 90CF B1F5

uid           [ unknown] MongoDB 4.4 Release Signing Key &lt;packaging@mongodb.com&gt;

. . .

				
			

この時点では、APTインストールは最新バージョンのMongoDBをインストールするために必要なMongodb-orgパッケージの場所をまだ認識していません。

サーバー上で、APTがダウンロードおよびインストールするパッケージのオンラインソースを探す場所は、sources.listファイルとsources.list.dディレクトリの2つです。 sources.listは、APTデータの有効なソースを一覧表示するファイルで、1行につき1つのソースがリストされ、最も優先されるソースが最初に表示されます。source.list.dディレクトリでは、このようなsource.listエントリを個別のファイルとして追加できます。

次のコマンドを入力すると、sources.list.dディレクトリに mongodb-org-4.4.listという名前のファイルが作成されます。このファイルの内容は次の1行のみです。deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse:

				
					
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list

				
			

この行は、ソースが何であるか、およびソースの場所など必要な全情報APTに伝えます。

  • deb:ソースエントリが通常のDebianアーキテクチャを参照することを意味します。行のこの部分はdeb-srcを読み取る場合もあり、ソースエントリがDebianディストリビューションのソースコードを参照することを意味します。
  • 【arch=amd64,arm64]: APTデータをダウンロードするアーキテクチャを指定します。この場合、amd64arm64アーキテクチャを指定します。
  • https://repo.mongodb.org/apt/ubuntu:APTデータを取得できる場所を表すURIです。この場合、URIは公式のMongoDBリポジトリが配置されているHTTPSアドレスを指します。
  • focal/mongodb-org/4.4:Ubuntuリポジトリには複数の異なるリリースを含めることができます。これは、Ubuntuのfocalリリースで利用可能なmongodb-orgパッケージのバージョン4.4のみが必要であることを指定します(「Focal Fossa」はUbuntu 20.04のコードネームです)。
  • multiverse:APTが4つの主要なUbuntuリポジトリの1つを指していることを示しています。この場合、multiverse リポジトリを指しています。

このコマンドを実行した後、サーバーのローカルパッケージインデックスを更新して、APTがmongodb-orgパッケージの場所を認識できるようにします。

				
					
sudo apt update

				
			

その後、MongoDBをインストールできます。

				
					
sudo apt install mongodb-org

				
			

画面が表示されたら、Yを押してから、ENTERを押して、パッケージをインストールすることを確認します。

コマンドが終了すると、MongoDBがシステムにインストールされます。ただし、まだ使用する準備は整っていません。次に、MongoDBを起動し、正常に動作していることを確認します。

ステップ2 — MongoDBサービスの開始とデータベースのテスト

前の手順で説明したインストールプロセスは、systemdによって制御されるデーモンとしてMongoDBを実行するように自動的に設定しています。つまり、さまざまなsystemctlコマンドを使用してMongoDBを管理できます。ただし、このインストール手順では、サービスは自動的に開始されません。

次のsystemctlコマンドを実行してMongoDBサービスを開始します。

				
					
sudo systemctl start mongod.service

				
			

次に、サービスのステータスを確認します。このコマンドには、サービスファイル定義に.serviceが含まれないことに注意してください。 systemctlは、このサフィックスがまだ存在しない場合は、自動的に渡す引数にこのサフィックスを追加するため、それを含める必要はありません。

				
					
sudo systemctl status mongod

				
			

このコマンドは、サービスが起動して稼働中であることを示す次のような出力を返します。

				
					
[secondary_label Output]

● mongod.service - MongoDB Database Server

     Loaded: loaded (/lib/systemd/system/mongod.service; disabled; vendor preset: enabled)

     Active: &lt;^&gt;active (running)&lt;^&gt; since Tue 2020-06-09 12:57:06 UTC; 2s ago

       Docs: https://docs.mongodb.org/manual

   Main PID: 37128 (mongod)

     Memory: 64.8M

     CGroup: /system.slice/mongod.service

             └─37128 /usr/bin/mongod --config /etc/mongod.conf

				
			

サービスが期待通りに稼働していることを確認した後、MongoDBサービスがブート時に起動できるようにします。

				
					
sudo systemctl enable mongod

				
			

さらに、データベースサーバーに接続して診断コマンドを実行することにより、データベースが稼働していることを確認できます。次のコマンドはデータベースに接続し、現在のバージョン、サーバーアドレス、ポートを出力します。また、 MongoDB の内部 connectionStatus コマンドの結果も返し ます。

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

				
			

connectionStatusは、データベース接続のステータスを確認して返します。okフィールドの1の値は、サーバーが期待通りに動作していることを示しています。

				
					
[secondary_label Output]

MongoDB shell version v4.4.0

connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&amp;gssapiServiceName=mongodb

Implicit session: session { "id" : UUID("1dc7d67a-0af5-4394-b9c4-8a6db3ff7e64") }

MongoDB server version: 4.4.0

{

	"authInfo" : {

		"authenticatedUsers" : [ ],

		"authenticatedUserRoles" : [ ]

	},

	"ok" : &lt;^&gt;1&lt;^&gt;

}

				
			

また、 データベースは localhostを表すローカルループバックアドレス である127.0.0.127017ポートで実行されていることに注意してください。これはMongoDBのデフォルトのポート番号です。

次に、systemdでMongoDBサーバーインスタンスを管理する方法について説明します。

ステップ3 — MongoDBサービスの管理

前述したように、ステップ1で説明したインストールプロセスは、MongoDBをsystemdサービスとして実行するように設定します。つまり、他のUbuntuシステムサービスと同様に、標準的なsystemctlコマンドを使用して管理できるということです。

既に説明したように、systemctl statusコマンドはMongoDBサービスのステータスを確認します。

				
					
sudo systemctl status mongod

				
			

次のように入力すると、いつでもサービスを停止できます。

				
					
sudo systemctl stop mongod

				
			

停止時にサービスを開始するには、次のコマンドを実行します。

				
					
sudo systemctl start mongod

				
			

稼働時にサーバーを再起動することもできます。

				
					
sudo systemctl restart mongod

				
			

ステップ2では、MongoDBがサーバーで自動的に起動するように設定しました。この自動起動を無効にしたい場合は、次のように入力します。

				
					
sudo systemctl disable mongod

				
			

次に、ブート時に起動できるよう再度有効にするには、enableコマンドを再び実行します。

				
					
sudo systemctl enable mongod

				
			

systemdサービスの管理方法の詳細については、Systemd エッセンシャルーサービス、ユニット、およびジャーナルの操作をご覧ください。

まとめ

このチュートリアルでは、公式MongoDBリポジトリをAPTインスタンスに追加し、最新バージョンのMongoDBをインストールしました。そして、Mongoの機能をテストし、systemctlコマンドを練習しました。

次のステップとして、Ubuntu 20.04でMongoDBを保護する方法のガイドに従って、MongoDBインストールのセキュリティを強化することを強くお勧めします。セキュリティが確保されたら、リモート接続を受け入れるようにMongoDBを設定できます。

MongoDBの設定方法および使用方法については、これらのthe cloud providerコミュニティ記事でも多くのチュートリアルを紹介しています。MongoDBが提供する可能性についての優れたリソースであるため、公式のMongoDB のドキュメントを確認することもお勧めします。