Jak mogę hostować własny serwer Parse na Heroku przy użyciu MongoDB? [zamknięte]

(aby było jasne, zadaję to pytanie, aby zapewnić odpowiedź znalazłem w wysiłku, aby pomóc innym, które zostały podobnie dotknięte zamknięciem Parse)

Parse.com niedawno ogłosił, że zamykają sklep w styczniu 2017 roku, ale na szczęście zrobili swoje oprogramowanie Parse Server open source , więc wszyscy możemy hostować własne instancje Parse server.

Przyjrzałem się różnym opcjom dostępnym dla serwera Parse Hosting i postanowiliśmy zorganizować mój Na Heroku

Kochałem Parse, ponieważ był tak łatwy w użyciu i nie mam prawdziwego doświadczenia z konfigurowaniem backendu. Próbowałem postępować zgodnie z kilkoma przewodnikami online, ale okazało się, że wszystkie są nieco trudne do zrozumienia dzięki niejasnym krokom lub krokom, które prowadzą do króliczej nory na innej stronie, instalując kilka narzędzi i wszystko staje się nieco mylące.

Jak mogę hostować Serwer Parse na heroku, ustawić go tak, aby akceptował żądania cross domain z mojej aplikacji, utworzyć Baza danych MongoDB i przenieść wszystkie moje dane z analizy do nowej bazy danych?

Author: DelightedD0D, 2016-02-14

1 answers

Self hosting Parse Server na Heroku


W tym celu należy wykonać następujące czynności:]}
  1. wizyta https://signup.heroku.com / i zapisz się na konto
  2. W tym celu należy zalogować się do konta Heroku.]} W tym celu należy wysłać wiadomość e-mail na adres .]}
  3. Click "Deploy to Heroku"

Tutaj wpisz opis obrazka


  1. nadaj swojemu serwerowi parse nazwę
  2. Pomiń na razie APP_ID i MASTER_KEY aplikacji, zrobimy to później.
  3. kliknij "wdrażaj za darmo"

Tutaj wpisz opis obrazka


  1. Jeśli pojawi się poniższe pole, Wprowadź informacje o karcie kredytowej, aby zweryfikować swoje konto. nie martw się, nie zostaniesz obciążony, chyba że uaktualnisz swoje konto później . Jest to po prostu środek bezpieczeństwa stosowany przez Heroku, aby zapobiec nadużyciom.

Tutaj wpisz opis obrazka


  1. Heroku stworzy Twoją aplikację. W tle stworzy również .git repo dla Ciebie i Sklonuj zawartość oficjalnego serwera parse-przykładowego git repo , Utwórz bazę danych MongoDB i skonfiguruj swoją aplikację Heroku tak, aby używała tej bazy danych.
  2. Po utworzeniu aplikacji zostaniesz przeniesiony do Pulpitu Nawigacyjnego Heroku lub możesz się tam zalogować, klikając "Aplikacje osobiste", a następnie klikając nazwę serwera parse]}
  3. na pulpicie nawigacyjnym aplikacji kliknij "Ustawienia", a następnie kliknij " Pokaż config vars "

Tutaj wpisz opis obrazka


  1. wpisz APP_ID i MASTER_KEY swojej aplikacji. Jeśli masz aplikację na Parse.com teraz możesz użyć tych samych kluczy, których używa. Możesz określić adres https://www.parse.com/apps/<APP_NAME>/edit#keys, Gdzie <APP_NAME> to nazwa Twojej aplikacji. Jeśli tworzysz nową aplikację, możesz wygenerować losowe klucze tutaj. Możesz dodać nowe klucze dla dowolnych zestawów SDK, które planujesz użyć, dodaję jeden dla zestawu SDK javascript tutaj.

Tutaj wpisz opis obrazka


  1. zanotuj wartość MONGOLAB_URI będzie potrzebna później, jeśli chcesz przenieść istniejące dane do nowego DB
  2. przewiń w dół i zanotuj adres URL Gita i Domenę Heroku dla Twojej aplikacji, będziesz ich potrzebował później]}

Tutaj wpisz opis obrazka


  1. zainstaluj Heroku Toolbelt , który jest narzędziem interfejsu wiersza poleceń do zarządzania aplikacjami Heroku.
  2. Otwórz monit terminala i wpisz $ heroku login, wpisz swój e-mail i hasło
  3. Wprowadź $ heroku git:clone -a <MY_APP_NAME> (gdzie <MY_APP_NAME> to nazwa Twojej aplikacji heroku) aby wykonać lokalną kopię kodu serwera repo, możesz również użyć adresu URL git z wcześniej widzieliśmy. Po sklonowaniu repo pojawi się komunikat " warning: you seem to have cloned an empty repozytorium.". Folder app zostanie utworzony, ale będzie zawierał tylko standardowe pliki git i nie będzie serwera parse. Żeby to naprawić. Przejdź do oficjalnego Parse-server-przykładowego git repo , Pobierz plik zip repo. Rozpakuj folder, przeciągnij wszystkie pliki i foldery z folderu parse-server-example-master do folderu aplikacji.

  4. W terminalu wpisz $ cd <MY_APP_NAME>, aby przejść do repo

Dzięki temu można korzystać z API z innych domen.]}
  1. na dysku twardym znajdź i otwórz lokalną kopię repo, którą właśnie stworzyliśmy]}
  2. w folderze otwórz package.json i dodaj "cors": "*" do dependencies Jak to:

.

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

Uwaga

Upewnij się, aby usunąć powyższe komentarze w swoim rzeczywistym kodzie, ponieważ nie będzie poprawny JSON

  1. Otwórz index.js i wprowadź te zmiany:

.

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. wróć do okna terminala, upewnij się, że nadal jesteś w folderze repo, które sklonowaliśmy, i wprowadź poniżej, aby wypchnąć zmiany do Heroku: {]}

.

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

Przetestuj swój nowy serwer Parse

  1. idź do to strona jsFiddle
  2. Zmień <MY_APP_ID>,<MY_JS_KEY>,<MY_HEROKU_APP_NAME> w wierszu do odpowiednich wartości dla aplikacji, a następnie kliknij "Uruchom"

.

Parse.initialize('<MY_APP_ID>', '<MY_JS_KEY>');
Parse.serverURL = 'https://<MY_HEROKU_APP_NAME>.herokuapp.com/Parse'
  1. powinieneś otrzymać poniższy alert informujący, że Twój nowy serwer parsowania działa poprawnie

Tutaj wpisz opis obrazka

Uwaga:

Jeśli używasz narzędzia jsfiddle z wieloma instancjami parse server, możesz otrzymać błąd "invalid session token". Jeśli tak się stanie, otwórz konsolę dev i usuń wszystkie klucze" parse " z lokalnego magazynu, po tym powinno działać:

Tutaj wpisz opis obrazka


Migracja istniejących danych z analizy

Przed migracją aplikacji produkcyjnej należy to zrobić co najmniej raz za pomocą aplikacji testowej. Ponadto, wydaje się, że dziedzictwo files ze starej aplikacji może jeszcze nie zostać przeniesione, zobacz ten problem z GitHub

  1. zanim dokonamy migracji , jeśli twój nowy MongoDB ma w sobie DANE migracja nie powiedzie się. Jeśli po prostu przetestowałeś serwer i utworzyłeś i obiekt, przejdź do https://dashboard.heroku.com/apps/<MY_HEROKU_APP_NAME>/resources, kliknij "MongoLab" obok jego ikony, a następnie na następnej stronie kliknij "Usuń wszystkie kolekcje"[31]}
  2. przejdź do https://dashboard.parse.com/apps/<APP_NAME>/settings/general gdzie <APP_NAME> jest nazwą Twojej parse aplikacji
  3. przewiń stronę w dół i kliknij "Migrate"
  4. w modalnym, w szarym obszarze (to nie wygląda jak wejście...) wpisz MONGOLAB_URI, które zanotowaliśmy wcześniej
  5. kliknij " Begin the migracja "

Tutaj wpisz opis obrazka


  1. Po zakończeniu migracji kliknij "Finalizuj", a następnie w wyskakującym okienku kliknij" OK", gdy migracja zostanie zakończona, wszystkie Twoje dane będą w nowej bazie danych MongoDB.

Tutaj wpisz opis obrazka


  1. na razie Pulpit Nawigacyjny analizy będzie nadal wyświetlał dane, które teraz żyją w nowym DB. Aby przetestować wszystko, wróć do testowego jsFiddle, którego wcześniej używaliśmy i uruchom go ponownie. Teraz idź do swojego Analizuj pulpit nawigacyjny i powinieneś zobaczyć nowo dodaną klasę i wiersz. zauważ że kiedy używałem nowego pulpitu Parse, mogłem zobaczyć liczbę wierszy, ale obszar wierszy był pusty. Wróciłem do starego pulpitu Parse i mogłem zobaczyć wszystko w porządku.
 57
Author: DelightedD0D,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-28 19:18:44