Ubuntu20.04にMongoDBをインストールする方法
このチュートリアルの以前のバージョンは、 MelissaAndersonによって作成されました。
序章
MongoDB は、多くの最新のWebアプリケーションで使用されているドキュメントデータベースです。 従来のテーブルベースのリレーショナルデータベース構造に依存しないため、NoSQLデータベースとして分類されます。
代わりに、動的スキーマを持つJSONのようなドキュメントを使用します。つまり、リレーショナルデータベースとは異なり、MongoDBでは、データベースにデータを追加する前に事前定義されたスキーマは必要ありません。 更新されたスキーマを使用して新しいデータベースを設定しなくても、いつでも必要な頻度でスキーマを変更できます。
このチュートリアルでは、MongoDBをUbuntu 20.04サーバーにインストールしてテストし、systemd
サービスとして管理する方法を学習します。
前提条件
このチュートリアルに従うには、次のものが必要です。
- 1つのUbuntu20.04サーバー。 このサーバーには、root以外の管理ユーザーとUFWで構成されたファイアウォールが必要です。 Ubuntu20.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 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にサイレントに失敗するように指示します。 これは、何らかの理由でcURLがGPGサーバーに接続できない場合、またはGPGサーバーがダウンしている場合でも、結果のエラーコードが信頼できるキーのリストに誤って追加されないことを意味します。
キーが正常に追加された場合、このコマンドはOK
を返します。
OutputOK
キーが正しく追加されたことを再確認する場合は、次のコマンドを使用して行うことができます。
- apt-key list
これにより、出力のどこかに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つのソースがあり、最も優先されるソースが最初にリストされています。 sources.list.d
ディレクトリでは、このようなsources.list
エントリを個別のファイルとして追加できます。
次のコマンドを実行すると、sources.list.d
ディレクトリにmongodb-org-4.4.list
という名前のファイルが作成されます。 このファイルの唯一の内容は、deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse
を読み取る1行です。
- 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
この1行は、ソースが何であるか、およびソースがどこにあるかについて知る必要があるすべてを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
のみが必要であることを指定します(「FocalFossa」はUbuntu 20.04のコードネームです)。multiverse
:この部分は、APTが4つの主要なUbuntuリポジトリの1つを指していることを示しています。 この場合、それはマルチバースリポジトリを指しています。
このコマンドを実行した後、サーバーのローカルパッケージインデックスを更新して、APTがmongodb-org
パッケージの場所を認識できるようにします。
- sudo apt update
その後、MongoDBをインストールできます。
- sudo apt install mongodb-org
プロンプトが表示されたら、Y
、ENTER
の順に押して、パッケージをインストールすることを確認します。
コマンドが終了すると、MongoDBがシステムにインストールされます。 ただし、まだ使用する準備ができていません。 次に、MongoDBを起動し、正しく機能していることを確認します。
ステップ2— MongoDBサービスを開始し、データベースをテストする
前の手順で説明したインストールプロセスでは、MongoDBがsystemd
によって制御されるデーモンとして実行されるように自動的に構成されます。つまり、さまざまな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
の値は、サーバーが期待どおりに機能していることを示しています。
OutputMongoDB 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
}
また、データベースは127.0.0.1
のポート27017
で実行されており、ローカルループバックアドレスはlocalhostを表していることに注意してください。 これは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 Essentials:サービス、ユニット、およびジャーナルの操作を確認してください。
結論
このチュートリアルでは、公式のMongoDBリポジトリをAPTインスタンスに追加し、最新バージョンのMongoDBをインストールしました。 次に、Mongoの機能をテストし、いくつかのsystemctl
コマンドを練習しました。
次のステップとして、 Ubuntu 20.04でMongoDBを保護する方法のガイドに従って、MongoDBインストールのセキュリティを強化することを強くお勧めします。 保護されたら、リモート接続を受け入れるようにMongoDBを構成できます。
MongoDBを構成および使用する方法に関するその他のチュートリアルは、これらのDigitalOceanコミュニティの記事にあります。 また、MongoDBが提供する可能性についての優れたリソースであるため、公式のMongoDBドキュメントを確認することをお勧めします。