与capistrano一起上演和现场应用

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

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

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

 live/public 

和stage.mysite.com一起来

 current/public 

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

我不知道我是否设置错误,或者是否需要重新启动其他东西,或者这根本不能像我想象的那样工作。 我正在使用乘客。

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

我建议使用多级扩展,而不是在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中设置为default)和cap production deploy以部署到生产。