应用/存储必须由Web用户写入
很好,从同步的文件夹配置中取出id:vagrant,并设置所有者&组织到www数据如此:
config.vm.synced_folder "./www","/var/www",owner: "www-data",group: "www-data"
2.工匠只能从流氓箱内运行,才能访问数据库
罚款,流氓ssh,并从www文件夹运行工匠.
app / storage& app /数据库必须由vagrant用户写入才能使用迁移
Grrr,好的,将以下可怕的代码添加到流氓文件中(注意,尝试在Puppet中首先执行此操作,但没有使用):
config.vm.provision :shell,:inline => "usermod -a -G www-data vagrant"
app / storage&应用程序/数据库不能由组写入
哎呀!好的,我们来试试这个Puppet指令:
file { "/var/www/app/storage": source => "/var/www/app/storage/",mode => 0775,ensure => 'directory',owner => 'www-data',group => 'www-data',recurse => true }
不,不行.试图用Puppet exec {}指令做同样的事情,没有任何效果.似乎vagrant同步文件夹的权限由主机而不是guest虚拟机设置.
最后结束手动更改主机中文件夹的权限.有没有更简单的方法呢?我真的希望能够给下一个dev一个无忧的环境,他们可以从repo克隆,没有他们重新设置克隆后的一切.
UPDATE
我们已经知道,如果我们更改Apache运行用户,vagrant不会在重新加载时覆盖它.所以我们已经手动完成了,它比改变已同步的文件夹的权限更好,所有者.现在我们只是想了解如何在Puppet中手动进行更改.
解决方法
VirtualBox on vagrant有一个约束,不允许您从guest虚拟机操作系统内部设置已同步文件夹的权限. See this issue on github.
您可以从流氓文件中使用以下代码set the synced folder permissions:
config.vm.synced_folder ".","/vagrant",:mount_options => ["dmode=777","fmode=666"]
或者你可以change the Apache runtime user从这样的木偶清单流氓:
exec { "change_httpd_user": command => "sed -i 's/www-data/vagrant/g' /etc/apache2/envvars",onlyif => "/bin/grep -q 'www-data' '/etc/apache2/envvars'",notify => Service['apache2'],require => Package['apache2'],} file { "/var/lock/apache2": ensure => "directory",owner => "vagrant",group => "vagrant",require => Exec['change_httpd_user'],}
或以上任何组合
原文地址:https://www.jb51.cc/css/217236.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。