我设计了一个meteor.js应用程序,它在localhost上工作得很好,甚至在部署到互联网时也是如此。现在我想创建一个注册站点,该站点将为在后端注册的每个客户端启动应用程序的新实例。假设一个meteor.js应用程序和python或javascript用于注册站点,需要采取哪些高级步骤来实现它?
我正在寻找一个更正确,更完整的答案,采用我想象不到的版本:
我真的不明白这里需要采取的高级步骤,所以如果有人可以提供这些步骤,甚至可能提供一些有用的工具或教程,我将非常感激。
答案 0 :(得分:6)
我有类似的情况,但最终以完全不同的方式解决它。它现在可以作为Meteor智能包提供:
我们分享的问题是我们想要编写一个流星应用程序,好像只存在一个客户端(或我的情况下的一组客户端),但它需要处理多组客户端,而不需要彼此了解。我正在做以下事情:
正确地做这个需要大量关于Meteor内部的知识,我一直在学习。但是,与尝试同时部署多个流星应用程序相比,这种方法更清洁,资源更少。这意味着您仍然可以编写应用程序,就像只存在一个客户端一样,而不是明确地为多个客户端执行此操作。此外,它允许您在可共享的实例(即静态资产,共享状态等)之间共享资源
有关详细信息和讨论,请参阅:
答案 1 :(得分:3)
首先我要说的是,我认为启动同一个应用程序的多个实例是一个糟糕的设计选择。如果是一个止损措施,这就是我的建议:
创建可轻松部署的存档。 (捆绑应用程序,必要时重新安装光纤,重新压缩)。使用脚本创建新实例时,将存档部署(解压缩)到新文件夹。
创建init脚本的模板并使用forever或daemonize或jesus等在重新启动时启动站点并在正常操作期间保持站点正常运行。有关示例,请参阅Meteor deploying to a VM by installing meteor或How does one start a node.js server as a daemon process?。部署新实例时,使用新值(即端口号,数据库名称,文件夹)填充模板。将填写的模板复制到init.d并链接到运行级别。或者,在init.d中创建一个脚本,执行其他脚本以启动站点。
每个实例都应该监听自己的端口,因此您需要一个反向代理。更改配置时,AFAIK,Apache和Nginx需要重新启动,因此您可能希望查看Hipache https://github.com/dotcloud/hipache。 Hipache使用redis存储配置信息。添加新实例需要向redis添加密钥。有一个实验端口的Hipache将功能带到Nginx https://github.com/samalba/hipache-nginx
DNS更新怎么样?创建新实例后,是否需要在DNS配置中添加新记录?
答案 2 :(得分:2)
我对你的问题没有真正的答案......但我只是想提醒你另一个潜在的问题,你可能会遇到因为我看到你提到了python,换句话说,你可能正在运行另一个网络Apache / Nginx等应用程序......问题是Meteor在与另一个http服务器共存时不是很友好,我正在研究的项目受到这个问题的困扰而我们不得不将它移到一个经过与Meteor人员的几天麻烦后独立服务器...我没有解决这个问题,所以我无法向你提供更多详细信息,但我只是在网上查找并找到类似的东西:https://serverfault.com/questions/424693/serving-meteor-on-main-domain-and-apache-on-subdomain-independently
要记住一些事情......