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