我剛剛按照「部署Rails」一書的方式工作,im卡住了capaistrano調用db:migrate的地方。Vagrant,VirtualBox,Capistrano,db:migrate - 無法連接到服務器
我建立了兩個虛擬機 - app und db - 他們每個人都完全獨立工作。 虛擬機應用程序主機在nginx/unicorn中,VM數據庫ist託管PostgreSQL。 我可以在虛擬機中「流浪ssh」,每件事情都很好。
這是我與定義的兩個虛擬機(我使用的是流浪版本1.0.3)流浪文件:
Vagrant::Config.run do |config|
config.vm.define :app do |app_config|
app_config.vm.customize ["modifyvm", :id, "--name", "app", "--memory", "512"]
app_config.vm.box = "lucid64_rb193_pp2719"
app_config.vm.host_name = "app"
app_config.vm.forward_port 22, 2200, :auto => true
app_config.vm.forward_port 80, 8080
app_config.vm.network :hostonly, "33.33.13.37"
app_config.vm.share_folder "puppet", "/etc/puppet", "../log4job_ops"
end
config.vm.define :db do |db_config|
db_config.vm.customize ["modifyvm", :id, "--name", "db", "--memory", "512"]
db_config.vm.box = "lucid64_rb193_pp2719"
db_config.vm.host_name = "db"
db_config.vm.forward_port 22, 2201, :auto => true
db_config.vm.forward_port 5432, 5432
db_config.vm.network :hostonly, "33.33.13.38"
db_config.vm.share_folder "puppet", "/etc/puppet", "../log4job_ops"
end
end
正如你所看到的,發送到8080端口的數據轉發到端口80上的tghe應用程序虛擬機,這工作得很好。
由於PostgreSQL偵聽端口5432,我設置了端口轉發4532(主機) - > 4532(VM)。
然而,運行的是 「上限部署:冷」 時或 「帽部署:遷移」 它收到此錯誤信息(帽部署:遷移):
* executing `deploy:migrate'
* executing "ls -x /var/log4job/releases"
servers: ["localhost"]
[localhost] executing command
command finished in 37ms
* executing "cd /var/log4job/releases/20120905140228 && bundle exec rake RAILS_ENV=production db:migrate"
servers: ["localhost"]
[localhost] executing command
*** [err :: localhost] rake aborted!
*** [err :: localhost] could not connect to server: Connection refused
*** [err :: localhost] Is the server running on host "localhost" and accepting
*** [err :: localhost] TCP/IP connections on port 5432?
*** [err :: localhost] could not connect to server: Connection refused
*** [err :: localhost] Is the server running on host "localhost" and accepting
*** [err :: localhost] TCP/IP connections on port 5432?
*** [err :: localhost]
*** [err :: localhost] Tasks: TOP => db:migrate => environment
*** [err :: localhost] (See full trace by running task with --trace)
command finished in 4128ms
failed: "sh -c 'cd /var/log4job/releases/20120905140228 && bundle exec rake RAILS_ENV=production db:migrate'" on localhost
問題:
我究竟做錯了什麼?
在虛擬機「app」上運行「rake db:migrate」命令。 我假設,因爲項目源代碼被部署到/ var/log4job/releases/20120905140228
如果我在上面nr 2的假設是正確的,那麼它也不奇怪它沒有工作。 PostgreSQL在虛擬機「db」上運行。但你怎麼設置這種類型的服務呢? 我配置database.yml中的數據庫連接是否有錯誤。
這是database.yml中生產的部分:
production:
adapter: postgresql
template: template0
username: log4jobuid
password: log4jobpwd
database: wl_prod
host: localhost
encoding: unicode
port: 5432
舒爾。它說它應該聽取「本地主機」;-)但我如何配置它,連接到其他虛擬機(「數據庫」VM)?
歡迎任何提示! 謝謝!