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

Del*_*D0D 28 heroku mongodb node.js parse-platform parse-server

(要明确的是,我问这个问题,以便提供我发现的答案,以帮助其他同样受到Parse闭包影响的人)

Parse.com最近宣布他们将于2017年1月关闭商店,但幸运的是他们已经将他们的Parse Server软件开源,因此我们可以托管我们自己的Parse服务器实例.

我已经研究了可用于托管Parse Server的各种选项,并决定在Heroku上托管我的

我喜欢Parse,因为它很容易使用,而且我没有设置后端的真实经验.我曾尝试在线跟踪几个指南,但发现它们有点难以理解,模糊的步骤或步骤会让你在另一个安装了大量工具的网站上挖洞,这一切都让人感到有些困惑.

如何在heroku上托管Parse Server,将其设置为接受来自我的应用程序的跨域请求,创建MongoDB数据库,以及将我的所有数据从Parse迁移到新数据库?

Del*_*D0D 58

在Heroku上自托管解析服务器


设置Heroku,MongoDB和Parse

  1. 访问https://signup.heroku.com/并注册一个帐户
  2. 验证您的电子邮件,然后登录Heroku
  3. 转到将解析服务器部署到Heroku
  4. 单击"部署到Heroku"

在此输入图像描述


  1. 为您的解析服务器命名
  2. 暂时取消应用程序的APP_ID和MASTER_KEY,我们将在后面的步骤中设置它.
  3. 点击"免费部署"

在此输入图像描述


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

在此输入图像描述


  1. Heroku将创建您的应用程序.在后台它还将为您创建一个.git repo并克隆官方parse-server-example git repo的内容,创建一个MongoDB数据库,并配置您的Heroku应用程序以使用该DB.
  2. 创建应用程序后,您将被带到它的Heroku仪表板,或者您可以通过登录,点击"个人应用程序"然后点击您的解析服务器的名称到达那里
  3. 在应用程序的仪表板上,单击"设置",然后单击"显示配置变量"

在此输入图像描述


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

在此输入图像描述


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

在此输入图像描述


  1. 安装Heroku Toolbelt,这是一个用于管理Heroku应用程序的命令行界面工具.
  2. 打开终端提示并输入$ heroku login,输入您的Heroku电子邮件和密码
  3. 输入$ heroku git:clone -a <MY_APP_NAME>(<MY_APP_NAME>你的heroku应用程序的名称)来制作服务器代码仓库​​的本地副本,你也可以使用我们之前看到的git url.克隆存储库时,您将看到消息"警告:您似乎克隆了一个空存储库.".将创建app文件夹,但它只包含标准git文件而不包含解析服务器.解决这个问题.转到官方的parse-server-example git repo,下载repozip文件.解压缩文件夹,将所有文件和文件夹从parse-server-example-master文件夹拖到app文件夹中.

  4. 回到终端,输入进入$ cd <MY_APP_NAME>回购

启用CORS(这样您就可以使用其他域中的API)

  1. 在您的硬盘上,找到并打开我们刚刚创建的repo的本地副本
  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
  }
Run Code Online (Sandbox Code Playgroud)

注意

请务必在实际代码中删除上述注释,因为它不是有效的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
});
Run Code Online (Sandbox Code Playgroud)
  1. 返回终端窗口,确保您仍然在我们克隆的repo的文件夹中,并输入以下内容将更改推送到Heroku:

.

$ git add .
$ git commit -am "make it better"
$ git push heroku master
Run Code Online (Sandbox Code Playgroud)

测试新的Parse Server

  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'
Run Code Online (Sandbox Code Playgroud)
  1. 你应该得到以下警告,让你知道你的新Parse服务器正常工作

在此输入图像描述

注意:

如果您将jsfiddle工具与多个解析服务器实例一起使用,则可能会收到错误"无效会话令牌".如果发生这种情况,请打开开发控制台,并从本地存储中删除所有"解析"密钥,之后,它应该工作:

在此输入图像描述


从Parse迁移现有数据

在迁移生产应用程序之前,您应该至少使用测试应用程序执行此操作一次.此外,files您的旧应用程序的遗留似乎尚未转移,请参阅此GitHub问题

  1. 在迁移之前,如果您的新MongoDB中包含数据,迁移将失败.如果您刚测试了服务器并创建了对象,请转到https://dashboard.heroku.com/apps/<MY_HEROKU_APP_NAME>/resources,单击它旁边的"MongoLab"图标,然后在下一页上单击"删除所有集合"
  2. https://dashboard.parse.com/apps/<APP_NAME>/settings/general哪里<APP_NAME>是你的名字解析程序
  3. 在页面上向下滚动,然后单击"迁移"
  4. 在模态中,在灰色区域(看起来不像输入......)输入MONGOLAB_URI我们之前记录的内容
  5. 点击"开始迁移"

在此输入图像描述


  1. 完成迁移后,单击"Finalize",然后在弹出窗口中单击"Okay",当迁移结束时,所有数据都将在新的MongoDB数据库中.

在此输入图像描述


  1. 目前,您的Parse仪表板将继续显示现在位于新数据库中的数据.要测试所有内容,请返回我们之前使用的测试jsFiddle并再次运行它.现在,转到Parse仪表板,您应该看到新添加的类和行.请注意,当我使用新的Parse仪表板时,我可以看到行数,但行区域全部为空白.我恢复到旧的Parse仪表板,可以看到一切都很好.

  • 在你更新你的东西后,记得小提琴中的RUN! (3认同)