Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 尝试使用mongoid作为rails中的orm连接到ec2上的mongodb实例_Ruby On Rails_Mongodb_Amazon Ec2_Mongoid - Fatal编程技术网

Ruby on rails 尝试使用mongoid作为rails中的orm连接到ec2上的mongodb实例

Ruby on rails 尝试使用mongoid作为rails中的orm连接到ec2上的mongodb实例,ruby-on-rails,mongodb,amazon-ec2,mongoid,Ruby On Rails,Mongodb,Amazon Ec2,Mongoid,基本上我有一个mongodb实例在ec2上运行和工作。另一方面,我有一个rails 3.2应用程序,mongoid作为orm在本地运行。接下来我要做的是尝试使用mongoid将我的rails应用程序连接到mongodb实例。另外,打算稍后在Dotcloud上托管我的rails应用程序 运行代码rails g mongoid:config生成包含以下代码的mongoid.yml文件: development: host: localhost database: mongotest_develo

基本上我有一个mongodb实例在ec2上运行和工作。另一方面,我有一个rails 3.2应用程序,mongoid作为orm在本地运行。接下来我要做的是尝试使用mongoid将我的rails应用程序连接到mongodb实例。另外,打算稍后在Dotcloud上托管我的rails应用程序

运行代码
rails g mongoid:config
生成包含以下代码的mongoid.yml文件:

development:
 host: localhost
 database: mongotest_development

test:
 host: localhost
 database: mongotest_test

set these environment variables on your prod server
production:
 host: <%= ENV['MONGOID_HOST'] %>
 port: <%= ENV['MONGOID_PORT'] %>
 username: <%= ENV['MONGOID_USERNAME'] %>
 password: <%= ENV['MONGOID_PASSWORD'] %>
 database: <%= ENV['MONGOID_DATABASE'] %>
 # slaves:
 #   - host: slave1.local
 #     port: 27018
 #   - host: slave2.local
 #     port: 27019
在这一点上,我有点困惑。我一直在问自己,连接mongodb需要用户名和密码吗?我有80%的把握我需要它们,但我不确定在哪里可以找到它们,或者更确切地说不确定我连接到什么,mongodb ec2实例或mongodb数据库。我该怎么做呢?我应该在实例上打开端口27017和28017吗?我是否需要向database.yml添加配置(我非常怀疑我是否需要,因为已经有mongoid.yml了,但我只想确认一下)

我一直在看一系列文档和教程:

  • -看起来像我要找的,但不确定,要试试看

感谢这里任何人的建议

很可能是防火墙问题。检查ec2实例的安全组是否打开了默认mongodb端口27017

如果您以前没有做过类似的工作,本文将向您介绍它的工作原理:


Ok终于找到了问题。在mongodb.conf文件中,有一个名为

bind_ip = 127.0.0.1
我没有注意到这一点,这意味着服务器只能在本地访问,不能在外部访问,因此出现了连接失败错误。一个快速解决方法是将其更改为

bind_ip = 0.0.0.0

它是有效的。但是谢谢大家的建议。

您是否已为EC2实例打开了相关安全组中的27017端口?是的。是的。我还修改了mongodb.conf文件,并取消了“port=27017”的注释(默认情况下最初注释掉)。尝试运行rails控制台,但仍然出现相同的连接失败错误。很好的发现!对我来说非常有效。
bind_ip = 127.0.0.1
bind_ip = 0.0.0.0