MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Как мога да хоствам собствен сървър за анализиране на Heroku, използвайки MongoDB?

Самохостващ Parse Server на Heroku

Настройте Heroku, MongoDB и Parse

  1. Посетете https://signup.heroku.com/ и си регистрирайте акаунт
  2. Потвърдете имейла си и влезте в Heroku
  3. Отидете на Разгръщане на сървър за анализ на Heroku
  4. Щракнете върху „Внедряване в Heroku“

  1. Дайте на вашия сървър за синтактичен анализ име
  2. Засега пропуснете APP_ID и MASTER_KEY на приложението, ще го зададем в по-късна стъпка.
  3. Щракнете върху „Внедряване безплатно“

  1. Ако се появи полето по-долу, въведете информацията за кредитната си карта, за да потвърдите акаунта си. Не се притеснявайте, няма да бъдете таксувани, освен ако не надстроите акаунта си по-късно . Това е просто мярка за сигурност, която Heroku има за предотвратяване на злоупотреби.

  1. Heroku ще създаде вашето приложение. На заден план също така ще създаде .git репозиторий за вас и ще клонира съдържанието на официалния пример за git репозитория за анализ на сървъра, ще създаде база данни MongoDB и ще конфигурира вашето приложение Heroku да използва тази DB.
  2. Когато приложението бъде създадено, ще бъдете отведени до неговото табло за управление на Heroku или можете да стигнете до там, като влезете, щракнете върху „Лични приложения“, след което щракнете върху името на вашия сървър за синтактичен анализ
  3. На таблото за управление на приложението си щракнете върху „Настройки“, след което върху „Разкриване на конфигурационни вар.“

  1. Попълнете APP_ID и MASTER_KEY на приложението си. Ако сега имате приложение на Parse.com, можете да използвате същите клавиши, които използва. Можете да го направите на https://www.parse.com/apps/<APP_NAME>/edit#keys където <APP_NAME> е името на вашето приложение. Ако създавате ново приложение, можете да генерирате произволни ключове тук. Можете да добавите нови ключове за всички sdks, които планирате да използвате, аз добавям един за javascript sdk тук.

  1. Отбележете стойността за MONGOLAB_URI, това ще ви е необходимо по-късно, ако искате да мигрирате съществуващите си данни от Parse към новата си DB
  2. Превъртете надолу и си отбележете Git Url и домейна Heroku за вашето приложение, те ще ви трябват по-късно

  1. Инсталирайте Heroku Toolbelt, който е инструмент за интерфейс на командния ред за управление на вашите приложения Heroku.

  2. Отворете подкана на терминала и въведете $ heroku login , въведете вашия имейл и парола за Heroku

  3. Въведете $ heroku git:clone -a <MY_APP_NAME> (където <MY_APP_NAME> е името на вашето приложение heroku), за да направите локално копие на репото на вашия сървърен код, можете също да използвате git url от който видяхме по-рано. Когато клонирате репозиторията, ще видите съобщението "предупреждение:Изглежда, че сте клонирали празно хранилище.". Папката на приложението ще бъде създадена, но ще съдържа само стандартните git файлове и няма сървър за синтактичен анализ. За да поправите това. Отидете на официалния 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

Тествайте новия си сървър за анализиране

  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

Трябва да направите това поне веднъж с тестово приложение, преди да мигрирате производствено приложение. Също така изглежда, че наследените 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. Когато миграцията приключи, щракнете върху „Финализиране“, след което в изскачащия прозорец щракнете върху „Добре“, когато миграцията приключи, всичките ви данни ще бъдат в новата ви база данни MongoDB.

  1. Засега таблото ви за управление на Parse ще продължи да показва вашите данни, които вече живеят в новата база данни. За да тествате всичко, върнете се към тестовия jsFiddle, който използвахме преди, и го стартирайте отново. Сега отидете на таблото за управление на Parse и трябва да видите новодобавения клас и ред. Забележка че когато използвах новото табло за управление на Parse, можех да видя броя на редовете, но областта на редовете беше празна. Върнах се към старото табло за управление на Parse и видях всичко наред.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Премахнете вградения документ във вложен масив от документи

  2. $nin с $expr

  3. Как да създадете DB за MongoDB контейнер при стартиране?

  4. Настройване на singleton връзка с node.js и mongo

  5. Ограничение за попълване на възел js mongoose