sql >> Database teknologi >  >> NoSQL >> MongoDB

Hvordan kan jeg hoste min egen Parse Server på Heroku ved hjælp af MongoDB?

Selvhosting Parse Server på Heroku

Opsæt Heroku, MongoDB og Parse

  1. Besøg https://signup.heroku.com/ og tilmeld dig en konto
  2. Bekræft din e-mail, og log ind på Heroku
  3. Gå til Installation af en parseserver til Heroku
  4. Klik på "Deploy til Heroku"

  1. Giv din parseserver et navn
  2. Spring appens APP_ID og MASTER_KEY over indtil videre, vi indstiller det i et senere trin.
  3. Klik på "Implementer gratis"

  1. Hvis boksen nedenfor vises, skal du indtaste dine kreditkortoplysninger for at bekræfte din konto. Bare rolig, du bliver ikke debiteret, medmindre du opgraderer din konto senere . Dette er simpelthen en sikkerhedsforanstaltning, som Heroku har på plads for at forhindre misbrug.

  1. Heroku vil oprette din app. I baggrunden vil den også oprette en .git-repo til dig og klone indholdet af den officielle parse-server-eksempel git-repo, oprette en MongoDB-database og konfigurere din Heroku-app til at bruge den DB.
  2. Når appen er oprettet, føres du til dets Heroku-dashboard, eller du kan komme dertil ved at logge ind, klikke på "Personlige apps" og derefter klikke på navnet på din parseserver
  3. På din apps betjeningspanel skal du klikke på "Indstillinger" og derefter klikke på "Vis konfigurationsvarianter"

  1. Udfyld din apps APP_ID og MASTER_KEY. Hvis du har en app på Parse.com nu, kan du bruge de samme nøgler, som den bruger. Du kan se på https://www.parse.com/apps//edit#keys hvor er navnet på din app. Hvis du opretter en ny app, kan du generere tilfældige nøgler her. Du kan tilføje nye nøgler til alle sdk'er, du planlægger at bruge, jeg tilføjer en til javascript sdk her.

  1. Bemærk værdien for MONGOLAB_URI, du skal bruge denne senere, hvis du vil migrere dine eksisterende Parse-data til din nye DB
  2. Rul ned og noter Git-url'en og Heroku-domænet for din app, du skal bruge disse senere

  1. Installer Heroku Toolbelt, som er et kommandolinjeværktøj til styring af dine Heroku-apps.

  2. Åbn en terminalprompt og indtast $ heroku login , indtast din Heroku-e-mail og adgangskode

  3. Indtast $ heroku git:clone -a (hvor er navnet på din heroku-app) for at lave en lokal kopi af din serverkode-repo, kan du også bruge git-url'en fra vi så tidligere. Når du kloner repo'et, vil du se beskeden "advarsel:Det ser ud til, at du har klonet et tomt lager.". App-mappen vil blive oprettet, men den vil kun indeholde standard git-filer og ingen parse-server. For at ordne dette. Gå til den officielle parse-server-example git repo, download zip-filen af repoen. Udpak mappen, træk alle filer og mapper fra parse-server-example-master-mappen til din app-mappe.

  4. Tilbage i terminalen skal du indtaste $ cd for at flytte ind i arkivet

Aktiver CORS (så du kan bruge API'en fra andre domæner)

  1. På din harddisk skal du finde og åbne den lokale kopi af den repo, som vi lige har oprettet
  2. Åbn package.json i mappen og tilføj "cors":"*" til afhængighederne sådan her:

.

  "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
  }

BEMÆRK

Sørg for at fjerne ovenstående kommentarer i din faktiske kode, da den ikke vil være gyldig JSON

  1. Åbn index.js og foretag disse ændringer:

.

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. Gå tilbage til terminalvinduet, sørg for, at du stadig er i mappen med den repo, vi klonede, og indtast nedenstående for at skubbe ændringerne til Heroku:

.

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

Test din nye parseserver

  1. Gå til denne jsFiddle-side
  2. Skift , , i violinen til de relevante værdier for din app, og klik derefter på "Kør"

.

Parse.initialize('<MY_APP_ID>', '<MY_JS_KEY>');
Parse.serverURL = 'https://<MY_HEROKU_APP_NAME>.herokuapp.com/Parse'
  1. Du bør få nedenstående advarsel, der fortæller dig, at din nye Parse-server fungerer korrekt

BEMÆRK:

Hvis du bruger jsfiddle-værktøjet med flere parse-serverforekomster, får du muligvis fejlen "ugyldig sessionstoken". Hvis dette sker, skal du åbne dev-konsollen og slette alle "parse"-nøglerne fra det lokale lager, derefter burde det virke:

Migrer dine eksisterende data fra Parse

Du bør gøre dette mindst én gang med en test-app, før du migrerer en produktions-app. Det ser også ud til, at ældre filer fra din gamle app muligvis ikke overføres endnu, se dette GitHub-udgave

  1. Før vi migrerer , hvis din nye MongoDB har data i sig, vil migreringen mislykkes. Hvis du lige har testet serveren og oprettet og objektet, skal du gå til https://dashboard.heroku.com/apps//resources , klik på "MongoLab" ud for dets ikon, og klik derefter på den næste side på "Slet alle samlinger"
  2. Gå til https://dashboard.parse.com/apps//settings/general hvor er navnet på din parse app
  3. Rul ned på siden, og klik på "Migrer"
  4. I modal, i det grå område (der ikke ligner meget et input...) skal du indtaste MONGOLAB_URI som vi har noteret os tidligere
  5. Klik på "Begynd migreringen"

  1. Når migreringen er færdig, skal du klikke på "Afslut" og derefter klikke på "Okay" i pop op-vinduet, når migreringen er endelig, vil alle dine data være i din nye MongoDB-database.

  1. Indtil videre vil dit Parse-dashboard fortsætte med at vise dine data, der nu findes i den nye DB. For at teste alt, gå tilbage til testen jsFiddle, vi brugte før, og kør den igen. Gå nu til dit Parse-dashboard, og du bør se den nyligt tilføjede klasse og række. Bemærk at når jeg brugte det nye Parse-dashboard, kunne jeg se antallet af rækker, men rækkeområdet var helt tomt. Jeg vendte tilbage til det gamle Parse-dashboard og kunne se alt fint.



  1. Gå gennem alle Mongo-samlinger og udfør forespørgslen

  2. MongoDB-skår og ubalancerede aggregeringsbelastninger

  3. Få sidst indsatte dokument-id i MongoDB med Java-driver

  4. kan flere klienter få adgang til samme liste samtidigt uden at blive blokeret i Redis?