基本上我有一个 mongodb 实例在 ec2 上运行和工作。另一方面,我有一个使用 mongoid 作为 orm 在本地工作的 rails 3.2 应用程序。我接下来要做的是尝试使用 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 但只是想确认)
我一直在查看文档和教程列表:
- http://mongoid.org/docs/installation/configuration.html
- http://www.mongodb.org/display/DOCS/Security+and+Authentication#SecurityandAuthentication-AbouttheKeyFile
- 生产中的 MongoDB 和 Mongoid - 看起来像我正在寻找的东西,但不确定,是否会尝试。
- http://craiccomputing.blogspot.com/2011/02/authentication-in-mongo-and-mongoid.html
感谢这里任何人的任何建议。