5

我想我会做一个简单但可能非常有用的事情,并创建另一个名为 live 的符号链接,它指向任意版本,并将 current 留在它通常所在的位置:

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

然后我将 www.mysite.com 配置为点击

live/public 

和 stage.mysite.com 命中

current/public

不幸的是,两个主机似乎都运行同一个应用程序,而不是两个不同的应用程序。我已经确认 httpd.conf 具有正确的设置并重新启动它。但是没有变化,它们都仍在运行同一个应用程序,确切地说是 current/public 引用的应用程序。

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

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

4

1 回答 1

12

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

将这些行添加到 deploy.rb:

require "capistrano/ext/multistage"

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

从 deploy.rb 中删除 deploy_to 变量。然后在 config 中创建一个部署目录,其中包含带有阶段名称的文件。在这种情况下: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(请记住,分段在 deploy.rb 中设置为默认值)并cap production deploy部署到生产环境。

于 2012-05-21T09:21:45.037 回答