如何使用MongoDB在Heroku上托pipe我自己的Parse Server?

(为了清楚起见,我问这个问题,以便提供我发现的答案,以帮助那些同样受到Parseclosures影响的人)

Parse.com最近宣布,他们将于2017年1月份closures店面,但幸运的是,他们已经将他们的Parse Server软件开源,所以我们都可以托pipe我们自己的Parse服务器实例。

我已经研究了可用于托pipeparsing服务器的各种选项,并决定在Heroku上托pipe我的

我喜欢Parse,因为它很容易使用,而且我没有设置后端的真实经验。 我试图在网上关注几个指南,但是发现它们有点难以理解,模糊的步骤或步骤使您在另一个网站上的兔子洞中安装了一堆工具,这一切都变得混乱起来。

如何在Heroku上托pipeParse Server,将其设置为接受来自应用程序的跨域请求,创buildMongoDB数据库,并将所有数据从Parse迁移到新数据库?

在Heroku上自主托pipe分析服务器


设置Heroku,MongoDB和Parse

  1. 访问https://signup.heroku.com/并注册一个帐户
  2. validation您的电子邮件,并login到Heroku
  3. 转到部署分析服务器到Heroku
  4. 点击“部署到Heroku”

在这里输入图像描述


  1. 给你的parsing服务器一个名字
  2. 暂时跳过应用程序的APP_ID和MASTER_KEY,我们将在后面的步骤中进行设置。
  3. 点击“免费部署”

在这里输入图像描述


  1. 如果出现以下框,请input您的信用卡信息以validation您的帐户。 不用担心,除非您稍后升级您的帐户,否则您将不会被收费 。 这只是Heroku为防止滥用而采取的安全措施。

在这里输入图像描述


  1. Heroku将创build您的应用程序。 在后台,它也会为你创build一个.git仓库,并克隆官方parse-server-example git仓库的内容 ,创build一个MongoDB数据库,并configuration你的Heroku应用程序来使用该数据库。
  2. 当应用程序被创build后,你会被带到它的Heroku仪表板,或者你可以通过login,点击“个人应用程序”,然后点击你的分析服务器的名称
  3. 在您的应用程序的仪表板上,单击“设置”,然后单击“显示configurationvariables”

在这里输入图像描述


  1. 填写您的应用的APP_ID和MASTER_KEY。 如果您现在在Parse.com上有应用程序,则可以使用它使用的相同密钥。 您可以通过https://www.parse.com/apps/<APP_NAME>/edit#keys ,其中<APP_NAME>是您的应用的名称。 如果你正在创build一个新的应用程序,你可以在这里生成随机密钥 你可以为你打算使用的任何sdks添加新的密钥,我在这里为javascript sdk添加一个。

在这里输入图像描述


  1. 记下MONGOLAB_URI的值,如果您想将现有的Parse数据迁移到新的数据库
  2. 向下滚动并记下您的应用程序的Git Url和Heroku域,您将在稍后需要这些域

在这里输入图像描述


  1. 安装Heroku Toolbelt这是一个命令行界面工具来pipe理你的Heroku应用程序。
  2. 打开terminal提示符并input$ heroku login ,input你的Heroku电子邮件和密码
  3. input$ heroku git:clone -a <MY_APP_NAME> (其中<MY_APP_NAME>是您的heroku应用程序的名称)来制作服务器代码回购的本地副本,您也可以使用前面看到的git url。 当你克隆回购,你会看到消息“警告:你似乎克隆了一个空的存储库。” 应用程序文件夹将被创build,但它将只包含标准的git文件和没有parsing服务器。 解决这个问题。 转到正式的parsing服务器示例git回购 ,下载回购的zip文件 。 解压该文件夹,将parse-server-example-master文件夹中的所有文件和文件夹拖放到您的应用程序文件夹中。

  4. 回到terminal,input$ cd <MY_APP_NAME>进入回购

启用CORS(所以你可以使用其他域的API)

  1. 在您的硬盘上,find并打开我们刚创build的本地副本
  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. 回到terminal窗口,确保你仍然在我们克隆的repo的文件夹中,然后进入下面将更改推送到Heroku:

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

testing你的新的分析服务器

  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. 你应该得到下面的警报,让你知道你的新的分析服务器工作正常

在这里输入图像描述

注意:

如果您将jsfiddle工具与多个parsing服务器实例一起使用,则可能会出现“无效会话令牌”错误。 如果发生这种情况,打开开发控制台,并从本地存储删除所有的“parsing”键,之后,它应该工作:

在这里输入图像描述


从Parse迁移现有的数据

在迁移生产应用程序之前,您应该至less使用testing应用程序执行一次此操作。 此外,旧的应用程序的旧files似乎还未传输,请参阅此GitHub问题

  1. 在迁移之前 ,如果你的新MongoDB里有数据,迁移将会失败。 如果您刚刚testing了服务器并创build了对象,请转至https://dashboard.heroku.com/apps/<MY_HEROKU_APP_NAME>/resources ,单击其图标旁边的“MongoLab”,然后在下一页上单击“删除所有collections“
  2. 转到https://dashboard.parse.com/apps/<APP_NAME>/settings/general ,其中<APP_NAME>是您的parsing应用的名称
  3. 在页面上向下滚动,然后点击“迁移”
  4. 在模式中,在灰色区域(看起来不像input…)input我们早先提到的MONGOLAB_URI
  5. 点击“开始迁移”

在这里输入图像描述


  1. 迁移完成后,点击“完成”,然后在popup窗口中点击“确定”,当迁移是最终的时候,所有的数据都将在新的MongoDB数据库中。

在这里输入图像描述


  1. 目前,您的Parse仪表板将继续显示您现在位于新数据库中的数据。 要testing一切,回到我们以前使用的testingjsFiddle并再次运行它。 现在,转到您的Parse仪表板,您应该看到新添加的类和行。 请注意 ,当我使用新的Parse仪表板时,可以看到行数,但行区域全部为空。 我恢复到旧的Parse仪表板,可以看到一切正常。