我目前正在使用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。伙计们,这并不像我们在这里违反物理定律一样。从根本上说,应该有一种方法来访问它。仅仅因为没有人想出来并不意味着它是不可能的。
答案 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后必须要注意的主要事项:
port=27017
以确保您拥有默认端口(我不认为这实际上是必要的,但它让我感觉更好,知道在哪里更改默认端口...)。 bind_ip=127.0.0.1
以收听外部接口(例如远程连接)。httpinterface=true
。mongod
重新启动sudo service mongod restart
主机。如果您不能停机,那就是一个问题,但如果您更改配置文件,我不知道如何解决这个问题。完成所有这些后,您应该能够通过运行mongo
从本地计算机访问数据库(假设您在本地安装了
mongo server.url.com:27017/mup-app-name -u username -p
客户端)
其中server.url.com
是远程服务器的URL或IP地址,mup-app-name
是appName
文件中的mup.json
参数,username
是您创建的用户访问数据库,运行命令后会提示您输入该用户的密码(或者您可以将-p
放在同一行上,具体取决于密码)。
也可以通过在远程服务器上设置nginx
到反向代理127.0.0.1:27017
来实现此目的,但我从来没有这样做过,这只是我推测的。