基本上我有一個mongodb實例運行和工作在ec2上。在一邊我有一個rails 3.2應用程序與mongoid作爲orm在本地工作。接下來我要做的就是嘗試使用mongoid將我的rails應用程序連接到mongodb實例。此外,有意主辦Dotcloud我的Rails應用程序後試圖連接到ec2與mongoid作爲orm在軌道上的mongodb實例
冉代碼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/[email protected]/gems/mongo-1.6.2/lib/mongo/connection.rb:589:in `setup'
from /Users/Kinglee/.rvm/gems/[email protected]/gems/mongo-1.6.2/lib/mongo/connection.rb:114:in `initialize'
from /Users/Kinglee/.rvm/gems/[email protected]/gems/mongo-1.6.2/lib/mongo/connection.rb:165:in `new'
from /Users/Kinglee/.rvm/gems/[email protected]/gems/mongo-1.6.2/lib/mongo/connection.rb:165:in `from_uri'
from /Users/Kinglee/.rvm/gems/[email protected]/gems/mongoid-2.4.10/lib/mongoid/config/database.rb:86:in `master'
from /Users/Kinglee/.rvm/gems/[email protected]/gems/mongoid-2.4.10/lib/mongoid/config/database.rb:19:in `configure'
from /Users/Kinglee/.rvm/gems/[email protected]/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 and Mongoid in production - 看起來像什麼,我尋找,但沒有把握,去試試吧。
- http://craiccomputing.blogspot.com/2011/02/authentication-in-mongo-and-mongoid.html
任何人欣賞任何意見在這裏。
您是否打開了EC2實例的相關安全組中的端口27017? – jhonkola
是的。我做到了。我還修改了mongodb.conf文件並取消註釋'port = 27017'(最初默認註釋掉)。試圖運行rails控制檯,但仍然有相同的連接失敗錯誤。 –