使用capistrano登台和实时应用程序

时间:2012-05-21 04:17:53

标签: ruby-on-rails passenger capistrano staging

我认为我会做一个简单但可能非常有用的事情,并创建另一个名为live的符号链接,它指向一个任意版本,并保持当前通常位于的头部:

20120519235508 
20120521004833 
20120521024312 <-- live
20120521025150 
20120521030449 <-- current 

然后我配置了www.mysite.com来点击

live/public 

和stage.mysite.com点击

current/public

不幸的是,两个主机似乎运行相同的应用程序,而不是2个不同的应用程序。我已经确认httpd.conf具有正确的设置并重新启动它。但是没有变化,他们仍然运行相同的应用程序,当前/公共引用的应用程序是准确的。

我不知道我是否设置错误,或者是否需要重启其他东西,或者这根本无法按照我的想象工作。我正在使用乘客。

有人可以对这个问题有所了解,因为对于许多项目来说,这种配置对我来说非常有用。

1 个答案:

答案 0 :(得分:12)

我建议使用多级扩展,而不是在releases目录中创建其他符号链接。使用此扩展,您可以定义不同的阶段并为其添加自定义配置。因此,不要将一个部署目录用于分段和生产,而是为彼此使用单独的一个。

将这些行添加到deploy.rb:

require "capistrano/ext/multistage"

set :stages, ["staging", "production"]
set :default_stage, "staging"

从deploy.rb中删除deploy_to变量。然后在config中创建一个deploy目录,其中包含具有阶段名称的文件。在这种情况下:deploy / staging.rb和deploy / production.rb。 staging.rb的内容:

set :rails_env, "staging"
set :deploy_to, "staging/capistrano"

同样适用于production.rb:

set :rails_env, "production"
set :deploy_to, "production/capistrano"

当然更改deploy_to中的路径。然后将staging.example.com指向staging/capistrano/current/public,将www.example.com指向production/capistrano/current/public

要执行分段部署,请执行cap staging deploy或简单cap deploy(请记住,staging在deploy.rb中设置为默认值)并cap production deploy部署到生产阶段。