2014-02-17 2 views
6

내 웹 사이트에 대해 Capistrano 배치를 설정하려고합니다. 모든 인증이 제대로 작동하지만, Media Temple을 사용하여 호스트하므로 아파치는 기본 symlink가 작동하지 않습니다. 최신 릴리스에 대해 지정된 경로에 대한 액세스 권한이 있어야합니다.Capistrano가 현재 symlink를 변경하는 작업을 생성 중임

현재의 심볼릭 링크를 해제하고 상대 경로로 다시 생성하는 작업을하려고합니다. 그러나 Capistrano 설명서가 심각하게 부족하고이 설정 방법에 대한 정보를 더 이상 찾을 수 없습니다.

sh를 사용해 보았습니다.하지만 서버가 아닌 내 컴퓨터에서 명령을 찾을 수 없습니다. 실행을 시도했지만 RM이나 ln과 같은 작업을 수행 할 수있는 올바른 형식을 찾을 수 없습니다. 시행 착오의 거대한 양의 후

namespace :deploy do 

    desc "Change HTML Symlink to relative path" 
    task :create_symlink do 
    #latest_release_relative = relative_path(deploy_to, release_path + '/html') 
    #sh "rm -f #{current_path} && ln -s #{latest_release_relative} #{current_path}" 
    #sh "echo #{File.basename release_path}" 
    info "echo Modifying symlink to be relative" 
    #run "rm -d #{current_path}" 
    #run "ln releases/#{File.basename release_path} #{current_path}" 
    #execute :rm, '-d', #{current_path} 
    end 

    desc "Create environment file" 
    task :create_env_conf 
    file 'env.conf' do |t| 
    sh "touch env.conf" 
    end 

end 

after :deploy, "deploy:create_symlink", "deploy:create_env_conf" 

답변

8

, 나는 문제가 그 것을 발견했다;, 등 ...

현재 나는이 다음과 같은 노력하고 있어요

  • 는 카피 스트라 노 더 많은 문서를 필요

  • 디렉토리에 특정 명령을 실행하기위한 & &와 CD 다음 체인 명령에 필요 캡 v3에서 실행 사용하기

    1. 필요 ...

    이것은 내가 일하는 방식이고, 나는 카피스트란과 함께하는 더 좋은 방법이 있다고 생각한다. o 3 그러나 나는 어디서나 기술하는 적절한 문서를 찾을 수 없었다.

    #config valid only for Capistrano 3.1 
    lock '3.1.0' 
    
    set :application, 'prism-credentials' 
    set :repo_url, 'REPO URL' 
    
    # Default deploy_to directory is /var/www/my_app 
    set :deploy_to, 'DEPLOY FOLDER' 
    
    # Default value for keep_releases is 5 
    set :keep_releases, 5 
    
    set :branch, "master" 
    if ENV['branch'] 
        set :branch, ENV['branch'] 
    end 
    
    namespace :deploy do 
    
        desc "Change HTML Symlink to relative path" 
        task :create_symlink do 
        on roles(:app) do 
    
         #execute "ls -l" 
         info "Modifying symlink to be relative" 
         execute "rm -d #{current_path}" 
    
         info "Deleted current symlink" 
         execute "cd ../DEPLOY FOLDER && ln -s ./releases/#{File.basename release_path} current" 
         info "Created relative current symlink" 
    
         execute "cd ~/../DEPLOY FOLDER && touch env.conf && echo 'live' >> env.conf" 
         info "Created environment file" 
    
        end 
        end 
    
    end 
    
    after :deploy, "deploy:create_symlink" 
    
  • +0

    이 문제를 해결 한 코드를 게시 하시겠습니까? 나는 같은 문제가있다. – bigsweater

    +1

    @bigsweater 나를 위해 일한 것을 추가했습니다 ... –

    +1

    고마워요! 결국 애셋과 디렉토리가 모두 업데이트되도록 기본 symlink 함수를 재정의했습니다. 덮어 쓰기를 모듈화하기 위해 작업을 사용할 수도 있습니다 ... https://gist.github.com/bigsweater/9307075 – bigsweater

    관련 문제