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