ruby-on-rails - 尝试使用 mongoid 作为 orm in rails 连接到 ec2 上的 mongodb 实例

标签 ruby-on-rails mongodb amazon-ec2 mongoid

基本上我有一个在 ec2 上运行和工作的 mongodb 实例。在一边,我有一个 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 实例,所以我注释掉了 mongoid.yml 默认值并添加了以下内容:

development:
 host: <public dns of the mongodb instance>
 port: 27017
 # username: 
 # password: 
 database: <I ssh into the instance and created a database>

我注释掉了用户名和密码,部分原因是我不确定该放什么,部分原因是当我检查 ec2 上的 mongod.conf 文件时,我看到默认情况下 :auth 是 false,所以我假设身份验证不是必需的。所以我运行 rails console 并得到以下错误:

Failed to connect to a master node at <public dns of the mongodb instance>:27017 (Mongo::ConnectionFailure)
from /Users/Kinglee/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/gems/mongo-1.6.2/lib/mongo/connection.rb:589:in `setup'
from /Users/Kinglee/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/gems/mongo-1.6.2/lib/mongo/connection.rb:114:in `initialize'
from /Users/Kinglee/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/gems/mongo-1.6.2/lib/mongo/connection.rb:165:in `new'
from /Users/Kinglee/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/gems/mongo-1.6.2/lib/mongo/connection.rb:165:in `from_uri'
from /Users/Kinglee/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/gems/mongoid-2.4.10/lib/mongoid/config/database.rb:86:in `master'
from /Users/Kinglee/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/gems/mongoid-2.4.10/lib/mongoid/config/database.rb:19:in `configure'
from /Users/Kinglee/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/gems/mongoid-2.4.10/lib/mongoid/config.rb:290:in `configure_databases'
....

此时,我有点困惑。我一直在问自己,我需要用户名和密码才能连接到 mongodb 吗?我有 80% 的把握确定我需要它们,但我不确定在哪里可以找到它们,或者不确定我要连接到什么,mongodb ec2 实例或 mongodb 数据库。我应该怎么做呢?我应该在实例上打开端口 27017 和 28017 吗?我是否需要将配置添加到 database.yml(我非常怀疑我是否需要这样做,因为已经有 mongoid.yml 但只是想确认一下)

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

感谢这里任何人的任何建议。

最佳答案

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

的设置
bind_ip = 127.0.0.1

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

bind_ip = 0.0.0.0

并且有效。但是谢谢大家的建议。

关于ruby-on-rails - 尝试使用 mongoid 作为 orm in rails 连接到 ec2 上的 mongodb 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10643727/

相关文章:

ruby-on-rails - 如何修复部署 AWS eb 的 "Your Ruby version is 2.5.3, but your Gemfile specified 2.5.1"?

ruby-on-rails - Rails 3 和 RJS

ruby-on-rails - 如何在 RSpec 上包含 Rails Helpers

ruby-on-rails - 如何在 appengine 上迁移 Datamapper

java - spring data mongodb 无法在没有设置 id 的情况下对子对象执行级联保存

wordpress - AWS Auto Scaling 组和 EFS

javascript - Rails 3.1 中的第三方脚本缓存

javascript - 如何将数据(整个数据库)从 meteor 部署应用程序导出到具有不同地址的另一个 meteor 应用程序?

node.js - MongoDB Atlas 和 Node JS - 架构布局

amazon-web-services - 我可以通过 AutoScaling 在安静时段将实例计数减少到零吗?