我有一个用于部署我们的webapp的厨师食谱,有些文件夹和文件需要由www-data:www-data
创建和拥有。在部署应用程序时,我在deploy
食谱中使用厨师的deploy.rb
命令来执行此操作:
deploy "#{app_dir}" do
repository tmp_dir
user "root"
group "root"
environment app[:environment]
symlink_before_migrate({})
end
然后,这些文件和文件夹的创建和权限设置在before_symlink.rb
脚本中完成,如下所示:
execute "ensure correct owner of storage folder" do
command "chown -R www-data:www-data #{release_path}/storage"
end
我一直在调试,我已经检查了这个:
chown
,用户存在,我可以在主厨日志中看到它。sleep
命令,然后ssh进入机器,我可以在storage
文件夹中看到该文件夹归www-data
所有,因为我愿望。sleep
上的deploy命令之后立即执行deploy.rb
命令,然后ssh到机器,那么现在release文件夹将链接到current
文件夹和每个文件和文件夹将由root:root
拥有,从而导致权限错误。因此,似乎在部署结束时,厨师似乎会将每个部署文件的所有者覆盖给进行部署的用户。这是真的?有没有办法在before_symlink.rb
上设置所有者的文件和文件夹?
答案 0 :(得分:0)
真的确实不使用部署资源。您想要的可能是git
资源及其user
属性。