我是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应用程序所需要做的事情。非常感谢任何帮助!
我的环境:
答案 0 :(得分:2)
我遇到了同样的问题,但我仍然无法使用IP而不是name_of_app.cloudapp.net。我花了一段时间才弄明白,但出于某种原因,当我创建VM时,Azure创建了一个随机端口号(而不是22)的默认公共端口,因此我将其编辑为22并且它有效。
我还应该提一下,我使用VM仓库中的Bitnami rubystack来安装我的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中的一些说明。