アルパカ三銃士

〜アルパカに酔いしれる獣たちへ捧げる〜

ubuntu に mongodb をインストールする

先日 ubuntu を 17.04 へアップデートしてしまい、インストールする時にしまったと思ったのですが、何も問題なかったので晒していきます。
インストールここの 16.04 の方を参考にした。理由は 17.04(zesty) 用のリポジトリを未だに提供してないからです。(もし 17.04 用のリポジトリが提供されたら、17.04 専用のリポジトリから使うようにしてください。)

sudo apt update && sudo apt install -y mongodb-org

のあとに sudo systemctl start mongod を行い、 mongo で起動する。

$ mongo
MongoDB shell version v3.4.3
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.3
Server has startup warnings:
2017-04-17T22:16:47.289+0900 I STORAGE  [initandlisten]
2017-04-17T22:16:47.289+0900 I STORAGE  [initandlisten] ** WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine
2017-04-17T22:16:47.289+0900 I STORAGE  [initandlisten] **          See http://dochub.mongodb.org/core/prodnotes-filesystem
2017-04-17T22:16:48.496+0900 I CONTROL  [initandlisten]
2017-04-17T22:16:48.496+0900 I CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
2017-04-17T22:16:48.496+0900 I CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
2017-04-17T22:16:48.496+0900 I CONTROL  [initandlisten]
2017-04-17T22:16:48.496+0900 I CONTROL  [initandlisten]
2017-04-17T22:16:48.496+0900 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2017-04-17T22:16:48.496+0900 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2017-04-17T22:16:48.496+0900 I CONTROL  [initandlisten]
>

こんな感じで warnings が発生します。
2 つ目以降の warnings を潰すだけでなぜか全ての warnings が消えたのでその方法を書きます。

WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.

これは以下のページを参考に行いました。

askubuntu.com

この後に sudo reboot を行うと warnings が 1 個減っています。

WARNING: Access control is not enabled for the database.

  • mkdir /etc/mongod
  • openssl rand -base64 741 > /etc/mongod/mongodb-keyfile
  • chmod 600 /etc/mongod/mongodb-keyfile
  • chown mongodb.mongodb /etc/mongod/mongodb-keyfile

これが完了したら vim /etc/mongod.conf 以下を追記します。

security:
  keyFile: /etc/mongod/mongodb-keyfile

これで sudo systemctl restart mongod

管理ユーザの作成

admin データベースにユーザを管理する権限を追加しておきましょう。 userpwd は各自修正してください。

> use admin
switched to db admin

> db.createUser({user:"YOURUSERNAME",pwd:"PASSWORD",roles:[{role:"userAdminAnyDatabase",db:"admin"}]})
Successfully added user: {
    "user" : "YOURUSERNAME",
    "roles" : [
        {
            "role" : "userAdminAnyDatabase",
            "db" : "admin"
        }
    ]
}

そのあと

vim /etc/mongod.conf
security:
  keyFile: /etc/mongod/mongodb-keyfile
  authorization: enabled

へ変更しておきましょう。 詳しくは以下の記事を参考にするといいです。

qiita.com

後から助かる設定

Ubuntu Firewall を使用している場合、mongodb サーバーのためにポートを許可しておかなければいけません。

ufw allow 27017

また、ubuntu を起動した時に自動で mongodb を起動したいという場合は

sudo systemctl enable mongod

を行っておきましょう。