使用Capistrano将Ruby on Rails应用程序部署到Windows Azure VM时出现超时错误

时间:2013-03-25 18:16:37

标签: ruby-on-rails-3 deployment azure capistrano azure-virtual-machine

我是Capistrano以及Windows Azure的新用户,并且无法将我的Ruby on Rails应用程序部署到我的Azure虚拟机。我可以使用SSH登录并连接到VM。此外,我在连接到VM时成功创建了一个新的Rails应用程序(能够通过VM的DNS访问它)。但是,我不知道如何从VM服务器获取Rails代码,以便我可以在本地编辑它,然后将更改推送回服务器。

无论如何,我在本地创建了一个简单的Rails应用程序,并希望将它(使用Capistrano)部署到我的Azure VM。运行cap deploy(和cap deploy:setup)时出现以下错误:

connection failed for: fb-shanghai.cloudapp.net (Errno::ETIMEDOUT: Operation timed out - connect(2))

我一直在使用deploy.rb配置文件,但不断收到相同的错误。此外,当我将:web角色从VM DNS“fb-shanghai.cloudapp.net”更改为公共VIP并运行cap deploy时,我收到输入密码的提示,但无论我是什么输入,它失败了。

此时我真的迷失了为了在Azure VM上运行我的RoR应用程序所需要做的事情。非常感谢任何帮助!

我的环境:

  • Mac OS X 10.7.5
  • Ruby 1.9.3
  • Rails 3.2.9
  • 为我的VM使用Ruby-Stack-1-9-3-6-Ubuntu-12-10映像

2 个答案:

答案 0 :(得分:2)

我遇到了同样的问题,但我仍然无法使用IP而不是name_of_app.cloudapp.net。我花了一段时间才弄明白,但出于某种原因,当我创建VM时,Azure创建了一个随机端口号(而不是22)的默认公共端口,因此我将其编辑为22并且它有效。

我还应该提一下,我使用VM仓库中的Bitnami ruby​​stack来安装我的VM。

就deploy.rb文件而言,我使用了上面发布的教程中的gist文件。

答案 1 :(得分:1)

结果我需要为服务器配置行指定VIP:

所以server "xxx.xx.xxx.xxx", :web, :app, :db, primary: true

而不是server "name_of_app.cloudapp.net", :web, :app, :db, primary: true

然后,我需要在require "bundler/capistrano"文件的顶部添加deploy.rb

最后,我遵循了Capistrano wiki以及Ruby on Rails on Windows Azure tutorial中的一些说明。