如何从命令行Meteor Up部署中获取MONGO_URL?

时间:2014-10-26 10:36:44

标签: mongodb meteor meteor-up

我目前正在使用Meteor Up部署到Digital Ocean。如果我没有在mup.json中指定MONGO_URL,我可以在网站运行时从命令行获取值,即我不想关闭该网站吗?

如果我转到app目录并运行meteor mongo --url,我会收到以下错误:

mongo: Meteor isn't running a local MongoDB server.

This command only works while Meteor is running your application
locally. Start your application first. (This error will also occur if
you asked Meteor to use a different MongoDB server with $MONGO_URL when
you ran your application.)

If you're trying to connect to the database of an app you deployed
with 'meteor deploy', specify your site's name with this command.

即使我从app目录运行应用程序,它也只会提供localhost MONGO_URL。我需要MONGO_URL用于部署的应用程序。

我还看了一些答案所建议的similar question。我不同意这是不可能的"在没有服务器上运行的其他程序的情况下获取MONGO_URL。伙计们,这并不像我们在这里违反物理定律一样。从根本上说,应该有一种方法来访问它。仅仅因为没有人想出来并不意味着它是不可能的。

2 个答案:

答案 0 :(得分:1)

meteor mongo --url应该返回网址。

尝试在app目录中打开另一个shell并运行该命令。

答案 1 :(得分:0)

Meteor Up使用meteor build将您的应用程序打包到生产模式,以便它通过node而不是meteor命令行界面运行。除此之外,这意味着meteor foo将无法在远程服务器上运行(至少在默认情况下不起作用)。所以你真正想要的是一种远程访问mongo的方法。

我最近在AWS EC2实例上设置了mongo,并在此列出了一些经验教训:https://stackoverflow.com/a/28846703/2669596。关于你如何做到这一点的一些细节在Digital Ocean上会有所不同,但是这些是你安装mongo后必须要注意的主要事项:

  • 公共IP / DNS地址:由于您可以部署到服务器,因此可能已经很好了。
  • 端口安全规则:您需要确保端口27017已打开以进行TCP访问,至少从您的IP地址开始。 MongoDB还有一个可以设置的http接口;如果你想使用它,你也需要打开28017。
  • /etc/mongod.conf (文件位置可能因Linux风格而异):
    • 取消注释port=27017以确保您拥有默认端口(我不认为这实际上是必要的,但它让我感觉更好,知道在哪里更改默认端口...)。
    • 注释bind_ip=127.0.0.1以收听外部接口(例如远程连接)。
    • 如果要使用http接口,请取消注释httpinterface=true
    • 您可能需要通过mongod重新启动sudo service mongod restart主机。如果您不能停机,那就是一个问题,但如果您更改配置文件,我不知道如何解决这个问题。
  • 创建用户:您需要create an admin and/or user远程访问数据库。

完成所有这些后,您应该能够通过运行mongo从本地计算机访问数据库(假设您在本地安装了 mongo server.url.com:27017/mup-app-name -u username -p 客户端) 其中server.url.com是远程服务器的URL或IP地址,mup-app-nameappName文件中的mup.json参数,username是您创建的用户访问数据库,运行命令后会提示您输入该用户的密码(或者您可以将-p放在同一行上,具体取决于密码)。

也可以通过在远程服务器上设置nginx到反向代理127.0.0.1:27017来实现此目的,但我从来没有这样做过,这只是我推测的。