创建在单个服务器上运行的meteor.js应用程序的多个实例所需的主要步骤是什么?

fun*_*eah 7 javascript architecture shell web-deployment meteor

我设计了一个meteor.js应用程序,它在localhost上工作得很好,甚至在部署到互联网时也是如此.现在我想创建一个注册站点,该站点将为在后端注册的每个客户端启动应用程序的新实例.假设一个meteor.js应用程序和python或javascript用于注册站点,需要采取哪些高级步骤来实现这一点?

我正在寻找一个更正确和完整的答案,采取我的想象不好的版本的形式:

  1. 使用类似node或python的东西来调用可能或不可能以sudo身份运行的shell脚本
  2. 该脚本可能会创建一个新文件夹来保存特定于实例的内容(如客户端文件,配置和/或实例数据库).
  3. 脚本或python代码会将应用程序的实例部署到该文件夹​​和特定端口
  4. Python可能会将配置信息添加到像Pound这样的工具中,以将子域转发到端口
  5. 其他事情....!?

我真的不明白需要采取的高级步骤,所以如果有人可以提供这些步骤,甚至可能提供一些有用的工具或教程,我将非常感激.

And*_*Mao 6

我有类似的情况,但最终以完全不同的方式解决它.它现在可以作为Meteor智能包提供:

https://github.com/mizzao/meteor-partitioner

我们分享的问题是我们想要编写一个流星应用程序,好像只存在一个客户端(或我的情况下的一组客户端),但是它需要处理多组客户端而不需要彼此了解.我正在做以下事情:

  • 假设Meteor应用程序仅针对单个实例进行编程
  • 使用智能包,将集合挂钩在服务器(可能还有客户端)上,以便所有操作仅限于调用它们的用户的实例.一种方法是自动将"实例"或"组"字段附加到要添加的每个文档.

正确地做这个需要大量关于Meteor内部的知识,这是我一直在学习的.但是,与尝试同时部署多个流星应用程序相比,这种方法更清洁,资源更少.这意味着您仍然可以编写应用程序,就像只存在一个客户端一样,而不是为多个客户端显式执行此操作.此外,它允许您在可共享的实例之间共享资源(即静态资产,共享状态等)

有关更多详细信息和讨论,请参阅:


hkn*_*ust 3

首先我要指出的是,我认为旋转同一应用程序的多个实例是一个糟糕的设计选择。如果这是权宜之计,我的建议是:

  1. 创建可以轻松部署的存档。(捆绑应用程序,必要时重新安装光纤,重新压缩)。使用脚本创建新实例时,将存档部署(解压缩)到新文件夹。

  2. 创建一个初始化脚本模板,并使用forever或daemonize或jesus等在重新启动时启动站点并在正常操作期间保持站点运行。请参阅通过安装 Meteor 将 Meteor 部署到 VM或如何将 Node.js 服务器作为守护进程启动?举些例子。部署新实例时,使用新值(即端口号、数据库名称、文件夹)填充模板。将填写的模板复制到 init.d 并链接到运行级别。或者,在 init.d 中创建一个脚本来执行其他脚本来启动该站点。

  3. 每个实例都应该监听自己的端口,因此您需要一个反向代理。AFAIK,当您更改配置时,Apache 和 Nginx 需要重新启动,因此您可能需要查看 Hipache https://github.com/dotcloud/hipache。Hipache使用redis来存储配置信息。添加新实例需要向 redis 添加密钥。Hipache 有一个实验性端口,可以将功能引入 Nginx https://github.com/samalba/hipache-nginx

DNS 更新怎么样?创建新实例后,是否需要向 DNS 配置添加新记录?

  • 所以您认为重新架构或添加使其成为多租户应用程序所需的架构是最好的方法?对我来说,似乎一切都指向多实例架构对于此类事情来说更好......我有多个客户端,它们不需要彼此通信,至少需要数据的逻辑分离,并且它在应用程序内部划分应用程序的注册、路由和数据分离似乎比在应用程序外部更难;虽然自动实例化和更新每个实例似乎并不那么困难 (3认同)