.tgz Tarball を使用して Red Hat または CentOS に MongoDB Community をインストールする
Overview
このチュートリアルでは、ダウンロードした .tgz
tarball を使用して、Red Hat Enterprise Linux、CentOS Linux、または Oracle Linux [1] に MongoDB 7.0 コミュニティ エディション を手動でインストールします。
MongoDB バージョン
このチュートリアルでは、MongoDB 7.0 Community Edition をインストールします。別のバージョンの MongoDB Community をインストールするには、このページの左上にあるバージョンのドロップダウンメニューを使用して、該当バージョンのドキュメントを選択します。
インストール方法
このドキュメントで説明されているように、MongoDB はダウンロード済みの .tgz
tarball を使用することで手動でインストールできますが、可能であれば、システム上の yum
パッケージ マネージャーを使用してインストールすることをお勧めします。パッケージ マネージャーを使用すると、必要な依存関係が自動でインストールされ、初期構成用の mongod.conf
サンプル ファイルが提供されます。また、将来のアップグレードやメンテナンス タスクが簡素化します。
➤ 手順について詳しくは、「 Yum パッケージ マネージャーを使用して MongoDB をインストールする」を参照してください。
Considerations
MongoDB Shell、 mongosh
.tgz
パッケージを使用してサーバーをインストールする場合は、mongosh のインストール手順に従って、mongosh を個別にダウンロードしてインストールする必要があります。
プラットフォーム サポート
MongoDB 7.0 Enterprise Edition は、64 ビット バージョンの Red Hat Enterprise Linux(RHEL)、CentOS Linux、Oracle Linux [1]、Rocky Linux、AlmaLinux [2] を x86_64 アーキテクチャー上でサポートしています。
RHEL、CentOS Stream、Oracle、Rocky、AlmaLinux 9
RHEL、CentOS Stream、Oracle、Rocky、AlmaLinux 8
RHEL、CentOS、Oracle 7
MongoDB はこれらのプラットフォームの 64 ビット版のみをサポートしています。
RHEL、CentOS、Oracle、Rocky、AlmaLinux 上の MongoDB 7.0 Community Edition は、一部のプラットフォームで ARM64 アーキテクチャもサポートしています。
詳しくは、「プラットフォーム サポート」を参照してください。
[1] | (1、2) MongoDB は Red Hat Compatible Kernel(RHCK)を実行している Oracle Linux のみをサポートしています。MongoDB は Unbreakable Enterprise Kernel(UEK)をサポートしていません。 |
[2] | RHEL バージョン 8.0 以降向けにリリースされた MongoDB オンプレミス製品は、Rocky Linux バージョン 8.0 以降、および AlmaLinux バージョン 8.0 以降と互換性があり、サポートします。ただし、これらのディストリビューションが完全な RHEL 互換性を提供する義務を果たすことが前提となります。 |
プロダクション ノート
MongoDB を本番環境に導入する前に、本番環境の MongoDB導入に関するパフォーマンス上の考慮事項と構成の推奨事項を示す 自己管理型配置のプロダクション ノート を検討してください。
MongoDB Community Edition のインストール
前提条件
MongoDB Community .tgz
tarball に必要な依存関係をインストールするには、次のコマンドを使用します。
sudo yum install libcurl openssl xz-libs
手順
.tgz
から MongoDB コミュニティ エディション を手動でインストールするには、次の手順に従ってください。
バイナリが PATH
環境変数にリストされているディレクトリにあることを確認してください。
MongoDB バイナリは tarball のbin/
ディレクトリにあります。次のいずれかを実行できます。
PATH
変数にリストされている/usr/local/bin
などのディレクトリにバイナリをコピーします(必要に応じてインストール ディレクトリで/path/to/the/mongodb-directory/
を更新)sudo cp /path/to/the/mongodb-directory/bin/* /usr/local/bin/ PATH
変数にリストされている/usr/local/bin
などのディレクトリからバイナリへのシンボリック リンクを作成します(必要に応じてインストール ディレクトリで/path/to/the/mongodb-directory/
を更新)sudo ln -s /path/to/the/mongodb-directory/bin/* /usr/local/bin/
MongoDB Shell(mongosh
)をインストールします。
インストール mongosh
後、MongoDB Shell を使用してデプロイに接続します。
MongoDB ダウンロード センターから必要なmongosh
のバージョン用のパッケージをダウンロードし、パッケージを解凍します。
MongoDB コミュニティ エディションの実行
ulimit
ほとんどの Unix 系オペレーティング システムでは、プロセスが使用できるシステム リソースが制限されています。 これらの制限は MongoDB の操作に悪影響を及ぼす可能性があるため、調整する必要があります。 プラットフォームに推奨される設定については、 「 自己管理型配置の UNIX ulimit
設定」を参照してください。
注意
オープンしているファイル数のulimit
値が64000
未満の場合、MongoDB は起動警告を生成します。
ディレクトリ パス
既定のディレクトリを使用するには
MongoDB は デフォルトで、mongod
ユーザー アカウントを使用して実行され、次のデフォルト ディレクトリを使用します。
/var/lib/mongo
(データディレクトリ)/var/log/mongodb
(ログディレクトリ)
MongoDB のデータとログ ディレクトリを作成します。
sudo mkdir -p /var/lib/mongo sudo mkdir -p /var/log/mongodb
デフォルトでは、MongoDB は mongod
ユーザー アカウントを使用して実行されます。mongod
グループと mongodb
グループを作成します。mongod
がグループに属していることを確認し、これらのディレクトリの所有者とグループを mongod
に設定します。
sudo chown -R mongod:mongod /var/lib/mongo sudo chown -R mongod:mongod /var/log/mongodb
既定以外のディレクトリを使用するには
デフォルト以外のデータディレクトリやログ ディレクトリを使用するには、次の手順に従います。
新しいディレクトリ(複数可)を作成します。
構成ファイル
/etc/mongod.conf
を編集し、必要に応じて次のフィールドを変更します。storage.dbPath
で新しいデータディレクトリのパスを指定します(例:/some/data/directory
)systemLog.path
で新しいログファイルのパスを指定します(例:/some/log/directory/mongod.log
)
MongoDB を実行しているユーザーがディレクトリにアクセスできるようにします。
sudo chown -R mongod:mongod <directory> MongoDB プロセスを実行するユーザーを変更する場合は、新しいユーザーにこれらのディレクトリへのアクセス権を付与する必要があります。
SELinux が強制されている場合は、構成します。「SELinux の構成」を参照してください。
SELinux を設定する
警告
不適切に構成された SELinux ポリシーは安全でなかったり、mongod
インスタンスが動作しなくなったりする可能性があります。
SELinux が enforcing
モードの場合、MongoDB の SELinux ポリシーをカスタマイズする必要があります。
アクセス許可
cgroup
アクセス許可
netstat
アクセス許可 cgroup
現在の SELinux ポリシーでは、MongoDB プロセスが /sys/fs/cgroup
にアクセスすることを許可していません。これは、システムで使用可能なメモリを決定するのに必要なものです。SELinux を enforcing
モードで実行する場合は、SELinux ポリシーを次のように調整する必要があります。
システムに
checkpolicy
パッケージがインストールされていることを確認します。sudo yum install checkpolicy カスタム ポリシー ファイル
mongodb_cgroup_memory.te
を作成します。cat > mongodb_cgroup_memory.te <<EOF module mongodb_cgroup_memory 1.0; require { type cgroup_t; type mongod_t; class dir search; class file { getattr open read }; } #============= mongod_t ============== allow mongod_t cgroup_t:dir search; allow mongod_t cgroup_t:file { getattr open read }; EOF 作成したら、次の 3 つのコマンドを実行してカスタム ポリシー モジュールをコンパイルしてロードします。
checkmodule -M -m -o mongodb_cgroup_memory.mod mongodb_cgroup_memory.te semodule_package -o mongodb_cgroup_memory.pp -m mongodb_cgroup_memory.mod sudo semodule -i mongodb_cgroup_memory.pp
SELinux を enforcing
に設定することで、MongoDB プロセスが正しいファイルにアクセスできるようになりました。
FTDC の netstat
へのアクセスの許可
現在の SELinux ポリシーでは、MongoDB プロセスが /proc/net/netstat
を開いて読み取ることを許可していません。これは、フルタイム診断データ取得(FTDC)に必要です。SELinux を enforcing
モードで実行する場合は、SELinux ポリシーを次のように調整する必要があります。
システムに
checkpolicy
パッケージがインストールされていることを確認します。sudo yum install checkpolicy カスタム ポリシー ファイル
mongodb_proc_net.te
を作成します。cat > mongodb_proc_net.te <<EOF module mongodb_proc_net 1.0; require { type cgroup_t; type configfs_t; type file_type; type mongod_t; type proc_net_t; type sysctl_fs_t; type var_lib_nfs_t; class dir { search getattr }; class file { getattr open read }; } #============= mongod_t ============== allow mongod_t cgroup_t:dir { search getattr } ; allow mongod_t cgroup_t:file { getattr open read }; allow mongod_t configfs_t:dir getattr; allow mongod_t file_type:dir { getattr search }; allow mongod_t file_type:file getattr; allow mongod_t proc_net_t:file { open read }; allow mongod_t sysctl_fs_t:dir search; allow mongod_t var_lib_nfs_t:dir search; EOF 作成したら、次の 3 つのコマンドを実行してカスタム ポリシー モジュールをコンパイルしてロードします。
checkmodule -M -m -o mongodb_proc_net.mod mongodb_proc_net.te semodule_package -o mongodb_proc_net.pp -m mongodb_proc_net.mod sudo semodule -i mongodb_proc_net.pp
カスタム MongoDB ディレクトリ パスの使用
SELinux ポリシーを更新して、
mongod
サービスが新しいディレクトリを使用できるようにします。sudo semanage fcontext -a -t <type> </some/MongoDB/directory.*> 必要に応じて、次のいずれかのタイプを指定します。
mongod_var_lib_t
データディレクトリ用mongod_log_t
ログファイル ディレクトリ用mongod_var_run_t
PID ファイル ディレクトリ用
注意
ディレクトリの最後に
.*
を必ず含めてください。新しいディレクトリの SELinux ユーザー ポリシーを更新します。
sudo chcon -Rv -u system_u -t <type> </some/MongoDB/directory> 必要に応じて、次のいずれかのタイプを指定します。
mongod_var_lib_t
データディレクトリ用mongod_log_t
ログ ディレクトリmongod_var_run_t
PID ファイル ディレクトリ用
更新された SELinux ポリシーをディレクトリに適用します。
sudo restorecon -R -v </some/MongoDB/directory>
以下に例を挙げます。
Tip
.*
の操作には、必ずディレクトリの最後に semanage fcontext
を含めてください。
デフォルト以外の MongoDB データ パス
/mongodb/data
を使用する場合:sudo semanage fcontext -a -t mongod_var_lib_t '/mongodb/data.*' sudo chcon -Rv -u system_u -t mongod_var_lib_t '/mongodb/data' sudo restorecon -R -v '/mongodb/data' デフォルト以外の MongoDB ログ ディレクトリ
/mongodb/log
を使用する場合(例: ログ ファイル パスが/mongodb/log/mongod.log
の場合):sudo semanage fcontext -a -t mongod_log_t '/mongodb/log.*' sudo chcon -Rv -u system_u -t mongod_log_t '/mongodb/log' sudo restorecon -R -v '/mongodb/log'
カスタム MongoDB ポートの使用
sudo semanage port -a -t mongod_port_t -p tcp <portnumber>
重要
上記に加えて、SELinux が enforcing
モードの場合は、次の各状況に合わせて SELinux ポリシーをさらにカスタマイズする必要もあります。
次のいずれの組み合わせでも、デフォルト パスの代わりにカスタム ディレクトリ パスを使用しています。
デフォルトの MongoDB ポートではなく、カスタム ポートを使用しています。
MongoDB のインストールに他の変更を加えた場合。
手順
システム上で MongoDB Community Edition を実行するには、以下の手順に従います。これらの手順では、デフォルト設定の使用を前提としています。
データ ディレクトリおよびログ ディレクトリを作成します。
MongoDB インスタンスのデータを保存するためにディレクトリを作成します。以下は、その例です。
sudo mkdir -p /var/lib/mongo
MongoDB インスタンスのログを保存するためにディレクトリを作成します。以下は、その例です。
sudo mkdir -p /var/log/mongodb
MongoDB プロセスを開始するには、これらのディレクトリに対する読み取りと書込み(write)権限が必要です。たとえば、自身のアカウントで MongoDB を実行するには、次のようにします。
sudo chown `whoami` /var/lib/mongo # Or substitute another user sudo chown `whoami` /var/log/mongodb # Or substitute another user
MongoDB の使用を開始します。
mongosh
と同じホストマシン上でmongod
セッションを開始します。コマンドライン オプションなしでmongosh
を実行すると、デフォルト ポート27017を使用してローカルホストで実行されているmongod
に接続できます。
mongosh
mongosh
を使った接続(別のホストやポートで実行されている mongod
インスタンスへの接続など)の詳細については、「mongosh ドキュメント」を参照してください。
MongoDB をスムーズに使い始められるように、MongoDB ではさまざまなドライバー エディションでスタートガイドを提供しています。ドライバーのドキュメントについては、「MongoDB での開発スタートガイド」を参照してください。
詳細情報
デフォルトの Localhost バインディング
By default, MongoDB launches with bindIp
set to 127.0.0.1
, which binds to the localhost network interface. This means that the mongod
can only accept connections from clients that are running on the same machine. Remote clients will not be able to connect to the mongod
, and the mongod
will not be able to initialize a replica set unless this value is set to a valid network interface which is accessible from the remote clients.
この値は、次のいずれかに設定できます。
警告
インスタンスをパブリックにアクセス可能な IP アドレスにバインドする前に、クラスターを不正アクセスから保護する必要があります。 セキュリティ推奨事項の完全なリストについては、「自己管理型配置のセキュリティ チェックリスト」を参照してください。 最低限、認証を有効化し、ネットワーク インフラストラクチャの強化 を検討してください。
bindIp
の構成の詳細については、「自己管理型配置の IP バインディング 」を参照してください。