pix*_*rth 5 capistrano ruby-on-rails passenger staging
我以为我会做一个简单但可能非常有用的事情,并创建另一个名为live的符号链接,它指向一个任意版本,并保持当前通常位于的头部:
20120519235508
20120521004833
20120521024312 <-- live
20120521025150
20120521030449 <-- current
Run Code Online (Sandbox Code Playgroud)
然后我配置了www.mysite.com来点击
live/public
Run Code Online (Sandbox Code Playgroud)
和stage.mysite.com一起来
current/public
Run Code Online (Sandbox Code Playgroud)
不幸的是,两个主机似乎运行相同的应用程序,而不是2个不同的应用程 我已经确认httpd.conf具有正确的设置并重新启动它.但是没有变化,他们仍然运行相同的应用程序,当前/公共引用的应用程序是准确的.
我不知道我是否有设置错误,或者是否需要重新启动其他东西,或者这根本无法按照我的想象工作.我正在使用乘客.
有人可以对这个问题有所了解,因为对于许多项目来说,这种配置对我来说非常有用.
Ger*_*osi 12
我建议使用多级扩展,而不是在releases目录中创建其他符号链接.使用此扩展,您可以定义不同的阶段并为其添加自定义配置.因此,不要将一个部署目录用于登台和生产,而是为彼此使用单独的部署目录.
将这些行添加到deploy.rb:
require "capistrano/ext/multistage"
set :stages, ["staging", "production"]
set :default_stage, "staging"
Run Code Online (Sandbox Code Playgroud)
从deploy.rb中删除deploy_to变量.然后在config中创建一个deploy目录,其中包含具有阶段名称的文件.在这种情况下:deploy/staging.rb和deploy/production.rb.staging.rb的内容:
set :rails_env, "staging"
set :deploy_to, "staging/capistrano"
Run Code Online (Sandbox Code Playgroud)
同样适用于production.rb:
set :rails_env, "production"
set :deploy_to, "production/capistrano"
Run Code Online (Sandbox Code Playgroud)
当然,更改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部署到生产环境.
| 归档时间: |
|
| 查看次数: |
2059 次 |
| 最近记录: |