sql >> データベース >  >> NoSQL >> MongoDB

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

    HerokuでのセルフホスティングParseServer

    Heroku、MongoDB、およびParseのセットアップ

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

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

    1. 以下のボックスが表示された場合は、クレジットカード情報を入力してアカウントを確認してください。 後でアカウントをアップグレードしない限り、請求されることはありません。 。これは、Herokuが悪用を防ぐために実施しているセキュリティ対策にすぎません。

    1. Herokuがアプリを作成します。バックグラウンドで、.gitリポジトリを作成し、公式のparse-server-example gitリポジトリのコンテンツを複製し、MongoDBデータベースを作成し、そのDBを使用するようにHerokuアプリを構成します。
    2. アプリが作成されると、Herokuダッシュボードに移動するか、ログインして[パーソナルアプリ]をクリックし、解析サーバーの名前をクリックしてそこにアクセスできます
    3. アプリのダッシュボードで、[設定]をクリックし、[構成変数を表示]をクリックします

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

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

    1. Herokuアプリを管理するためのコマンドラインインターフェースツールであるHerokuToolbeltをインストールします。

    2. ターミナルプロンプトを開き、$ heroku loginと入力します 、Herokuのメールアドレスとパスワードを入力してください

    3. $ heroku git:clone -a <MY_APP_NAME>と入力します (ここで、<MY_APP_NAME> はherokuアプリの名前です)サーバーコードリポジトリのローカルコピーを作成するには、前に見たgiturlを使用することもできます。リポジトリのクローンを作成すると、「警告:空のリポジトリのクローンを作成したようです。」というメッセージが表示されます。 appフォルダーが作成されますが、標準のgitファイルのみが含まれ、解析サーバーは含まれません。これを修正するには。公式のparse-server-examplegitリポジトリに移動し、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サーバーが正しく機能していることを通知する以下のアラートが表示されます

    注:

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

    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> 解析の名前です アプリ
    3. ページを下にスクロールして、[移行]をクリックします
    4. モーダルの灰色の領域(入力のようには見えません...)にMONGOLAB_URIと入力します。 以前にメモしたこと
    5. [移行を開始する]をクリックします

    1. 移行が完了したら、[完了]をクリックし、移行が完了したらポップアップで[OK]をクリックすると、すべてのデータが新しいMongoDBデータベースに保存されます。

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



    1. mongodbでインデックスを作成できません。キーが大きすぎてインデックスを作成できません

    2. aws-elasticacheでmemcachedまたはRedisを使用する

    3. Node.jsを使用してデータを作成、読み取り、更新、削除します-Mongoose

    4. Redisでクエリしますか?