Ubuntu16.04にMongoDB3.4をインストールする手順をお伝えいたします。

環境

今回の作業環境を確認しておきます。また、以下の作業はすべてターミナルにて行っております。

Ubuntuのバージョン


$ cat /etc/lsb-release

DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04.3 LTS"

MongoDBのインストール

ここからは、実際にMongoDBをインストールする方法について見ていきます。
インストールする方法は、aptで管理できるように設定した後、aptでインストールします。

パッケージ管理システムで使うパブリックキーを登録

次のコマンド、MongoDBの公開GPGキーを登録します。


$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6

利用可能なパッケージ一覧にMongoDBを登録

MongoDBをインストールするUbuntuのバージョンに合わせて、次のどれかのコマンドを実行します。

Ubuntu 12.04


$ echo "deb [ arch=amd64 ] http://repo.mongodb.org/apt/ubuntu precise/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list

Ubuntu 14.04


$ echo "deb [ arch=amd64 ] http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list

Ubuntu 16.04


$ echo "deb [ arch=amd64,arm64 ] http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list

パッケージデータベースを更新

次のコマンドで、パッケージデータベースを更新します。


$ sudo apt-get update

MongoDBパッケージをインストール

次のコマンドでMongoDBをインストールします。


$ sudo apt-get install mongodb-org

MongoDBの開始と停止

MongoDBの開始および停止、再起動のコマンドは次のようになります。

MongoDBの開始


$ sudo service mongod start

MongoDBの停止


$ sudo service mongod stop

MongoDBの再起動


$ sudo service mongod restart

MongoDBの確認

MongoDBのインストールが完了しましたら、確認しておきます。次のコマンドでMongoDBに接続します。
これは、まだデータベースやユーザーを登録していないので、これらの省略形になります。


$ mongo

もし、MongoDBを開始していない場合は、次のように表示されて接続が失敗しますので、改めて「sudo service mongod start」コマンドでMongoDBを開始しておきます。


$ mongo
MongoDB shell version v3.4.9
connecting to: mongodb://127.0.0.1:27017
2017-10-19T23:34:22.856+0900 W NETWORK  [thread1] Failed to connect to 127.0.0.1:27017, in(checking socket for error after poll), reason: Connection refused
2017-10-19T23:34:22.856+0900 E QUERY    [thread1] Error: couldn't connect to server 127.0.0.1:27017, connection attempt failed :
connect@src/mongo/shell/mongo.js:237:13
@(connect):1:6
exception: connect failed

接続されましたら、次のように表示されます。接続を切るには「exit」を入力します。


$ mongo
MongoDB shell version v3.4.9
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.9
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
	http://docs.mongodb.org/
Questions? Try the support group
	http://groups.google.com/group/mongodb-user
Server has startup warnings: 
2017-10-19T23:40:31.232+0900 I STORAGE  [initandlisten] 
2017-10-19T23:40:31.232+0900 I STORAGE  [initandlisten] ** WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine
2017-10-19T23:40:31.232+0900 I STORAGE  [initandlisten] **          See http://dochub.mongodb.org/core/prodnotes-filesystem
2017-10-19T23:40:31.349+0900 I CONTROL  [initandlisten] 
2017-10-19T23:40:31.349+0900 I CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
2017-10-19T23:40:31.349+0900 I CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
2017-10-19T23:40:31.349+0900 I CONTROL  [initandlisten] 
2017-10-19T23:40:31.349+0900 I CONTROL  [initandlisten] 
2017-10-19T23:40:31.349+0900 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2017-10-19T23:40:31.349+0900 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2017-10-19T23:40:31.349+0900 I CONTROL  [initandlisten] 
> 

3つのWARNINGが表示されますが、mongoコマンドで接続したときにWARNINGが表示されないようにするだけならば、WARNING: Access control is not enabled for the database.のみ対応すれば、3つとも表示が消えます。
ただし、mongoコマンドで接続したときだけWARNINGが消えますので、ログファイルである/var/log/mongodb/mongod.logには残り2つがしっかりと記載される点にはご注意ください。

WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine

MongoDB3.2からデフォルトストレージがWiredTigerとなり、WiredTigerが推奨するファイルシステムがXFSであることから警告が表示されるようになっています。
そのため、MongoDBをインストールしたUbuntuのファイルシステムがext4などの場合は、このWARNINGが表示されるようになりました。
解決方法としては、別パーティションを作成してからXFSファイルシステムを構築して、そちらにMongoDBのデータを移す方法がありますが、MongoDBをシステムとしてしっかり運用する場合でなければ、この警告を無視しても構わないかもしれません。

WARNING: Access control is not enabled for the database.

内部認証が有効化されていない場合に、警告が表示されるようです。
そのため、内部認証を有効化します。
内部認証を有効化するにあたり、セキュリティキーを作成し、保管しなければなりません。
ここでは、/etc/ssl/mongodbディレクトリを作成し、その中にセキュリティキーを保管することにします。
まず、セキュリティキーの保管先となるディレクトリを作成します。


$ sudo mkdir /etc/ssl/mongodb

セキュリティキーを作成した後、保管先に移動し、セキュリティキーのユーザーとグループを変更しておきます。


$ sudo openssl rand -base64 756 > security.key
$ sudo mv security.key /etc/ssl/mongodb/
$ sudo chmod 400 /etc/ssl/mongodb/security.key
$ sudo chown mongodb:mongodb /etc/ssl/mongodb/security.key

MongoDBの設定を変更するために、設定ファイルをエディタで開きます。


$ sudo vim /etc/mongod.conf

エディタに次の内容を追記します。


security:
  keyFile: /etc/ssl/mongodb/security.key

後は、設定を反映させるためにmongodを再起動しておきます。


$ sudo service mongod restart

これで、「WARNING: Access control is not enabled for the database.」はログファイルにも表示されなくなります。

WARNING: /sys/kernel/mm/transparent_hugepage/enabled is ‘always’.

マニュアルDisable Transparent Huge Pages (THP) — MongoDB Manual 3.4によると、次のように記載されております。
そのため、この警告は、Transparent Huge Pages(THP)を無効化するように推奨しています。

Transparent Huge Pages(THP)は、大きなメモリーページを使用して大量のメモリーを持つマシンでTranslation Lookaside Buffer(TLB)ルックアップのオーバーヘッドを削減するLinuxメモリー管理システムです。

ただし、データベースワークロードは、連続したメモリアクセスパターンではなく、希薄な傾向があるため、THPでパフォーマンスが低下することがよくあります。 LinuxマシンでTHPを無効にして、MongoDBで最高のパフォーマンスを確保する必要があります。

ただし、Transparent Huge Pages自体は、大容量メモリーを効率よく使用する仕組みですので、MongoDBをシステムとしてしっかり運用する場合でなければ、この警告を無視しても構わないかもしれません。

Transparent Huge Pagesを無効化する場合は、ターミナルでsysfsutils パッケージをインストールします。


$ sudo apt-get install sysfsutils

インストールが完了したら、/etc/sysfs.confファイルを開きます。


$ sudo vim /etc/sysfs.conf

/etc/sysfs.confファイルに次の一行を追加します。


kernel/mm/transparent_hugepage/enabled = never

後は、Ubuntuを再起動すれば、WARNINGが消えます。

アンインストール

MongoDBのアンインストールする場合は、以下のコマンドを順に実行します。

MongoDBの停止


$ sudo service mongod stop

MongoDB関係のパッケージをアンインストール


$ sudo apt-get purge mongodb-org*

データの削除


$ sudo rm -r /var/log/mongodb
$ sudo rm -r /var/lib/mongodb

参考

関連する記事

  • R言語 CRAN Task View:臨床試験デザイン、監視、および分析R言語 CRAN Task View:臨床試験デザイン、監視、および分析 CRAN Task View:Clinical Trial Design, Monitoring, and Analysisの英語での説明文をGoogle翻訳を使用させていただき機械的に翻訳したものを掲載しました。 Maintainer: Ed Zhang and Harry G. Zhang Contact: Ed.Zhang.jr at […]
  • これだけは抑えておきたい安全性分析の基本これだけは抑えておきたい安全性分析の基本 安全性分析とは、主に貸借対照表上の数値から支払能力を測定する分析である。企業が倒産する主な原因は資金不足によって起こるため、様々な観点から資金の状況を把握する必要がある。 ここでは、安全性分析の代表的な指標をいくつか紹介する。 流動比率 流動比率とは、1年以内に資金化できる流動資産と1年以内に返済しなければならない流動負債との比率から支払能力をみる指標である。 […]
  • R言語 CRAN Task View:多変量統計R言語 CRAN Task View:多変量統計 CRAN Task View: Multivariate Statisticsの英語での説明文をGoogle翻訳を使用させていただき機械的に翻訳したものを掲載しました。 Maintainer: Paul Hewson Contact: Paul.Hewson at […]
  • なぜマイナス×マイナス=プラスとなるのかなぜマイナス×マイナス=プラスとなるのか 先日、ある人と話しているときに、私が大学で数学を学んだことを告げると、「なぜ、マイナス×マイナス=プラスとなるのか」と質問を受けた。 どうやら、「マイナス×マイナス=プラス」はルールとして覚えているようだった。 この質問を受けたとき、正直に言うと「すばらしい」と思った。なぜそう思ったのかというと、すでに当たり前として組み込まれている「マイナス×マイナス=プラス」に対し […]
  • 経営戦略を導き出すための簡単な時系列分析の方法経営戦略を導き出すための簡単な時系列分析の方法 売上高のような時系列データをただ眺めていても、経営戦略を導き出すための示唆を得ることは難しい。 ここでは、売上高のような時系列データを時間に比例する部分と時間に比例しない部分とに分けてとらえると、どのような示唆を得ることができるのかをお伝えする。 この時間に比例する部分と時間に比例しない部分に分けるというのは、変動損益計算書に似ている。 変動損益計算書とは、 […]
Ubuntu MongoDBのインストールする手順

One thought on “Ubuntu MongoDBのインストールする手順

Comments are closed.