创建在单个服务器上运行的metro.js应用程序的多个实例需要哪些主要步骤



我设计了一个metro.js应用程序,它在本地主机上运行得很好,甚至在部署到互联网上时也是如此。现在,我想创建一个注册站点,为在后端注册的每个客户端创建新的应用程序实例。假设注册站点使用metro.js应用程序和python或javascript,那么需要采取哪些高级步骤来实现这一点?

我正在寻找一个更正确、更完整的答案,它采用了我糟糕的想象版本:

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

我真的不理解这里需要采取的高级别步骤,所以如果有人能提供这些步骤,甚至可能提供一些有用的工具或教程,我将不胜感激。

我遇到了与您类似的情况,但最终以完全不同的方式解决了它。它现在可以作为Meteor智能包使用:

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

我们共同面临的问题是,我们想编写一个流星应用程序,就好像只有一个客户端(在我的情况下是一组客户端)存在,但它需要处理多组客户端,而这些客户端互不了解。我正在做以下事情:

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

正确地做到这一点需要大量关于流星内部的知识,我一直在学习。然而,与尝试同时部署多个流星应用程序相比,这种方法要干净得多,资源密集度也低得多。这意味着你仍然可以像只存在一个客户端一样对应用程序进行编码,而不是明确地对多个客户端进行编码。此外,它允许您在可以共享的实例之间共享资源(即静态资产、共享状态等)

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

  • https://groups.google.com/forum/#!主题/流星谈话/8u2LVk8si/s
  • https://github.com/matb33/meteor-collection-hooks(收集挂钩包;阅读问题以进行更多讨论)

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

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

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

  3. 每个实例都应该侦听自己的端口,因此您需要一个反向代理。当您更改配置时,AFAIK、Apache和Nginx需要重新启动,因此您可能需要查看Hiachehttps://github.com/dotcloud/hipache.Hiache使用redis来存储配置信息。添加新实例需要向redis添加一个键。Hiache有一个实验端口,它为Nginx带来了功能https://github.com/samalba/hipache-nginx

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

你的问题我真的没有答案。。。但我只是想提醒你,你可能会遇到另一个潜在的问题,因为我看到你提到了python,换句话说,你可能正在Apache/Nginx等平台上运行另一个网络应用程序。问题是Meteor在与另一个http服务器共存时不是很友好,我正在进行的项目受到了这个问题的困扰,在与Meteor的人争论了几天后,我们不得不将其转移到一个独立的服务器上。。。我没有处理这个问题,所以我无法给你更多的细节,但我只是在网上查了一下,发现了类似的东西:https://serverfault.com/questions/424693/serving-meteor-on-main-domain-and-apache-on-subdomain-independently.

只是需要记住的。。。

最新更新