在Heroku上自助托管Parse Server
设置Heroku、MongoDB和Parse
- 访问https://signup.heroku.com/并注册一个账户。
- 验证你的电子邮件,并登录到Heroku。
- 转到将Parse服务器部署到Heroku。
- 点击“Deploy to Heroku”。
- 给你的Parse服务器起个名字。
- 现在跳过应用程序的APP_ID和MASTER_KEY,我们将在稍后的步骤中进行设置。
- 点击“Deploy for free”。
- 如果下面的框出现了,请输入您的信用卡信息以验证您的帐户。 别担心,除非您在以后升级您的帐户,否则不会被收取任何费用。这只是Heroku为防止滥用而采取的一种安全措施。
- Heroku将创建您的应用程序。在后台,它还将为您创建一个.git仓库,并克隆官方parse-server-example git仓库的内容,创建一个MongoDB数据库,并配置您的Heroku应用程序使用该数据库。
- 创建应用程序时,您将被带到其Heroku仪表板,或者您可以通过登录后单击“个人应用程序”,然后单击您的parse服务器名称来到达该位置。
- 在应用程序的仪表板上,点击“设置”,然后点击“显示配置变量”。
- 填写你的应用程序的APP_ID和MASTER_KEY。如果你现在在Parse.com上有一个应用程序,可以使用它使用的相同密钥。您可以在
https://www.parse.com/apps/<APP_NAME>/edit#keys
找到它们,其中<APP_NAME>
是您的应用程序名称。如果您正在创建新的应用程序,可以在此处生成随机密钥。您可以为您计划使用的任何sdk添加新的密钥,在这里我正在添加javascript sdk的密钥。
- 记下MONGOLAB_URI的值,在以后迁移现有的Parse数据到新的DB时需要用到它
- 向下滚动并记下您的应用程序的Git Url和Heroku域名,稍后会用到
安装Heroku Toolbelt,这是一个用于管理Heroku应用程序的命令行界面工具。
打开终端提示符并输入$ heroku login
,输入您的Heroku电子邮件和密码
输入$ heroku git:clone -a <MY_APP_NAME>
(其中<MY_APP_NAME>
是您的heroku应用程序名称)以创建您的服务器代码仓库的本地副本,您也可以使用之前看到的git url。当您克隆仓库时,您将看到消息“warning:You appear to have cloned an empty repository。”app文件夹将被创建,但它只包含标准的git文件和没有parse server。要解决此问题,请转到official parse-server-example git repo,下载该repo的zip文件。解压文件夹,将parse-server-example-master文件夹中的所有文件和文件夹拖到您的应用程序文件夹中。
回到终端,输入$ cd <MY_APP_NAME>
进入仓库
启用CORS(以便您可以从其他域使用API)
- 在硬盘上找到并打开我们刚刚创建的本地repo的副本
- 在文件夹中打开
package.json
并将 "cors": "*"
添加到 dependencies
中,就像这样:
.
"dependencies": {
"express": "~4.2.x",
"kerberos": "~0.0.x",
"parse": "~1.6.12",
"parse-server": "~2.0",
"cors": "*"
}
注意
在实际代码中,请务必删除上述注释,因为它不是有效的 JSON。
- 打开
index.js
并进行以下更改:
。
var express = require('express');
var cors = require('cors')
var databaseUri = process.env.DATABASE_URI || process.env.MONGODB_URI
var app = express();
app.use(cors());
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 || '',
restAPIKey: process.env.REST_API_KEY || '',
dotNetKey: process.env.DOT_NET_KEY || '',
clientKey: process.env.CLIENT_KEY || '',
});
回到终端窗口,确保仍然在我们克隆的存储库文件夹中,并输入以下内容将更改推送到Heroku:
$ git add .
$ git commit -am "make it better"
$ git push heroku master
测试你的新 Parse 服务器
- 前往这个 jsFiddle 页面
- 在 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'
- 您应该会收到以下提示,让您知道您的新Parse服务器正常工作。
注意:
如果您使用jsfiddle工具有多个parse服务器实例,则可能会出现“无效的会话令牌”错误。如果发生这种情况,请打开开发控制台,并从本地存储中删除所有“parse”键,然后它应该可以工作:
将现有数据从Parse迁移
在迁移生产应用程序之前,您应该至少使用测试应用程序进行一次迁移。此外,似乎旧应用程序中的传统文件
可能尚未转移,请参见此GitHub问题
- 在我们迁移之前,如果您的新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
- 单击“开始迁移”
- 当迁移完成时,单击“完成”,然后在弹出窗口中单击“确定”即可。迁移完成后,您的所有数据都将存储在新的MongoDB数据库中。
目前,您的Parse控制台将继续显示存储在新数据库中的数据。为了测试一切是否正常,请返回我们之前使用的测试jsFiddle并再次运行它。现在,转到Parse控制台,您应该可以看到新增的类和行。请注意,当我使用新的Parse控制台时,我可以看到行数,但行区域全部为空白。我回到旧的Parse控制台后,一切都正常显示。