2017-07-10 4 views
0

私はwebappを展開するシェフの料理本を持っています。作成して所有する必要のあるフォルダとファイルがあります。www-data:www-dataです。シェフは配備時にファイル所有者を上書きしますか?避けられますか?

deploy "#{app_dir}" do 
    repository tmp_dir 
    user "root" 
    group "root" 
    environment app[:environment] 
    symlink_before_migrate({}) 
end 

そして、このようなbefore_symlink.rbスクリプトで行われ、これらのファイルとフォルダの作成やアクセス権セット:私は私のdeploy.rbレシピにこのようなシェフのdeployコマンドを使用して、それをやっているアプリケーションをデプロイする場合:

execute "ensure correct owner of storage folder" do 
    command "chown -R www-data:www-data #{release_path}/storage" 
end 

私は、デバッグしてきたと私は、これはチェックしました:

  1. chownが実行され、ユーザーはexis ts、シェフのログで見ることができます。
  2. before_symlinkの最後にsleepコマンドを実行してからマシンにsshを実行すると、が所有するstorageフォルダに表示されます。
  3. deploy.rbにdeployコマンドの直後にsleepコマンドを実行してから、マシンにsshを実行すると、リリースフォルダはcurrentフォルダにリンクされ、すべてのファイルとフォルダはroot:rootによって所有され、許可エラーが発生します。

デプロイメントの最後に、展開されたすべてのファイルの所有者をシェルフが展開するユーザーに上書きしているようです。これは本当ですか?所有者のファイルとフォルダをbefore_symlink.rbに設定したままにする方法はありますか?

+1

オーナー/グループが 'www-data:www-data'の場合、なぜリソースを' root:root'に割り当てるのですか? 'deploy'リソースに直接正しいものを設定してください。 – Navarro

答えて

0

本当に本当には、展開リソースを使用しません。おそらくgitリソースとそのuserプロパティです。

関連する問題