0

我目前正在使用 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.

即使我从应用程序目录运行应用程序,它也只会提供本地主机 MONGO_URL。我需要已部署应用程序的 MONGO_URL。

我也看过一些答案所建议的类似问题。我不同意在服务器上没有运行其他程序的情况下获取 MONGO_URL 是“不可能的”。伙计们,这并不是说我们在这里违反物理定律。从根本上说,应该有一种访问它的方法。仅仅因为还没有人弄清楚并不意味着它是不可能的。

4

2 回答 2

1

meteor mongo --url应该返回 URL。

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

于 2014-10-26T10:48:25.650 回答
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以监听外部接口(例如远程连接)。
    • httpinterface=true如果要使用 http 接口,请取消注释。
    • 您可能需要通过 重新启动mongod主机sudo service mongod restart。如果您不能停机,那将是一个问题,但是如果您更改配置文件,我不知道有什么办法。
  • 创建用户:您需要创建一个管理员和/或用户来远程访问数据库。

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

也可能有一种方法可以通过在远程服务器上设置nginx反向代理来做到这一点127.0.0.1:27017,但我从来没有这样做过,这只是我的猜测。

于 2015-05-11T21:58:30.363 回答