2013-05-07 79 views
2

我有一个包含两个节点的Web服务器集群。他们使用相同的文件服务器来托管文件。由于文件是共享的,我只需要到达其中一台服务器就可以进行部署,但是我想清除它们两者上的APC缓存。有没有办法让我告诉Capifony不要部署到第二台服务器,只需运行“symfony:clear_apc”?Capifony部署到服务器X,清除服务器X和Y上的APC缓存

我deploy.rb,因为它目前为:

set :application, "app.domain.net" 
set :domain,  "#{application}" 
set :deploy_to, "/hosting_files/#{application}" 
set :app_path, "app" 
set :web_path, "web" 

set :repository, "[email protected]:company/#{application}.git" 
set :scm,   :git 
set :deploy_via, :remote_cache 

set :model_manager, "doctrine" 

role :web,  "X.domain.com" 
role :app,  "X.domain.com" 
role :db,   "X.domain.com", :primary => true 

set :keep_releases, 10 
set :shared_files,  ["app/config/parameters.yml"] 
set :shared_children, [app_path + "/logs", web_path + "/uploads", "vendor"] 
set :permission_method, :acl 
set :use_composer,  true 

set :interactive_mode, false 
set :branch, `git tag`.split("\n").last 

set :user, "applicationUser" 
set :use_sudo, false 
ssh_options[:forward_agent] = true 
ssh_options[:keys] = [File.join(ENV["HOME"], ".ssh", "id_rsa")] 

"symfony:cache:warmup" 

logger.level = Logger::MAX_LEVEL 

namespace :symfony do 
    desc "Clear apc cache" 
    task :clear_apc do 
    capifony_pretty_print "--> Clear apc cache" 
    run "php #{deploy_to}/current/app/console apc:clear" 
    capifony_puts_ok 
    end 
end 

after "deploy", "symfony:clear_apc" 

回答

2

您应该使用多级延伸,为您的节点的配置访问参数:http://capifony.org/cookbook/using-the-multistage-extension.html

创建部署配置节点1和节点。您将能够将文件部署到任何节点。更好的是,集合中的节点作为默认阶段中的一个与

set :default_stage "node1" 

之后,你将能够在每个服务器执行的symfony命令分别由帽命令之后加入阶段(节点)名称:

cap node2 symfony:clear_apc