2014-12-03 6 views
1

저는 Capistrano를 처음 사용하고있어서 설정하는 데 도움이 필요합니다. cap deploy 명령을 실행 한 후 오류없이 성공적으로 실행되지만 원격 서버의 내용을 업데이트하지 않으면 일부 파일과 함께 my_app 디렉토리에 추가 폴더를 만들고 current이라는 폴더를 만들고이 폴더 내에 github의 모든 업데이트를 배치합니다. 여기 내 deploy.rb 파일Capistrano 3은 파일 및 파일의 코드를 업데이트하지 않습니다.

lock '3.3.3' 

set :application, 'my_app' 
set :repo_url, '[email protected]:me/my_app.git' 
set :branch, "master" 
set :deploy_via, :remote_cache 
set :user, "me" 
set :stages, ["production"] 
set :use_sudo, false 

set :deploy_to, '/var/www/my_app' 


namespace :deploy do 
    after :finishing, 'deploy:cleanup', "deploy:update_code" 

    after :restart, :clear_cache do 
     on roles(:web), in: :groups, limit: 3, wait: 10 do 
      # Here we can do anything such as: 
      # within release_path do 
      # execute :rake, 'cache:clear' 
      # end 
     end 
    end 

end 

무엇이 잘못 되었나요? 어떻게 카피스트라 노가 원격 서버의 my_app 폴더에있는 파일과 파일 내용을 업데이트 할 수 있습니까? 도움 주셔서 대단히 감사합니다 !!!

+1

여러분은 Capistrano를 처음 사용하기 때문에 이것이 어떻게 작동하는지 알지 못할 수도 있습니다. 앱이'/ var/www/my_app'에 있다고 가정하면 몇 개의 디렉토리가 있으며 그 중 하나에는 프로젝트 소스가 들어 있지 않습니다. 첫 번째는'releases/SOME_TIMESTAMP'에 대한 심볼릭 링크 인'current'입니다. 다음은'repo' 디렉토리입니다.이 디렉토리에는 맨 마지막에 성공했거나 실패한 배포본이있는'릴리즈 (release) '라는 내용이 포함되어 있습니다. 마지막 하나는'공유 된 '파일과 디렉토리가 릴리스 사이에서 공유되어야합니다 (예 :'config/database.yml') – blelump

+0

답장을 보내 주셔서 대단히 감사합니다. 제발 도와주세요. 내 서버가 Cristrano가 다운로드 한 새 코드를 사용하도록하려면 어떻게해야합니까? 또는 github master 브랜치의 코드를 원격 서버의 코드와 어떻게 동기화 할 수 있습니까? 고맙습니다! –

+0

당신의'deploy.rb'는 괜찮아 보입니다. 배포가 성공적으로 끝나나요? 그렇다면'current' 디렉토리에는 여전히 새로운 커밋이 포함되어 있지 않습니까? – blelump

답변

0

이 문제의 해결 방법은 간단합니다. Capistrano를 사용할 때 "현재"폴더를 사용하도록 서버를 지정해야합니다. 예를 들어, 나는 레일 응용 프로그램과 함께 아파치 승객 서버를 사용합니다. 따라서 설정 파일에서 경로를 지정해야합니다. DocumentRoot /var/www/my_app/current/public