このチュートリアルの以前のバージョンは、Melissa Andersonによって作成されました。
はじめに
MongoDBは、Mongoとも呼ばれ、多くの最新のWebアプリケーションで使用されているオープンソースドキュメントデータベースです。従来のテーブルベースのリレーショナルデータベース構造に依存しないため、NoSQLデータベースとして分類されます。
代わりに、動的スキーマを持つJSONのようなドキュメントを使用します。つまり、リレーショナルデータベースとは異なり、MongoDBはデータベースにデータを追加する前に事前定義されたスキーマを必要としません。更新されたスキーマを使用して新しいデータベースを設定しなくても、いつでも必要なだけスキーマを変更できます。
このチュートリアルでは、Ubuntu 20.04サーバーにMongoDBをインストールしてテストし、systemd
サービスとして管理する方法を学びます。
前提条件
このチュートリアルを実行するには、次が必要です。
ステップ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 https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add -
cURLは、データ転送に使用される多くのオペレーティングシステムで使用できるコマンドラインツールです。渡されたURLに保存されているデータをすべて読み取り、その内容をシステムに出力します。次の例では、cURLはGPGキーファイルの内容を出力し、次のsudo apt-key add -
コマンドにパイプして、信頼できるキーのリストにGPGキーを追加します。
また、このcurl
コマンドは基本的に、うまく動作できなくてもエラーを表示しない-fsSL
オプションを使用することに注意してください。何らかの理由でcURLがGPGサーバーに接続できない場合、またはGPGサーバーがダウンしている場合でも、結果のエラーコードが信頼できるキーのリストに誤って追加されません。
このコマンドは、キーが正常に追加された場合にOK
を返します。
Output
OK
キーが正しく追加されたことを再確認する場合は、次のコマンドを使用します。
これにより、出力のどこかにMongoDBキーが返されます。
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 <[email protected]>
. . .
この時点では、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データをダウンロードするアーキテクチャを指定します。この場合、amd64
とarm64
アーキテクチャを指定します。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
パッケージの場所を認識できるようにします。
その後、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
このコマンドは、サービスが起動して稼働中であることを示す次のような出力を返します。
Output
● mongod.service - MongoDB Database Server
Loaded: loaded (/lib/systemd/system/mongod.service; disabled; vendor preset: enabled)
Active: active (running) 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
の値は、サーバーが期待通りに動作していることを示しています。
Output
MongoDB shell version v4.4.0
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("1dc7d67a-0af5-4394-b9c4-8a6db3ff7e64") }
MongoDB server version: 4.4.0
{
"authInfo" : {
"authenticatedUsers" : [ ],
"authenticatedUserRoles" : [ ]
},
"ok" : 1
}
また、 データベースは localhostを表すローカルループバックアドレス である127.0.0.1
の27017
ポートで実行されていることに注意してください。これは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の設定方法および使用方法については、これらのDigitalOceanコミュニティ記事でも多くのチュートリアルを紹介しています。MongoDBが提供する可能性についての優れたリソースであるため、公式のMongoDB のドキュメントを確認することもお勧めします。