如何让我的流星应用程序连接到 Meteor Up (mup) 中带有 MONGO_URL env 变量的数据库?
How can I get my meteor app to connect to a database with MONGO_URL env variable in Meteor Up (mup)?
我想要我的流星应用程序连接到远程数据库。我想我可以部署两个应用程序,一个在服务器上设置数据库,另一个托管应用程序但连接到另一台服务器上的数据库。我无法使其正常工作,但我也想知道是否推荐这样做?我应该在没有 mup/meteor 的服务器上设置 mongodb 数据库,还是可以使用 mup 为我设置它?
我尝试过但无法工作的:
我正在使用两个亚马逊 ec2 实例 (ubuntu 14.04)。我为这两个实例制定了以下安全入站规则:
Custom TCP Port: 27017 Source: instance-public-ip-1/32
Custom TCP Port: 27017 Source: instance-public-ip-2/32
HTTP Port: 80 Source: All Addresses
SSH Port: 22 Source: My IP
在尝试访问远程数据库的应用程序的 mup.json 文件中,我在 "env" 下添加了 "MONGO_URL": "mongodb://db-instance-public-ip:27017/db" 并且 db 是数据库的名称该实例上的应用程序。
托管数据库的 meteor 应用程序部署成功,但托管应用程序的 meteor 应用程序未成功部署。
在 "Invoking deployment process" 期间部署失败,这是 STDERR/STDOUT:(XXX.XXX.XXX.XXX 是实例的 public IP 地址)
x 调用部署过程:失败
-----------------------------------STDERR-----------------------------------
npm WARN package.json meteor-dev-bundle@0.0.0 No description
npm WARN package.json meteor-dev-bundle@0.0.0 No repository field.
npm WARN package.json meteor-dev-bundle@0.0.0 No README data
/usr/lib/node_modules/wait-for-mongo/bin/wait-for-mongo:14
throw err;
^
Error: TIMEOUTED_WAIT_FOR_MONGO
at null._onTimeout (/usr/lib/node_modules/wait-for-mongo/lib/waitForMongo.js:20:14)
at Timer.listOnTimeout [as ontimeout] (timers.js:112:15)
-----------------------------------STDOUT-----------------------------------
56.145:27017]
wait-for-mongo: failed to connect to [XXX.XXX.XXX.XXX:27017]
wait-for-mongo: failed to connect to [XXX.XXX.XXX.XXX:27017]
wait-for-mongo: failed to connect to [XXX.XXX.XXX.XXX:27017]
wait-for-mongo: failed to connect to [XXX.XXX.XXX.XXX:27017]
wait-for-mongo: failed to connect to [XXX.XXX.XXX.XXX:27017]
wait-for-mongo: failed to connect to [XXX.XXX.XXX.XXX:27017]
wait-for-mongo: failed to connect to [XXX.XXX.XXX.XXX:27017]
wait-for-mongo: failed to connect to [XXX.XXX.XXX.XXX:27017]
wait-for-mongo: failed to connect to [XXX.XXX.XXX.XXX:27017]
wait-for-mongo: failed to connect to [XXX.XXX.XXX.XXX:27017]
wait-for-mongo: failed to connect to [XXX.XXX.XXX.XXX:27017]
wait-for-mongo: failed to connect to [XXX.XXX.XXX.XXX:27017]
wait-for-mongo: failed to connect to [XXX.XXX.XXX.XXX:27017]
wait-for-mongo: failed to connect to [XXX.XXX.XXX.XXX:27017]
wait-for-mongo: failed to connect to [XXX.XXX.XXX.XXX:27017]
wait-for-mongo: failed to connect to [XXX.XXX.XXX.XXX:27017]
wait-for-mongo: failed to connect to [XXX.XXX.XXX.XXX:27017]
----------------------------------------------------------------------------
如果需要更多信息,请告诉我。问题也发布在这里:https://github.com/arunoda/meteor-up/issues/450
编辑: 我让 mongodb 监听所有接口,但这是一个安全风险。
默认情况下,当部署的流星创建数据库时,mongodb 配置设置为仅侦听 127.0.0.1 上的连接(它是 mongodb 中的 bind_ip 选项).更改此设置以同时监听 127.0.0.1 和实例的私有 ip 已解决问题,现在它已成功部署和使用远程数据库。 不要注释掉 bind_ip 选项,因为它允许任何人连接到您的数据库。 良好的安全规则仍然会阻止人们连接,但最好遵循 "principle of least privilege" 在 mongodb 配置中。
要更改此设置,请使用数据库编辑实例上的 /etc/mongod.conf
文件。在 bind_ip = 127.0.0.1
.
行添加托管数据库实例的私有 ip
编辑后/etc/mongod.conf
的第17-18行(XXX.XXX.XXX.XXX是数据库实例的私有IP地址):
# Listen to local interface only. Comment out to listen on all interfaces.
bind_ip = 127.0.0.1,XXX.XXX.XXX.XXX
有关 mongo 配置文件的更多信息可在此处找到:http://docs.mongodb.org/manual/reference/configuration-options/
我通过 运行 db.serverCmdLineOpts()
在 mongo shell 中找到了这个文件,感谢 Adam Comerford 对这个问题的回答:how can I see what ports mongo is listening on from mongo shell?。
我想要我的流星应用程序连接到远程数据库。我想我可以部署两个应用程序,一个在服务器上设置数据库,另一个托管应用程序但连接到另一台服务器上的数据库。我无法使其正常工作,但我也想知道是否推荐这样做?我应该在没有 mup/meteor 的服务器上设置 mongodb 数据库,还是可以使用 mup 为我设置它?
我尝试过但无法工作的:
我正在使用两个亚马逊 ec2 实例 (ubuntu 14.04)。我为这两个实例制定了以下安全入站规则:
Custom TCP Port: 27017 Source: instance-public-ip-1/32
Custom TCP Port: 27017 Source: instance-public-ip-2/32
HTTP Port: 80 Source: All Addresses
SSH Port: 22 Source: My IP
在尝试访问远程数据库的应用程序的 mup.json 文件中,我在 "env" 下添加了 "MONGO_URL": "mongodb://db-instance-public-ip:27017/db" 并且 db 是数据库的名称该实例上的应用程序。
托管数据库的 meteor 应用程序部署成功,但托管应用程序的 meteor 应用程序未成功部署。 在 "Invoking deployment process" 期间部署失败,这是 STDERR/STDOUT:(XXX.XXX.XXX.XXX 是实例的 public IP 地址)
x 调用部署过程:失败
-----------------------------------STDERR-----------------------------------
npm WARN package.json meteor-dev-bundle@0.0.0 No description
npm WARN package.json meteor-dev-bundle@0.0.0 No repository field.
npm WARN package.json meteor-dev-bundle@0.0.0 No README data
/usr/lib/node_modules/wait-for-mongo/bin/wait-for-mongo:14
throw err;
^
Error: TIMEOUTED_WAIT_FOR_MONGO
at null._onTimeout (/usr/lib/node_modules/wait-for-mongo/lib/waitForMongo.js:20:14)
at Timer.listOnTimeout [as ontimeout] (timers.js:112:15)
-----------------------------------STDOUT-----------------------------------
56.145:27017]
wait-for-mongo: failed to connect to [XXX.XXX.XXX.XXX:27017]
wait-for-mongo: failed to connect to [XXX.XXX.XXX.XXX:27017]
wait-for-mongo: failed to connect to [XXX.XXX.XXX.XXX:27017]
wait-for-mongo: failed to connect to [XXX.XXX.XXX.XXX:27017]
wait-for-mongo: failed to connect to [XXX.XXX.XXX.XXX:27017]
wait-for-mongo: failed to connect to [XXX.XXX.XXX.XXX:27017]
wait-for-mongo: failed to connect to [XXX.XXX.XXX.XXX:27017]
wait-for-mongo: failed to connect to [XXX.XXX.XXX.XXX:27017]
wait-for-mongo: failed to connect to [XXX.XXX.XXX.XXX:27017]
wait-for-mongo: failed to connect to [XXX.XXX.XXX.XXX:27017]
wait-for-mongo: failed to connect to [XXX.XXX.XXX.XXX:27017]
wait-for-mongo: failed to connect to [XXX.XXX.XXX.XXX:27017]
wait-for-mongo: failed to connect to [XXX.XXX.XXX.XXX:27017]
wait-for-mongo: failed to connect to [XXX.XXX.XXX.XXX:27017]
wait-for-mongo: failed to connect to [XXX.XXX.XXX.XXX:27017]
wait-for-mongo: failed to connect to [XXX.XXX.XXX.XXX:27017]
wait-for-mongo: failed to connect to [XXX.XXX.XXX.XXX:27017]
----------------------------------------------------------------------------
如果需要更多信息,请告诉我。问题也发布在这里:https://github.com/arunoda/meteor-up/issues/450
编辑: 我让 mongodb 监听所有接口,但这是一个安全风险。
默认情况下,当部署的流星创建数据库时,mongodb 配置设置为仅侦听 127.0.0.1 上的连接(它是 mongodb 中的 bind_ip 选项).更改此设置以同时监听 127.0.0.1 和实例的私有 ip 已解决问题,现在它已成功部署和使用远程数据库。 不要注释掉 bind_ip 选项,因为它允许任何人连接到您的数据库。 良好的安全规则仍然会阻止人们连接,但最好遵循 "principle of least privilege" 在 mongodb 配置中。
要更改此设置,请使用数据库编辑实例上的 /etc/mongod.conf
文件。在 bind_ip = 127.0.0.1
.
编辑后/etc/mongod.conf
的第17-18行(XXX.XXX.XXX.XXX是数据库实例的私有IP地址):
# Listen to local interface only. Comment out to listen on all interfaces.
bind_ip = 127.0.0.1,XXX.XXX.XXX.XXX
有关 mongo 配置文件的更多信息可在此处找到:http://docs.mongodb.org/manual/reference/configuration-options/
我通过 运行 db.serverCmdLineOpts()
在 mongo shell 中找到了这个文件,感谢 Adam Comerford 对这个问题的回答:how can I see what ports mongo is listening on from mongo shell?。