在自有生产环境中访问Meteor设置

8
根据 Meteor 的 文档,我们可以通过命令行包含一个设置文件来提供特定于部署的设置。
然而,--settings 选项似乎只能通过 rundeploy 命令使用。如果我在自己的基础设施上运行 Meteor 应用程序 - 如 文档 中的“在您自己的基础设施上运行”部分所述 - 在整个过程中似乎没有办法指定特定于部署的设置文件。 有没有一种方法可以在自己的基础设施上运行的生产环境中访问 Meteor 设置?
1个回答

14

是的,将设置内容包含在环境变量METEOR_SETTINGS中。例如,

export METEOR_SETTINGS='{"privateKey":"MY_KEY", "public":{"publicKey":"MY_PUBLIC_KEY", "anotherPublicKey":"MORE_KEY"}}'

然后像平常一样运行Meteor应用程序。

这将正常填充Meteor.settings对象。对于上面的设置,

Meteor.settings.privateKey == "MY_KEY" #Only on server
Meteor.settings.public.publicKey == "MY_PUBLIC_KEY" #Server and client
Meteor.settings.public.anotherPublicKey == "MORE_KEY" #Server and client

对于我们的项目,我们使用一个upstart脚本并在其中包含它(尽管upstart具有稍微不同的语法)。然而,如果您使用普通shell脚本启动它,您只需要在node命令之前包含那个export语句。例如,您可以有一个类似这样的脚本:

export METEOR_SETTINGS='{"stuff":"real"}'
node /path/to/bundle/main.js

或者

METEOR_SETTINGS='{"stuff":"real"}' node /path/to/bundle/main.js

您可以在这里找到有关bash变量的更多信息。


那么,在代码中 Meteor.settings.privateKey 会按预期工作吗? - JT703
太棒了。所以,我猜测导出语句在你的代码中?你会把那个语句放在代码库的特定位置吗? - Stephen Watkins
1
把它放在你用来启动Meteor进程的任何init脚本中,或者在启动命令前加上它。我已经编辑了答案以更详细地解释这一点。 - jagill
感谢解释。 - Stephen Watkins
以上代码是否排除了MONGO_URL和ROOT_URL?我尝试了以上操作,但出现了以下错误 - “错误:必须在环境中设置MONGO_URL”。我导出、使用bash文件源并在命令行上运行,但似乎都不起作用,直到我显式定义了export MONGO_URL = ...。 - gamengineers

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接