2008-11-04 69 views
6

我通过Web界面将文件上传到我的public/files文件夹中。使用Capistrano进行部署时,在服务器中保留静态文件

我不想保留这些源代码控制,因为它们差不多是2GB,所以每次我做cap deploy它都会将这些文件保存在releases/中,并用存储在存储库中的原始副本替换目录。

我想知道在current目录中保留这些文件的最佳方法是什么。我的一些想法是:

  • 从源代码控制中删除该目录,并将其替换为未由Capistrano管理的外部目录的链接。
  • 创建一个Capistrano任务,将该目录复制到/ tmp,然后在部署完成之后将其复制回/ public。

有没有标准的方法来做到这一点?

回答

6

您可以使文件成为机器上另一个目录的符号链接,例如与/ current和/ releases同级别的/ shared目录。

检出capistrano管理/ log和/ tmp目录。

7

对于将来的记录,这是我用一个共享目录做任务:

task :link_shared_directories do  
    run "ln -s #{shared_path}/files #{release_path}/public/files" 
end  

after "deploy:update_code", :link_shared_directories 
2

现在,我们可以简单地使用:在deploy.rb linked_files:

set :linked_files, %w{config/database.yml} 

在在这种情况下,服务器上必须存在[target_dir] /shared/config/database.yml文件。

相关问题