【问题标题】:Multiple apps in a single parse server单个解析服务器中的多个应用程序
【发布时间】:2016-09-01 20:14:27
【问题描述】:

我整个星期都在努力将我托管在 parse.com 上的应用程序迁移到解析服务器,设法让一切工作完美,唯一的问题是让它在单个硬件上运行多个应用程序,而无需分配服务器应用程序,它会变得昂贵。

我阅读了这个discussion关于它,并在此基础上,遵循以下解决方案:

var app1 = new ParseServer({
  databaseURI: databaseUri || 'mongodb://localhost:27017/dev',
  cloud: process.env.CLOUD_CODE_MAIN || __dirname + '/cloud/main.js',
  appId: process.env.APP_ID || 'myAppId1',
  masterKey: process.env.MASTER_KEY || 'myMasterKey1', //Add your master key here. Keep it secret!
  serverURL: process.env.SERVER_URL || 'http://localhost:1337/parse',  // Don't forget to change to https if needed
  push: pushConfig,
  liveQuery: {
    classNames: ["Posts", "Comments"] // List of classes to support for query subscriptions
  }
});

var app2 = new ParseServer({
  databaseURI: databaseUri || 'mongodb://localhost:27017/app2',
  cloud: process.env.CLOUD_CODE_MAIN || __dirname + '/cloud/main.js',
  appId: process.env.APP_ID || 'myAppId2',
  masterKey: process.env.MASTER_KEY || 'myMasterKey2', //Add your master key here. Keep it secret!
  serverURL: process.env.SERVER_URL || 'http://localhost:1337/parse',  // Don't forget to change to https if needed
  push: pushConfig,
  liveQuery: {
    classNames: ["Posts", "Comments"] // List of classes to support for query subscriptions
  }
});
// Client-keys like the javascript key or the .NET key are not necessary with parse-server
// If you wish you require them, you can set them as options in the initialization above:
// javascriptKey, restAPIKey, dotNetKey, clientKey

var app = express();

// Serve static assets from the /public folder
app.use('/public', express.static(path.join(__dirname, '/public')));

// Serve the Parse API on the /parse URL prefix
var mountPath = process.env.PARSE_MOUNT || '/parse';
app.use(mountPath, app1);
app.use(mountPath, app2);

这一直有效,直到测试环境可以使用多个应用程序在同一硬件上发送推送,只需创建指向不同数据库的服务器解析的多个实例。

谁能告诉我生产中的应用程序是否会出现问题? 这会在将来给我带来麻烦吗?

有人支持这个解决方案吗?

谢谢!

【问题讨论】:

    标签: parse-platform push-notification parse-server


    【解决方案1】:

    从 v2.2.9 开始的解析服务器提供多应用支持。

    每个应用都需要单独的实例(和挂载路径)。否则,您会遇到有关云代码的复杂情况,因为核心不是为多应用支持而设计的,尽管它带有 Parse.com 的一些遗产,例如 appId 属性,这将是朝着它迈出的一步。

    不过,由于它现在是一个开源项目,未来可能会提供多应用支持。

    更新

    Parse server v2.2.18 仍然只支持每个实例一个应用程序,根据wiki

    Parse Server 仅支持单个应用实例。正在进行的工作 使 Parse Server 多应用程序感知。但是,如果您打算运行 许多具有不同数据存储的不同应用程序,您目前会 需要实例化单独的实例。

    【讨论】:

    • 经过一段时间的研究,对代码进行了一些更改,并且 atualemente 正在运行一个带有多个应用程序的 Parsi-server 实例,我做了几个测试,一切似乎都正常运行,我将继续测试并将一些应用程序投入生产,看看它是否可以继续运行而没有任何问题。
    • @jucajl 听起来不错,也许您想加入 github 上的讨论,并最终向官方存储库提出拉取请求。对于多应用程序支持,已经有很多讨论和似乎已经在工作的代码提案。然而,由于不同的原因,开发社区无法就一个概念达成一致,例如。安全性或核心复杂性。
    • @jucajl 你能分享一下你是怎么做到的吗?
    【解决方案2】:

    使用PM2 并启动 2 个 Parse Server 实例。 PM2 配置文件如下所示:

    {
      "apps": [
        {
          "name": "app1",
          "script": "servers/app1/server.js",
          "cwd": "/home/parse",
          "log_file": "logs/server-app1.log",
          "error_file": "logs/server-app1-error.log",
          "log_date_format": "YYYY-MM-DD HH:mm:ss Z",
          "instances": 1,
          "merge_logs": true,
          "watch": ["/usr/bin/parse-server", "/home/parse/servers/app1"],
          "ignore_watch": ["logs"],
          "env": {"VERBOSE": true}
        },
        {
          "name": "app2",
          "script": "servers/app2/server.js",
          "cwd": "/home/parse",
          "log_file": "logs/server-app2.log",
          "error_file": "logs/server-app2-error.log",
          "log_date_format": "YYYY-MM-DD HH:mm:ss Z",
          "instances": 1,
          "merge_logs": true,
          "watch": ["/usr/bin/parse-server", "/home/parse/servers/app2"],
          "ignore_watch": ["logs"],
          "env": {"VERBOSE": true}
        },
        {
          "name": "parse-dashboard",
          "script": "/usr/bin/parse-dashboard",
          "args": "--config dashboard/parse-dashboard-config.json  --mountPath /dashboard",
          "cwd": "/home/parse",
          "log_file": "logs/dashboard.log",
          "error_file": "logs/dashboard-error.log",
          "log_date_format": "YYYY-MM-DD HH:mm:ss Z",
          "instances": 1,
          "watch": ["/usr/bin/parse-dashboard"]
        }
      ]
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-14
      • 2013-08-20
      • 2021-09-22
      • 2018-05-17
      • 2021-07-31
      相关资源
      最近更新 更多