2015-04-17 105 views
0

首先,很新的Capistrano的,所以請原諒我newbness。Capistrano的:覆蓋shared_dir變量

我部署一個笨的應用程序,我有生活,我試圖建立符號鏈接到當前web目錄之外的數據文件夾。這是我用來創建符號鏈接

set :shared_dir, %w(/var/www/website/) 
set :linked_dirs, %w{43b621acdfc9523443f27b7767e} 

這是部署的應用程序的結果

43b621acdfc9523443f27b7767e -> /var/www/website/shared/43b621acdfc9523443f27b7767e 

我的目標是覆蓋shared_dir變量產生的

/var/www/website/43b621acdfc9523443f27b7767e 
一個符號鏈接

我使用Capistrano的3.任何瞭解不勝感激。 謝謝

回答

0

您可以創建一個特定的任務,負責創建和更新每個部署中應用程序中任何位置到系統中任何位置的符號鏈接。例如:

namespace :terminal do 
    task :link_external_dir, :except => { :no_release => true } do 
    capifony_pretty_print '--> Generating soft link with external_example_dir' 
    run "sharedWebDir=#{shared_path}/web; cd $sharedWebDir; if [ -d $sharedWebDir/internal_example_dir -o -f $sharedWebDir/internal_example_dir ]; then rm -rf $sharedWebDir/internal_example_dir; fi; if [ ! -L $sharedWebDir/internal_example_dir ]; then ln -s /srv/example/vhost/external_example_dir $sharedWebDir/internal_example_dir; fi;" 
    capifony_puts_ok 
    end 
    task :rm_shared_example_dir, :except => { :no_release => true } do 
    capifony_pretty_print '--> Removing sharedDir/internal_example_dir symlink' 
    run "sharedWebDir=#{shared_path}/internal_example_dir; if [ -L $sharedWebDir/internal_example_dir ]; then rm $sharedWebDir/internal_example_dir; fi;" 
    capifony_puts_ok 
    end 
end 

現在呼籲每個功能上的每個部署:

before "deploy", "terminal:rm_shared_example_dir" 
after "deploy", "deploy:cleanup" 
after "deploy", "terminal:link_external_dir" 

我們正在努力做到的是:

1.Before部署,從你的主要sharedDir刪除文件鏈接到您的外部目錄。

REMOVE 
/var/www/website/shared/externalDir -> /srv/example/vhost/external_example_dir 

2.部署您的應用程序。

3.Generate再次自定義符號鏈接。

ln -s /srv/example/vhost/external_example_dir $sharedWebDir/internal_example_dir