はじめに
突然ですが、Fedora 35のPCにMongoDB 5.0をインストールしてみることにしました。
スポンサーリンク
MongoDB 5.0のインストール
MongoDB 5.0のインストールは、以下の手順で行います。
以前別のPCにMongoDB 4.2をインストールした際と同様に、Amazon Linux用の設定[1 ]を使ってインストールを試みることにします。
事前準備: YUMのパッケージマネージャの設定
MongoDBはライセンスの関係でFedoraの公式リポジトリからはインストールすることができません。
そこで、以下の手順でYUMのパッケージマネージャへのアクセス用の設定ファイルを追加します。
適当なエディタで/etc/yum.repos.d/mongodb-org-5.0.repoという名前のファイルを開きます(存在しない場合には作成します)。
以下のように記述します。[1 ]のページのAmazon Linux 2からコピーしたものを使用します(最初はRHEL8用の設定でインストールを試み、サーバのインストールには成功したのですが、ツールのインストールの際に「”/usr/libexec/platform-python”がないよ。」といわれて詰みます)。
[mongodb-org-5.0 ]
name=MongoDB Repository
baseurl=https:// repo.mongodb.org/yum/ amazon/2/m ongodb-org/5.0/ x86_64/
gpgcheck=1
enabled=1
gpgkey=https:// www.mongodb.org/static/ pgp/server-5.0 .asc
手順2のファイルを保存します。
MongoDBのインストール
以下のコマンドを実行し、MongoDBのインストールを開始します[2 ]。
$ sudo yum install mongodb-org
すると…
$ sudo dnf install mongodb-org
MongoDB Repository 10 kB/s | 2 .5 kB 00 :00
依存関係が解決しました。
================================================================================
パッケージ Arch バージョン リポジトリー サイズ
================================================================================
インストール:
mongodb-org x86_64 5.0 .6 -1 .amzn2 mongodb-org-5.0 6.1 k
依存関係のインストール:
mongodb-database-tools x86_64 100.5 .2 -1 mongodb-org-5 .0 47 M
mongodb-mongosh x86_64 1.3 .1 -1 .el8 mongodb-org-5 .0 44 M
mongodb-org-database x86_64 5.0 .6 -1 .amzn2 mongodb-org-5.0 6.2 k
mongodb-org-database-tools-extra x86_64 5.0 .6 -1 .amzn2 mongodb-org-5 .0 11 k
mongodb-org-mongos x86_64 5.0 .6 -1 .amzn2 mongodb-org-5 .0 19 M
mongodb-org-server x86_64 5.0 .6 -1 .amzn2 mongodb-org-5 .0 28 M
mongodb-org-shell x86_64 5.0 .6 -1 .amzn2 mongodb-org-5 .0 15 M
mongodb-org-tools x86_64 5.0 .6 -1 .amzn2 mongodb-org-5.0 6.1 k
トランザクションの概要
================================================================================
インストール 9 パッケージ
ダウンロードサイズの合計: 154 M
インストール後のサイズ: 565 M
これでよろしいですか? [y/N]: y
パッケージのダウンロード:
(1 /9 ): mongodb-org-5.0.6-1 .amzn2.x86_64.rpm 19 kB/s | 6 .1 kB 00 :00
(2 /9 ): mongodb-org-database-5.0.6-1 .amzn2.x86_6 14 kB/s | 6 .2 kB 00 :00
(3 /9 ): mongodb-org-database-tools-extra-5.0.6-1 28 kB/s | 11 kB 00 :00
(4 /9 ): mongodb-mongosh-1 .3 .1 .el7.x86_64.rpm 5 .7 MB/s | 44 MB 00 :07
(5 /9 ): mongodb-org-mongos-5.0.6-1 .amzn2.x86_64. 2 .6 MB/s | 19 MB 00 :07
(6 /9 ): mongodb-database-tools-100.5.2 .x86_64.rp 3 .6 MB/s | 47 MB 00 :13
(7 /9 ): mongodb-org-shell-5.0.6-1 .amzn2.x86_64.r 3 .1 MB/s | 15 MB 00 :04
(8 /9 ): mongodb-org-tools-5.0.6-1 .amzn2.x86_64.r 9 .0 kB/s | 6 .1 kB 00 :00
(9 /9 ): mongodb-org-server-5.0.6-1 .amzn2.x86_64. 4 .0 MB/s | 28 MB 00 :06
——————————————————————————–
合計 11 MB/s | 154 MB 00 :14
トランザクションの確認を実行中
トランザクションの確認に成功しました。
トランザクションのテストを実行中
トランザクションのテストに成功しました。
トランザクションを実行中
準備 : 1 /1
インストール中 : mongodb-org-database-tools-extra-5.0.6-1 .amzn2.x86_6 1 /9
インストール中 : mongodb-org-shell-5.0.6-1 .amzn2.x86_64 2 /9
scriptletの実行中: mongodb-org-server-5.0.6-1 .amzn2.x86_64 3 /9
インストール中 : mongodb-org-server-5.0.6-1 .amzn2.x86_64 3 /9
scriptletの実行中: mongodb-org-server-5.0.6-1 .amzn2.x86_64 3 /9
Created symlink /etc/systemd/system/multi-user.target.wants/mongod.service → /usr/lib/systemd/system/mongod.service.
インストール中 : mongodb-org-mongos-5.0.6-1 .amzn2.x86_64 4 /9
インストール中 : mongodb-org-database-5.0.6-1 .amzn2.x86_64 5 /9
インストール中 : mongodb-mongosh-1.3.1-1 .el8.x86_64 6 /9
scriptletの実行中: mongodb-database-tools-100.5.2-1 .x86_64 7 /9
インストール中 : mongodb-database-tools-100.5.2-1 .x86_64 7 /9
scriptletの実行中: mongodb-database-tools-100.5.2-1 .x86_64 7 /9
インストール中 : mongodb-org-tools-5.0.6-1 .amzn2.x86_64 8 /9
インストール中 : mongodb-org-5.0.6-1 .amzn2.x86_64 9 /9
scriptletの実行中: mongodb-org-5.0.6-1 .amzn2.x86_64 9 /9
検証 : mongodb-database-tools-100.5.2-1 .x86_64 1 /9
検証 : mongodb-mongosh-1.3.1-1 .el8.x86_64 2 /9
検証 : mongodb-org-5.0.6-1 .amzn2.x86_64 3 /9
検証 : mongodb-org-database-5.0.6-1 .amzn2.x86_64 4 /9
検証 : mongodb-org-database-tools-extra-5.0.6-1 .amzn2.x86_6 5 /9
検証 : mongodb-org-mongos-5.0.6-1 .amzn2.x86_64 6 /9
検証 : mongodb-org-server-5.0.6-1 .amzn2.x86_64 7 /9
検証 : mongodb-org-shell-5.0.6-1 .amzn2.x86_64 8 /9
検証 : mongodb-org-tools-5.0.6-1 .amzn2.x86_64 9 /9
インストール済み:
mongodb-database-tools-100.5.2-1 .x86_64
mongodb-mongosh-1.3.1-1 .el8.x86_64
mongodb-org-5.0.6-1 .amzn2.x86_64
mongodb-org-database-5.0.6-1 .amzn2.x86_64
mongodb-org-database-tools-extra-5.0.6-1 .amzn2.x86_64
mongodb-org-mongos-5.0.6-1 .amzn2.x86_64
mongodb-org-server-5.0.6-1 .amzn2.x86_64
mongodb-org-shell-5.0.6-1 .amzn2.x86_64
mongodb-org-tools-5.0.6-1 .amzn2.x86_64
完了しました!
…という感じでインストールができます。
インストールされたバージョンは5.0.6のようです。
設定ファイルのカスタマイズ スポンサーリンク
今回インストールするMongoDB 5.0は別のPCからのアクセスを許可する予定なので、/etc/mongod.confをちょっとカスタマイズします。
スポンサーリンク
具体的には、bindIpの設定を”127.0.0.1″から”192.168.aaa.bbb”(※諸事情により編集しています。)に変更してから保存します。
動作確認
準備が整ったところで、以下のコマンドを実行します。
$ sudo systemctl enable mongod
$ sudo systemctl start mongod
プロセスが動いているかどうか確認します。
$ ps aux | grep mongod | grep -v grep
mongod 1251620 0.5 9.4 1534328 93216 ? Sl 21 :35 0 :04 /usr/ bin/mongod -f / etc/mongod.conf
プロセスは無事動いているようですので、別のPCからアクセスできるかどうか確認してみます。
$ telnet 192.168 .aaa.bbb 27017
Trying 192.168 .aaa.bbb…
Connected to 192.168 .aaa.bbb.
Escape character is ‘^]’.
telnet> quit
Connection closed.
スポンサーリンク
アクセスできているようです。
別のPCからは上記の方法以外の 方法ではアクセスできないことを確認して、インストール作業は完了です。
SELinuxの設定
前節までの手順で動作することが確認できました。
しかし、SELinuxを設定している場合に/var/log/audit/audit.logに以下のようなログが大量に出力されることがあります。
type =AVC msg=audit(1648896479 .000 :735722 ): avc: denied { search } for pid=1251620 comm=”ftdc” name=”fs” dev=”proc” ino=11848 scontext=system_u:system_r:mongod_t:s0 tcontext=system_u:object_r:sysctl_fs_t:s0 tclass=dir permissive=0
audit2allowコマンドでSELinuxのポリシーを作れば万事解決… と思ったのですが、semoduleコマンドの実行に失敗してしまいました。
そこで、以下のType Enforcementファイルを作成して、mongodb_sysctl_fs.teというファイル名で保存します。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
module mongodb_sysctl_fs 1.0;
require {
type mongod_t;
type sysctl_fs_t;
class dir search;
class file { getattr read open };
}
#============= mongod_t ==============
allow mongod_t sysctl_fs_t:dir search;
allow mongod_t sysctl_fs_t:file { getattr read open };
スポンサーリンク
mongodb_sysctl_fs.teを作成したら、以下のコマンドを実行します。
$ sudo checkmodule -M -m -o mongodb_sysctl_fs.mod mongodb_sysctl_fs.te
$ semodule_package -o mongodb_sysctl_fs.pp -m mongodb_sysctl_fs.mod
$ sudo semodule -i mongodb_sysctl_fs.pp
これで完璧… と思いつつ、/var/log/audit/audit.logを確認すると…
type =AVC msg=audit(1648898960 .000 :743008 ): avc: denied { search } for pid=125
1620 comm=”ftdc” name=”nfs” dev=”dm-0 ″ ino=50530043 scontext=system_u:system_r:m
ongod_t :s0 tcontext=system_u:object_r:var_lib_nfs_t:s0 tclass=dir permissive=0
のようなログが相変わらず大量に出力されていました。_| ̄|○
ただ、ログの出力パターンは若干変わったので、完全解決に向かってちょっとだけ近づいたのだという信念を持ちつつ、以下のType Enforcementファイルを作成して、mongodb_var_lib_nfs_fs.teというファイル名で保存します。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
module mongodb_var_lib_nfs 1.0;
require {
type mongod_t;
type var_lib_nfs_t;
class dir search;
class file { getattr read open };
}
#============= mongod_t ==============
allow mongod_t var_lib_nfs_t:dir search;
allow mongod_t var_lib_nfs_t:file { getattr read open };
mongodb_var_lib_nfs_fs.teを作成したら、以下のコマンドを実行します。
$ sudo checkmodule -M -m -o mongodb_var_lib_nfs.mod mongodb_var_lib_nfs.te
$ semodule_package -o mongodb_var_lib_nfs.pp -m mongodb_var_lib_nfs.mod
$ sudo semodule -i mongodb_var_lib_nfs.pp
まとめ
追加したYUMのパッケージマネージャへのアクセス用の設定ファイルはFedoraのアップグレードを行っても更新などはされませんので、自力でアップデートなどのメンテナンスを行う必要がある点には注意が必要です。
以前MongoDB 4.2をインストールした際 には[1 ]のページのAmazon Linux 2013.03+用のパッケージマネージャへのアクセス用の設定ファイルを使用してMongoDBをインストールしていましたが、今回のインストールでも試してみたところ、
「libsasl2.so.2がない。」
と言われてしまったので、Amazon Linux 2用の設定を試してみたところ、うまくインストールできました。
ここまでの作業を終えた時点ではMongoDBの中にはデータが何もない状態です。MongoDBを本格的に使うためには中身のデータを投入する必要がありますが、データがない状態でMongoDBをしばらく動かしてみて問題がないことが確認でき次第、データの投入を行って本格的な運用を始める予定です。
この記事は以上です。
References / 参考文献
Install MongoDB Community Edition on Amazon Linux