如何使用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
- 访问https://signup.heroku.com/并注册一个帐户
- validation您的电子邮件,并login到Heroku
- 转到部署分析服务器到Heroku
- 点击“部署到Heroku”
- 给你的parsing服务器一个名字
- 暂时跳过应用程序的APP_ID和MASTER_KEY,我们将在后面的步骤中进行设置。
- 点击“免费部署”
- 如果出现以下框,请input您的信用卡信息以validation您的帐户。 不用担心,除非您稍后升级您的帐户,否则您将不会被收费 。 这只是Heroku为防止滥用而采取的安全措施。
- Heroku将创build您的应用程序。 在后台,它也会为你创build一个.git仓库,并克隆官方parse-server-example git仓库的内容 ,创build一个MongoDB数据库,并configuration你的Heroku应用程序来使用该数据库。
- 当应用程序被创build后,你会被带到它的Heroku仪表板,或者你可以通过login,点击“个人应用程序”,然后点击你的分析服务器的名称
- 在您的应用程序的仪表板上,单击“设置”,然后单击“显示configurationvariables”
- 填写您的应用的APP_ID和MASTER_KEY。 如果您现在在Parse.com上有应用程序,则可以使用它使用的相同密钥。 您可以通过
https://www.parse.com/apps/<APP_NAME>/edit#keys
,其中<APP_NAME>
是您的应用的名称。 如果你正在创build一个新的应用程序,你可以在这里生成随机密钥 你可以为你打算使用的任何sdks添加新的密钥,我在这里为javascript sdk添加一个。
- 记下MONGOLAB_URI的值,如果您想将现有的Parse数据迁移到新的数据库
- 向下滚动并记下您的应用程序的Git Url和Heroku域,您将在稍后需要这些域
- 安装Heroku Toolbelt这是一个命令行界面工具来pipe理你的Heroku应用程序。
- 打开terminal提示符并input
$ heroku login
,input你的Heroku电子邮件和密码 -
input
$ heroku git:clone -a <MY_APP_NAME>
(其中<MY_APP_NAME>
是您的heroku应用程序的名称)来制作服务器代码回购的本地副本,您也可以使用前面看到的git url。 当你克隆回购,你会看到消息“警告:你似乎克隆了一个空的存储库。” 应用程序文件夹将被创build,但它将只包含标准的git文件和没有parsing服务器。 解决这个问题。 转到正式的parsing服务器示例git回购 ,下载回购的zip文件 。 解压该文件夹,将parse-server-example-master文件夹中的所有文件和文件夹拖放到您的应用程序文件夹中。 -
回到terminal,input
$ cd <MY_APP_NAME>
进入回购
启用CORS(所以你可以使用其他域的API)
- 在您的硬盘上,find并打开我们刚创build的本地副本
- 在该文件夹中,打开
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
- 打开
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 });
- 回到terminal窗口,确保你仍然在我们克隆的repo的文件夹中,然后进入下面将更改推送到Heroku:
。
$ git add . $ git commit -am "make it better" $ git push heroku master
testing你的新的分析服务器
- 转到这个jsFiddle页面
- 将小提琴中的
<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'
- 你应该得到下面的警报,让你知道你的新的分析服务器工作正常
注意:
如果您将jsfiddle工具与多个parsing服务器实例一起使用,则可能会出现“无效会话令牌”错误。 如果发生这种情况,打开开发控制台,并从本地存储删除所有的“parsing”键,之后,它应该工作:
从Parse迁移现有的数据
在迁移生产应用程序之前,您应该至less使用testing应用程序执行一次此操作。 此外,旧的应用程序的旧files
似乎还未传输,请参阅此GitHub问题
- 在迁移之前 ,如果你的新MongoDB里有数据,迁移将会失败。 如果您刚刚testing了服务器并创build了对象,请转至
https://dashboard.heroku.com/apps/<MY_HEROKU_APP_NAME>/resources
,单击其图标旁边的“MongoLab”,然后在下一页上单击“删除所有collections“ - 转到
https://dashboard.parse.com/apps/<APP_NAME>/settings/general
,其中<APP_NAME>
是您的parsing应用的名称 - 在页面上向下滚动,然后点击“迁移”
- 在模式中,在灰色区域(看起来不像input…)input我们早先提到的
MONGOLAB_URI
- 点击“开始迁移”
- 迁移完成后,点击“完成”,然后在popup窗口中点击“确定”,当迁移是最终的时候,所有的数据都将在新的MongoDB数据库中。
- 目前,您的Parse仪表板将继续显示您现在位于新数据库中的数据。 要testing一切,回到我们以前使用的testingjsFiddle并再次运行它。 现在,转到您的Parse仪表板,您应该看到新添加的类和行。 请注意 ,当我使用新的Parse仪表板时,可以看到行数,但行区域全部为空。 我恢复到旧的Parse仪表板,可以看到一切正常。