Fedora 35にMongoDB 5.0のインストールを試みて、試行錯誤したりちょっと設定をいじってみた話。

By | 2022年3月31日 , Last update: 2022年4月2日

はじめに

突然ですが、Fedora 35のPCにMongoDB 5.0をインストールしてみることにしました。

スポンサーリンク

MongoDB 5.0のインストール

MongoDB 5.0のインストールは、以下の手順で行います。

以前別のPCにMongoDB 4.2をインストールした際と同様に、Amazon Linux用の設定[1]を使ってインストールを試みることにします。

事前準備: YUMのパッケージマネージャの設定

MongoDBはライセンスの関係でFedoraの公式リポジトリからはインストールすることができません。

そこで、以下の手順でYUMのパッケージマネージャへのアクセス用の設定ファイルを追加します。

  1. 適当なエディタで/etc/yum.repos.d/mongodb-org-5.0.repoという名前のファイルを開きます(存在しない場合には作成します)。
  2. 以下のように記述します。[1]のページのAmazon Linux 2からコピーしたものを使用します(最初はRHEL8用の設定でインストールを試み、サーバのインストールには成功したのですが、ツールのインストールの際に「”/usr/libexec/platform-python”がないよ。」といわれて詰みます)。
    [mongodb-org-5.0]
    name=MongoDB Repository
    baseurl=https://repo.mongodb.org/yum/amazon/2/mongodb-org/5.0/x86_64/
    gpgcheck=1
    enabled=1
    gpgkey=https://www.mongodb.org/static/pgp/server-5.0.asc

     

  3. 手順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というファイル名で保存します。


スポンサーリンク

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というファイル名で保存します。

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 / 参考文献

  1. Install MongoDB Community Edition on Amazon Linux