我认为我会做一个简单但可能非常有用的事情,并创建另一个名为live的符号链接,它指向一个任意版本,并保持当前通常位于的头部:
20120519235508
20120521004833
20120521024312 <-- live
20120521025150
20120521030449 <-- current
然后我配置了www.mysite.com来点击
live/public
和stage.mysite.com点击
current/public
不幸的是,两个主机似乎运行相同的应用程序,而不是2个不同的应用程序。我已经确认httpd.conf具有正确的设置并重新启动它。但是没有变化,他们仍然运行相同的应用程序,当前/公共引用的应用程序是准确的。
我不知道我是否设置错误,或者是否需要重启其他东西,或者这根本无法按照我的想象工作。我正在使用乘客。
有人可以对这个问题有所了解,因为对于许多项目来说,这种配置对我来说非常有用。
答案 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
部署到生产阶段。