0

アップロードされたファイル/画像に S3 バケットを使用する新しいインスタンスを作成したいと考えています。私は s3fs を使用しており、ターゲット フォルダーはインスタンスにマウントされています。私はしたいと思います:

1- /srv/www/myapp/current/public/system (現在は shared/public/system を指しています) を削除します。

2- /srv/www/myapp/current/public/system を /s3mounted/bucket/public/system にリンクします

したがって、すべてのインスタンスは、同じ共有された永続的な s3 の場所を指します。

リンクは www-data が所有しています。手動で sudo su と rm を実行しようとしましたが、うまくいきませんでした。私の質問は、シェフのレシピで展開フック (before_restart.rb) としてこれを行う場合、このリンクを削除して別の場所を指すことができるようにするにはどうすればよいかということです。

4

2 に答える 2

0

現在の before_restart.rb で、次のようにします。

current_release = release_path
deploy_node = node

deploy_resource = new_resource
deploy_to = deploy_resource.deploy_to
app_name = deploy_to.split('/')[-1]

deploy_user = deploy_node[:deploy][app_name][:user]
deploy_group = deploy_node[:deploy][app_name][:group]

link "#{current_release}/public/system" do
  to "/s3mounted/bucket/public/system"
  owner deploy_user
  group deploy_group
end

最初の部分では、使用する変数をセットアップします。deploy[] のようなものを使用すると、最終的にマシンがデプロイ ループに陥る可能性があります。

これにより、基本的にファイルが削除されます。シンボリックリンクすると、自動的に削除されます。

于 2014-03-13T21:32:28.580 に答える
0

Apache プロセスでファイル/フォルダーがロックされていました。権限の問題ではありませんでした。Apacheを停止してから「sudo rm」を実行する必要がありました。その後、新しい場所にリンクしてApacheを再起動し、すべてうまくいきました。

これは最善の解決策ではない可能性があり、これを行う方法について他の考えを聞きたいと思っています.

于 2014-03-11T14:27:46.750 に答える