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

Posted

技术标签:

【中文标题】使用 Capistrano 将 Ruby on Rails 应用程序部署到 Windows Azure VM 时出现超时错误【英文标题】:Timeout Error when deploying Ruby on Rails app with Capistrano to Windows Azure VM 【发布时间】:2013-03-15 08:27:47 【问题描述】:

我是 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 配置文件,但一直收到同样的错误。另外,当我将VM DNS“fb-shanghai.cloudapp.net”的:web角色更改为公共VIP并运行cap deploy时,我收到提示输入密码但无论我输入什么都失败了.

此时,我真的不知道我需要做什么才能在我的 Azure VM 上运行我的 RoR 应用程序。任何帮助将不胜感激!

我的环境:

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

【问题讨论】:

【参考方案1】:

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

我还应该提到,我使用 VM depot 中的 Bitnami ruby​​stack 来安装我的 VM。

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

【讨论】:

如果从命令行部署 VM Depot 映像,您可以使用 -ssh 开关定义 SSH 端口,例如“-ssh 22” 您运行的是哪个版本的 capistrano?我在使用 3.x 时遇到了各种各样的问题,我在使用 2.6.0 时遇到了一些问题,但仍然出现 -sh 错误......【参考方案2】:

原来我需要为服务器配置行指定 VIP:

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

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

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

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

【讨论】:

我也用 IP 地址xxx.xx.xxx.xxx 替换了name_of_app.cloudapp.net,它开始工作了。

以上是关于使用 Capistrano 将 Ruby on Rails 应用程序部署到 Windows Azure VM 时出现超时错误的主要内容,如果未能解决你的问题,请参考以下文章

/usr/bin/env ruby​​ 没有这样的文件或目录:使用 capistrano 3、capistrano/rbenv、capistrano/bundler 和 capistrano/rail

如何配置 capistrano 以使用我的 rvm 版本的 Ruby

Capistrano在升级ruby版本和puma时重启错误版本的puma

ruby 使用Capistrano 3和rsync进行本地Rails 4资产预编译

ruby Capistrano部署策略支持git子模块(需要Capistrano v3.1.0或更高版本)

ruby Capistrano任务查看日志