2014-12-03 60 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 

什么是错的!我如何让Capistrano更新远程服务器上my_app文件夹中的文件和内容?非常感谢你的帮助!!!

+1

由于您是Capistrano的新手,您可能不知道它是如何工作的。假设你的应用程序驻留在'/ var/www/my_app'中,有几个目录,并且它们中的任何一个都不包含你的项目源。首先是'current',它是'releases/SOME_TIMESTAMP'的符号链接。接下来是一个'repo'目录,其中包含您的裸回购,'发布'与几个最后成功或失败的部署。最后一个是'shared',并且有文件或目录必须在版本间共享(例如'config/database.yml') – blelump 2014-12-03 18:31:20

+0

非常感谢您的回答。请问你能帮帮我吗!我应该如何让我的服务器使用Cpristrano下载的新代码。或者我怎样才能将github主分支上的代码与远程服务器上的代码同步?谢谢! – 2014-12-04 17:15:25

+0

你的'deploy.rb'看起来很好。部署是否成功结束?如果是这样,'current'目录仍然不包含新的提交? – blelump 2014-12-04 17:22:11

回答

0

解决这个问题很简单。当您使用Capistrano时,您必须指出您的服务器使用文件夹“当前”。例如,我使用apache乘客服务器与rails应用程序,所以在我的配置文件中,我必须指定路径DocumentRoot /var/www/my_app/current/public