Self hosting Parse Server on Heroku
设置Heroku、MongoDB和Parse
- 访问https://signup.heroku.com/并注册一个帐户
- 验证您的邮箱,并登录Heroku
- 到Deploying a Parse Server to Heroku
- 单击"部署到Heroku"
- 给解析服务器起个名字
- 暂时跳过应用程序的app_ID和MASTER_键,我们将在后面的步骤中进行设置.
- 单击"免费部署"
- 如果出现以下框,请输入您的信用卡信息以验证您的帐户.Dont worry, you wont be charged unless you upgrade your account later.这只是Heroku为防止滥用而采取的安全措施.
- Heroku将创建你的应用程序.在背景中,它还将创建一个.git repo,克隆official parse-server-example git repo的内容,创建MongoDB数据库,并将Heroku应用程序配置为使用该数据库.
- 当应用程序被创建时,你会被带到它的Heroku仪表板,或者你可以登录,点击"个人应用",然后点击解析服务器的名称
- 在应用程序的仪表板上,单击"设置",然后单击"显示配置变量"
- 填写应用程序的应用程序ID和主密钥.如果你有一个正在解析的应用程序.com现在,您可以使用它使用的相同密钥.你可以在
https://www.parse.com/apps/<APP_NAME>/edit#keys
上搜索,其中<APP_NAME>
是你的应用程序名.如果你正在创建一个新的应用程序,你可以generate random keys here.你可以为你计划使用的任何sdk添加新的键,我在这里为javascript sdk添加一个.
- 请注意MONGOLAB_URI的值,如果您想将现有的解析数据迁移到新的数据库中,您将需要这个值
- 向下滚动并记下你的应用程序的Git Url和Heroku域,你以后需要这些
安装Heroku Toolbelt,这是一个用于管理Heroku应用程序的命令行界面工具.
打开终端提示,输入$ heroku login
,输入Heroku邮箱和密码
输入$ heroku git:clone -a <MY_APP_NAME>
(其中<MY_APP_NAME>
是heroku应用程序的名称)以制作服务器代码repo的本地副本,您还可以使用我们之前看到的git url.克隆回购协议时,您将看到消息"警告:您似乎克隆了一个空存储库.".将创建应用程序文件夹,但它只包含标准git文件,不包含解析服务器.来解决这个问题.转到official parse-server-example git repo,下载回购协议的zip file.提取文件夹,将所有文件和文件夹从parse server example主文件夹拖到应用程序文件夹中.
回到终端,输入$ cd <MY_APP_NAME>
进入回购
启用CORS(以便可以使用其他域的API)
- 在硬盘上,找到并打开我们刚刚创建的回购协议的本地副本
- 在文件夹中,打开
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
});
- 返回终端窗口,确保您仍在我们克隆的回购协议的文件夹中,并输入以下内容以将更改推送到Heroku:
.
$ git add .
$ git commit -am "make it better"
$ git push heroku master
测试你的新解析服务器
- go 这jsFiddle page
- 将fiddle中的
<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'
- 您应该会收到以下alert ,告知您的新解析服务器工作正常
笔记:
如果将JSFIDLE工具用于多个解析服务器实例,可能会出现错误"会话令牌无效".如果发生这种情况,请打开dev控制台,并从本地存储中删除所有"parse"键,然后,它应该可以工作:
从Parse迁移现有数据
在迁移生产应用程序之前,您应该在测试应用程序中至少执行一次.此外,您的旧应用程序中的legacy files
可能尚未传输,请参见this GitHub Issue
- Before we migrate,如果新的MongoDB中有数据,迁移将失败.如果您刚刚测试了服务器并创建了对象,请转到
https://dashboard.heroku.com/apps/<MY_HEROKU_APP_NAME>/resources
,单击其图标旁边的"MongoLab",然后在下一页上单击"删除所有集合"
- 转到
https://dashboard.parse.com/apps/<APP_NAME>/settings/general
,其中<APP_NAME>
是parse应用程序的名称
- 向下滚动页面并单击"迁移"
- 在模式中,在灰色区域(看起来不太像输入…)输入我们之前记录的
MONGOLAB_URI
- 单击"开始迁移"
- 迁移完成后,单击"Finalize",然后在弹出窗口中单击"Okay",迁移完成后,所有数据都将保存在新的MongoDB数据库中.
- 目前,您的分析仪表板将继续显示您现在位于新数据库中的数据.要测试所有内容,请返回我们之前使用的测试JSFIDLE并再次运行它.现在,转到Parse仪表板,您应该会看到新添加的类和行.Note当我使用新的解析仪表板时,我可以看到行数,但行区域都是空白的.我又回到了旧的分析仪表板,可以看到一切都很好.