Ruby on rails Vagrant、VirtualBox、Capistrano、db:migrate-无法连接到服务器

Ruby on rails Vagrant、VirtualBox、Capistrano、db:migrate-无法连接到服务器,ruby-on-rails,capistrano,vagrant,dbmigrate,Ruby On Rails,Capistrano,Vagrant,Dbmigrate,我刚刚读完了《部署Rails》一书,我被卡在capaistrano调用db:migrate的地方 我已经建立了两个虚拟机-应用程序和数据库-他们每个单独的工作性能。 虚拟机应用程序位于nginx/unicorn主机上,虚拟机数据库位于PostgreSQL主机上。 我可以“流浪ssh”进入虚拟机,一切看起来都很好 这是我定义了两个虚拟机的Vagrant文件(我使用的是Vagrant版本1.0.3): 正如您所看到的,发送到端口8080的数据被转发到端口80,这是一个tghe应用程序虚拟机,工作非常

我刚刚读完了《部署Rails》一书,我被卡在capaistrano调用db:migrate的地方

我已经建立了两个虚拟机-应用程序和数据库-他们每个单独的工作性能。 虚拟机应用程序位于nginx/unicorn主机上,虚拟机数据库位于PostgreSQL主机上。 我可以“流浪ssh”进入虚拟机,一切看起来都很好

这是我定义了两个虚拟机的Vagrant文件(我使用的是Vagrant版本1.0.3):

正如您所看到的,发送到端口8080的数据被转发到端口80,这是一个tghe应用程序虚拟机,工作非常好

当PostgreSQL侦听端口5432时,我将端口转发设置为4532(主机)->4532(虚拟机)

但是,当运行“cap deploy:cold”或“cap deploy:migrate”时,会收到以下错误消息(cap deploy:migrate):

问题:

  • 我做错了什么

  • 是在VM“app”上运行的“rake db:migrate”命令。 我假设,当项目源代码部署到/var/log4job/releases/20120905140228时

  • 如果我在上文第2条的假设是正确的,难怪它不起作用。PostgreSQL正在VM“db”上运行。但是你到底是如何设置upp这种服务的呢? 我是否在database.yml中配置了错误的数据库连接

  • 这是database.yml的生产部分:

    production:
      adapter: postgresql
      template: template0
      username: log4jobuid
      password: log4jobpwd
      database: wl_prod
      host: localhost
      encoding: unicode
      port: 5432
    
    舒尔。它说它应该听“localhost”;-)但是如何配置它,以连接到另一个VM(“db”VM)

    欢迎任何提示! 谢谢

    好的,我明白了

    找到答案的最好方法是写下问题;-)

    我所犯的错误都在database.yml中

    应该是这样的:

    production:
      adapter: postgresql
      template: template0
      username: log4jobuid
      password: log4jobpwd
      database: wl_prod
      host: 33.33.13.38
      encoding: unicode
      port: 5432
    
    “主机:”的IP地址应为DB VM的Vagrant文件中规定的IP地址:

    db_config.vm.network :hostonly, "33.33.13.38"
    
    现在我们知道,您可以使用虚拟机的IP地址从一个虚拟机“应用程序”连接到另一个虚拟机“db”

    您还应该让舒尔为数据库指定正确的数据库名称、用户和密码。在我的例子中,我让puppet创建db,因此我在两侧使用相同的设置(现在;-)

    production:
      adapter: postgresql
      template: template0
      username: log4jobuid
      password: log4jobpwd
      database: wl_prod
      host: 33.33.13.38
      encoding: unicode
      port: 5432
    
    db_config.vm.network :hostonly, "33.33.13.38"