HerokuにホスティングしたGrowiのDBサーバーAtlasへを変更する

GrowiにはHerokuへのデプロイがgithubにあるボタン一つでできるようになっています。

ところがこの度、そこで利用されているmLabと言うMongoDB用Herokuアドオンがサービス終了することになりました。

このままでは終了予定日の11月にGworiも一緒に停止してしまうことになります。

なので、MongoDBのサーバーをデフォルトのmLabからMongoDB Atlasへ変更しました。

MongoDB Atlasとは

これはHerokuのアドオンではなく、MongoDBが提供しているクラウドDBサービスです。

HerokuはmLabの代わりにObjectRocketを使ってと書かれていますが、このアドオンはmLabと違い無料プランがないので、無料プランが存在するAtlasを利用します。

手順

  1. Atlasへのユーザー登録
  2. DB作成/稼働
  3. mLabのデータをAtlasへコピー
  4. GrowiのDB接続先を変更

ちなみにクレジットカードの登録は不要でした。

Atlasへのユーザー登録

MogoDB Atlas へ接続し Try Free します。

Try Free

Try Freeします

指定の情報を入力すればすぐにアカウントが作成されます。

アカウントが作成されたら、基本設定を行います。

時間の設定

多分この辺設定してた方が良い気がする

組織設定

Create an Organizationから設定を開始します。

よくわかりませんが、MongoDB Atlasを選択し、組織名を適当に入力します。

この組織へ所属するユーザーの登録ですが、そのままCreateで問題ありません。

また、2FA(二要素認証)もあるようですので、お好みで設定して良いと思います。

DB作成/稼働

DBを作成します。

プロジェクト一覧からNew Projectを選択します。

プロジェクト名も適当にGrowiとか入力しておきます。

Build a Clusterでクラスタ(≒サーバー)を用意します。無料プランでは1ノードのみで、指定のリージョンが利用できるようです。

まず、クラスタのプランを選びます、左段が無料です。共有サーバーでオートスケーリングなどもないよと言われています。

次にサーバーリージョンを選択します。

このリージョンはHerokuのサーバーのリージョンと同じにした方が良いです。

おそらくHerokuはawsなので、Herokuで選択した国(Settingsページで確認できます)と同じ国を選べば良いと思います。

他の設定は特に不要でしたので、そのまま完了します。

初期設定

DBの初期設定として、ユーザーとホワイトリストを登録します。

パスワード認証で、名前とパスワードを任意のものを入力します。

パスワードを忘れないように気をつけてください。

ホワイトリストも同じ感じです。

HerokuはIPアドレスがどうなるかわからないので、全てのIPを受け入れるようにせざるを得ないと思われますので、ALLOW ACCESS FROM ANYWHERE を選択します。勝手に0.0.0.0/0が入力されます。

Commentは好きに入力します。

※これを設定すると、ホワイトリストの意味なくて危ないよ、みたいなメールが届きます……

mLabのデータをAtlasへコピー

mLabのデータをエクスポートして、Atlasへインポートします。

ツール取得

まずエクスポート用のmongodumpとmongorestoreを取得します。

MongDBのサイトの右上Try Freeを選択します。

次の画面で Tools を選択し、MongDB Database ToolsをDownloadします。

※macはhomebrewもあるようです。

接続情報を確認

mLabとAtlasへの接続情報を確認します。

まずmLabのエクスポート

ここにエクスポート用の情報があります。

-hと-dの後ろはそれぞれの環境で違う文字になっています。

HerokuのSettingsのConfig VarsのMONGODB_URIにmLabの<user>と<password>に相当する部分が確認できます。

mongodb://<user>:<password>@ホスト名/DB名

となっています。

上の mongodump〜の文にuserとpasswordを当てはめたものをメモしておきます。

例)
mongodump -h xx000000.mlab.com:33275 -d heroku_xxxxxxxx -u heroku_xxxxxxxx -p xxxxxxxx -o 好きなフォルダ名

 

次にAtlasのインポート

クラスタ一覧から… → Command Line Tools を選択します。

mongorestoreコマンドが書かれていますのでメモします。

パスワードのところはDB作成のところで入力したパスワードです。

最後にAtlasのアプリからの接続用

真ん中のConnect your applicationを選択

passwordのところはDB作成のところで入力したパスワードです。

dbnameのところはmLabのDB名です。

 

イメージ)
mongodb+srv://ユーザー名:パスワード@ホスト/DB名?retryWrites=true&w=majority

 

エクスポート

コマンドライン/バッシュで処理を行います。

 

% cd ./mondoツールをダウンロード解凍した場所

% ./mongodump 〜〜〜 

% ./mongorestore 〜〜〜 好きなフォルダ名

※Windowsだと./じゃなくて.\じゃないとだめだったかも?

mongodump / mongorestore のところの「〜〜〜」は前項の接続情報の確認でメモしたものを記述します。

restoreの際はdumpで指定したフォルダ名を追記します。

GrowiのDB接続先を変更

最後に接続先を変更して完了です。

 

HerokuのSettingsのConfig VarsのMONGODB_URIを書き換えます。

Valueには前々項で取得した「アプリからの接続用」の分を指定します。

 

これで完了です。あとは接続確認を行なって動けばOKです。

マイグレーションスクリプトあるっぽい

実のところAtlasにはmLabからデータをインポートするスクリプトがあるっぽいです。

※Atlasにサインインして、Organizationのあたりに

インポート終わった後に気づいたので、触っていませんが手順がいくらか減りそうです。

タイトルとURLをコピーしました