Capistranoを使用してデプロイするときにサーバーに静的ファイルを保持する
-
06-07-2019 - |
質問
Webインターフェースを介して、Railsアプリケーションの public / files
フォルダーにファイルを常時アップロードしています。
これらは2 GB近く使用されるため、ソース管理に残したくないので、 cap deploy
を実行するたびに、これらのファイルは releases /
を選択し、ディレクトリをリポジトリに保存されている元のコピーに置き換えます。
これらのファイルをサーバーの current
ディレクトリに保存する最良の方法は何だろうと思っています。私のアイデアのいくつかは次のとおりです。
- ソース管理からディレクトリを削除し、Capistranoによって管理されていない外部ディレクトリへのリンクに置き換えます。
- 展開する前にディレクトリを/ tmpにコピーするCapistranoタスクを作成し、展開後に/ publicにコピーして戻します。
これを行う標準的な方法はありますか?
解決
ファイルをマシン上の別のディレクトリへのシンボリックリンクにすることができます。たとえば、/ currentおよび/ releasesと同じレベルの/ sharedディレクトリです。
capistranoが/ logおよび/ tmpディレクトリを管理していることを確認してください。
他のヒント
将来の記録のために、これは私が共有ディレクトリでそれを行うために使用したタスクです:
task :link_shared_directories do
run "ln -s #{shared_path}/files #{release_path}/public/files"
end
after "deploy:update_code", :link_shared_directories
今では、deploy.rbで:linked_filesを使用できます:
set :linked_files, %w{config/database.yml}
この場合、ファイル[target_dir] /shared/config/database.ymlがサーバーに存在する必要があります。
所属していません StackOverflow