現在、ユーザーがファイルをアップロードできるサイト (browsercms) 内で CMS を実行しているときに問題が発生しました。ただし、デプロイを行うたびに、Capistrano はハード リセットを実行するため、アップロードされたファイルはすべて削除されます。
アプリケーションコードを変更せずに、ハードリセットを防ぎ、プルする方法、またはアップロードされたファイルを別の場所に移動する方法について、誰か提案はありますか?
現在、ユーザーがファイルをアップロードできるサイト (browsercms) 内で CMS を実行しているときに問題が発生しました。ただし、デプロイを行うたびに、Capistrano はハード リセットを実行するため、アップロードされたファイルはすべて削除されます。
アプリケーションコードを変更せずに、ハードリセットを防ぎ、プルする方法、またはアップロードされたファイルを別の場所に移動する方法について、誰か提案はありますか?
これは、「アプリケーションコードを変更せずに」という基準を完全には満たしていません。
ただし、同様の問題が発生した後、アップロードしたイメージをディレクトリにシフトした後/public/images、/public/system/images各/public/systemcapistranoデプロイメントによって「バージョン管理」されないため、イメージは存続します。
(gitリセットの代わりに)問題を引き起こしているのはcapistranoの「バージョン管理」でしょうか?
これは正しいアプローチではないかもしれません。
'images' フォルダーを .gitignore に含め、$current_release/images フォルダーを $shared/images にシンボリック リンクする必要があります。
deploy.rb に次のように記述すれば、これはすべてのデプロイメントで自動的に行われます。
task :link_imgs do
run "ln -s #{shared_path}/photos #{release_path}/photos"
end
after "deploy:update_code", :link_imgs
私はCMSで同じことをしましたが、それは魅力のように機能します
cap deploy呼び出しdeploy:updateおよびdeploy:restart
deploy:updateは、バージョン管理、コピーを行います
deploy:restartは真の再起動を行い、通常はconfig/deploy.rbファイルで都合の良いときにオーバーロードします
namespace :deploy do
desc "Softly restart the server"
task :restart, :roles => :app, :except => { :no_release => true } do
my_own.restart_recipe
end
end