web-dev-qa-db-ja.com

MongoDBを使用してHerokuで自分のParse Serverをホストするにはどうすればよいですか?

(明確にするために、Parseクロージャーによって同様に影響を受けた他の人を助けるために私が見つけた答えを提供するために、この質問をします)

Parse.com は、2017年1月に閉店すると発表しましたが、ありがたいことに、 Parse Serverソフトウェアをオープンソース にして、すべてのホストが独自のParseサーバーインスタンス。

私はParse Serverをホストするために利用可能なさまざまなオプションを調査し、Herokuで私のものをホストすることを決定しました

Parseはとても使いやすく、バックエンドの設定に関する実際の経験がないため、とても気に入りました。私はいくつかのガイドをオンラインで試そうとしましたが、あいまいな手順や、一連のツールをインストールする別のサイトのうさぎの穴を掘り下げる手順では、それらをすべて理解するのが少し難しいことがわかりました。

HerokuでParse Serverをホストし、アプリケーションからのクロスドメインリクエストを受け入れるように設定して、MongoDBデータベースを作成し、すべてのデータをParseから新しいデータベースに移行するにはどうすればよいですか?

29
Wesley Smith

Heroku上の自己ホスティングParse Server


Heroku、MongoDB、Parseのセットアップ

  1. https://signup.heroku.com/ にアクセスして、アカウントにサインアップします
  2. メールアドレスを確認し、Herokuにログインします
  3. Herokuへの解析サーバーのデプロイ に移動します
  4. 「Deploy to Heroku」をクリックします

enter image description here


  1. 解析サーバーに名前を付けます
  2. ここでは、アプリのAPP_IDとMASTER_KEYをスキップします。後の手順で設定します。
  3. 「無料でデプロイ」をクリックします

enter image description here


  1. 下のボックスが表示されたら、クレジットカード情報を入力してアカウントを確認します。 心配しないでください。後でアカウントをアップグレードしない限り、料金は発生しません。これは、Herokuが乱用を防止するために実施しているセキュリティ対策です。

enter image description here


  1. Herokuがアプリを作成します。バックグラウンドで.gitリポジトリを作成し、 official parse-server-example git repo の内容を複製し、MongoDBデータベースを作成し、Herokuアプリを構成しますそのDBを使用します。
  2. アプリが作成されると、Herokuダッシュボードが表示されます。または、ログインして[個人用アプリ]をクリックし、解析サーバーの名前をクリックすると、そこにアクセスできます
  3. アプリのダッシュボードで[設定]をクリックし、[設定変数を表示]をクリックします

enter image description here


  1. アプリのAPP_IDとMASTER_KEYを入力します。 Parse.comにアプリがある場合は、それと同じキーを使用できます。 https://www.parse.com/apps/<APP_NAME>/edit#keys<APP_NAME>がアプリの名前です。新しいアプリを作成する場合は、ここで ランダムなキーを生成できます 。使用する予定のSDKに新しいキーを追加できます。ここでは、JavaScript SDKにキーを追加します。

enter image description here


  1. MONGOLAB_URIの値をメモします。これは、既存のParseデータを新しいDBに移行する場合に後で必要になります。
  2. 下にスクロールして、アプリのGit URLとHerokuドメインをメモします。後で必要になります。

enter image description here


  1. Herokuアプリを管理するためのコマンドラインインターフェイスツールである Heroku Toolbelt をインストールします。
  2. ターミナルプロンプトを開き、$ heroku loginと入力し、Herokuの電子メールとパスワードを入力します
  3. $ heroku git:clone -a <MY_APP_NAME><MY_APP_NAME>はherokuアプリの名前)を入力して、サーバーコードリポジトリのローカルコピーを作成します。前に見たgit urlを使用することもできます。リポジトリを複製すると、「警告:空のリポジトリを複製したようです。」というメッセージが表示されます。 appフォルダーが作成されますが、標準のgitファイルのみが含まれ、解析サーバーは含まれません。これを修正します。 official parse-server-example git repo に移動し、リポジトリのZipファイルをダウンロードします。フォルダーを抽出し、すべてのファイルとフォルダーをparse-server-example-masterフォルダーからアプリフォルダーにドラッグします。

  4. ターミナルに戻り、$ cd <MY_APP_NAME>と入力してリポジトリに移動します

CORSを有効にする(他のドメインからAPIを使用できるようにする)

  1. ハードドライブで、先ほど作成したリポジトリのローカルコピーを見つけて開きます。
  2. フォルダーでpackage.jsonを開き、次のように"cors": "*"dependenciesに追加します。

  "dependencies": {
    "express": "~4.2.x",
    "kerberos": "~0.0.x",
    "parse": "~1.6.12",
    "parse-server": "~2.0",    // <= don't forget this comma
    "cors": "*"                // add this line
  }

注意

上記のコメントは実際のコードから削除してください。有効なJSONにはならないためです。

  1. index.jsを開き、次の変更を行います。

var express = require('express');  // find this line in the file
var cors = require('cors') // add this line below it

//....


//var databaseUri = process.env.DATABASE_URI || process.env.MONGOLAB_URI // old name, you may need to change this for new deployments
var databaseUri = process.env.DATABASE_URI || process.env.MONGODB_URI  // changed to MONGODB_URI in Heroku!

//....

var app = express();  // find this line in the file
app.use(cors()); // add this line below it

//Add declarations for any keys you plan to use as shown below
var api = new ParseServer({
  databaseURI: databaseUri || 'mongodb://localhost:27017/dev',
  cloud: process.env.CLOUD_CODE_MAIN || __dirname + '/cloud/main.js',
  appId: process.env.APP_ID || 'myAppId',
  masterKey: process.env.MASTER_KEY || '',
  serverURL: process.env.SERVER_URL || 'http://localhost:1337',
  javascriptKey: process.env.JAVASCRIPT_KEY || '',  //** add this line no need to set values, they will be overwritten by heroku config vars
  restAPIKey: process.env.REST_API_KEY || '', //** add this line
  dotNetKey: process.env.DOT_NET_KEY || '', //** add this line
  clientKey: process.env.CLIENT_KEY || '', //** add this line
});
  1. ターミナルウィンドウに戻り、クローンしたリポジトリのフォルダー内にいることを確認し、以下を入力してHerokuに変更をプッシュします。

$ git add .
$ git commit -am "make it better"
$ git Push heroku master

新しいParseサーバーをテストする

  1. これに移動します jsFiddleページ
  2. フィドルの<MY_APP_ID><MY_JS_KEY><MY_HEROKU_APP_NAME>をアプリに適した値に変更し、[実行]をクリックします

Parse.initialize('<MY_APP_ID>', '<MY_JS_KEY>');
Parse.serverURL = 'https://<MY_HEROKU_APP_NAME>.herokuapp.com/Parse'
  1. 新しいParseサーバーが正常に動作していることを知らせる以下のアラートが表示されます

enter image description here

注意:

複数の解析サーバーインスタンスでjsfiddleツールを使用すると、「無効なセッショントークン」というエラーが発生する場合があります。これが発生した場合、開発コンソールを開き、ローカルストレージからすべての「解析」キーを削除します。その後、機能します。

enter image description here


Parseから既存のデータを移行する

本番環境のアプリを移行する前に、テストアプリで少なくとも1回はこれを行う必要があります。また、古いアプリのレガシーfilesはまだ転送されていないようです。 このGitHubの問題を参照してください

  1. 移行する前に、新しいMongoDBにデータがある場合、移行は失敗します。サーバーをテストしてオブジェクトを作成した場合は、https://dashboard.heroku.com/apps/<MY_HEROKU_APP_NAME>/resourcesに移動し、アイコンの横にある[MongoLab]をクリックして、次のページで[すべてのコレクションを削除]をクリックします。
  2. https://dashboard.parse.com/apps/<APP_NAME>/settings/generalに移動します。ここで、<APP_NAME>parseアプリの名前です
  3. ページを下にスクロールして、[移行]をクリックします
  4. モーダルの灰色の領域(入力のようには見えない...)に、前に書き留めたMONGOLAB_URIを入力します
  5. [移行を開始]をクリックします

enter image description here


  1. 移行が完了したら、[ファイナライズ]をクリックします。移行が完了したら、ポップアップで[OK]をクリックします。すべてのデータは新しいMongoDBデータベースに格納されます。

enter image description here


  1. 今のところ、Parseダッシュボードには、新しいDBに存在するデータが引き続き表示されます。すべてをテストするには、前に使用したテストjsFiddleに戻り、もう一度実行します。次に、Parseダッシュボードに移動すると、新しく追加されたクラスと行が表示されます。 新しいParseダッシュボードを使用すると、行数は表示されましたが、行領域はすべて空白でした。私は古いParseダッシュボードに戻り、すべてが正常に表示されました。
57
DelightedD0D