lisz-works

プログラミングと興味を貴方に

MongoDBをWSLにセットアップ!

【スポンサーリンク】

mongoDB

こんにちわlisです!

WSLにMongoDBをセットアップしてみました!

MongoDBのインストールと設定

インストールするにはこれらのコマンドが必要です。

$ curl -fsSL https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add -
OK
$ echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list
deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse
$ sudo apt update
$ sudo apt install mongodb-org

どうやらaptで取ってくる既存の情報ではインストールができないため、接続先を追加してインストールする感じのようです。

MongoDBの初回設定

MongoDBが使用するデフォルトのパスはこの2つ

項目 内容
/var/log/mongodb ログファイル
/var/lib/mongodb/ データ(DB)置き場

このパスをそのまま使いたい場合、これらのパーミッションを777に設定します。

$ sudo chmod 777 /var/log/mongodb /var/lib/mongodb/

他のパスにしたい場合は、それぞれ用意してあげて、パーミッションを777に設定します。

自分のホーム下に置く例です。

$ mkdir ~/mongodb
$ mkdir ~/mongodb/log
$ touch ~/mongodb/log/mongodb.log
$ mkdir ~/mongodb/db
$ chmod 777 ~/mongodb/log/mongodb.log ~/mongodb/db

この2つを設定ファイルで指定してあげます。
sudoで起動することを忘れずに。

sudo vim /etc/mongod.conf

この2つにそれぞれ作成したパスを設定しましょう!

# データ(DB)置き場を指定
storage:
  dbPath: /home/user/mongodb/db
# ログファイルを指定
systemLog:
  path: /home/user/mongodb/log/mongodb.log

これで保存すればOK!

MongoDBの起動

バックグラウンドでサーバを起動しておきます。

$ mongod --config /etc/mongod.conf &

これでmongoコマンドが使えるようになります!

バージョン表示をしてみましょう。

$ mongo --version
MongoDB shell version v4.4.5
Build Info: {
    "version": "4.4.5",
    "gitVersion": "ff5cb77101b052fa02da43b8538093486cf9b3f7",
    "openSSLVersion": "OpenSSL 1.1.1f  31 Mar 2020",
    "modules": [],
    "allocator": "tcmalloc",
    "environment": {
        "distmod": "ubuntu2004",
        "distarch": "x86_64",
        "target_arch": "x86_64"
    }
}

設定エラー(FileNotOpen)

起動時にこんなエラーが出たことがありました。

{"t":{"$date":"2021-04-12T00:00:00.000Z"},"s":"F",  "c":"CONTROL",  "id":20574,   "ctx":"main","msg":"Error during global initialization","attr":{"error":{"code":38,"codeName":"FileNotOpen","errmsg":"Failed to open /home/user/${HOME}/mongodb/log/mongodb.log"}}}

「設定したファイルが開けないよ!」と言っているようです。

このとき設定したパスはこうでした。

path: ~/mongodb/log/mongodb.log

このパス設定方法だと、こう読み取ってしまうらしくエラーしてしまうようです。

/home/user/~/mongodb/log/mongodb.log

環境変数を使ってみても……

path: ${HOME}/mongodb/log/mongodb.log

こうなります。

/home/user/${HOME}/mongodb/log/mongodb.log

なのでhome下のフォルダなどを使用する場合はフルパスにしましょう!

/home/user/mongodb/log/mongodb.log

MongoDB自動起動

今のままだと毎回バックグラウンドで「サーバを起動→使い始める」としないとMongoDBが使えません。

なので~/.bashrc

mongod --config /etc/mongod.conf &

を追加して自動起動するようにしました。

参考

コチラを参考にしました。ありがとうございました!

docs.mongodb.com

laboradian.com

qiita.com

qiita.com

あとがき

MongoDBをWSLにセットアップでした!

ちょっとしたエラーにも遭遇しましたが、そんなに労せずセットアップできました。