何故か MongoDB を Windows 10 で動かす羽目になった。普段は Linux / OSX で仕事しているので、慣れない Windows での作業の奮闘記。
Server のインストール
MongoDB の HomePage から、'Get MongoDB' -> 'Community Server' -> 'Windows' -> 'Download' でインストーラをダウンロード&実行
出てくるダイアログのオプションへの返答をすべてデフォルトで進めると、Windows のサービスに MongoDB が登録されて、起動された状態になる。
Compass (MongoDB の GUI モニター)のインストール
動作確認用にインストールしておく。
MongoDB の HomePage から、'Get MongoDB' -> 'Compass' -> 'Platforms を Windows 64-bit(7+)にして' -> 'Download' でインストーラをダウンロード&実行
ローカルでの動作確認
Compass を立ち上げ、localhost に 'CONNECT' する。CONNECT できれば OK。
ネットワークに晒す
設定ファイルを編集して bindIp をセット
設定ファイルはデフオルトで下の場所。
C:\Program Files\MongoDB\Server\4.0\bin\mongod.cfg
(サービスの MongoDB Server のプロパティで確認できる)
何らかのエディタを Windows の管理者権限で実行 して、このファイルを編集する。
( Linux Subsystem で sudo vi みたいにしても書き込みできないよ!)
bindIp: 127.0.0.1
となっているところを変更する。自分の IP を'設定' -> 'ネットワークとインターネット' -> 'ネットワークのプロパティ' で確認して(ここでは192.168.1.23だったと仮定する)、後ろに追加する。
ここの文法はちょっとセンシティブで、例えば2つの IP の間にスペースとかあると、サーバーが起動しなくなるので注意。
bindIp: 127.0.0.1,192.168.1.23
ウインドウズのサービスから、MongoDB を選んで 'サービスの再起動'
Windows Defender を設定して TCP の 27017 を通す。
- 'ローカルコンピュータのセキュリティー' の '受信の規則' を右クリックして '新しい規則' を選択
- '規則の種類' を 'ポート' にして、'TCP' で '特定のローカルポート' に 27017 を入力
- '接続を許可する' にチェック
- プロファイルで、ドメイン、プライベート、パブリックの適当なものにチェックを入れる。
確認
MongoDB が走ってるマシンに到達できる別のマシンから
mongo 192.168.1.23
でつないでみて接続できれば OK!
感想
- MongoDB のインストーラは必要なことは全部やってくれる(Compassをインストールするのを除いては)
- Windows の流儀に慣れてないので設定ファイルの場所を探すのに時間がかかった。
- ウィンドウズのサービスの画面とかファイアウォールの画面とかにたどり着くのはなかなか大変だ。