微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Laravel 4与Puppet的流浪者盒子的权限

我一直在使用 http://www.puphpet.com成功地为一些项目生成流氓木偶环境.那么这个星期,我得到了使用Laravel 4编写一个项目的原型.由于我不会是全职工程的人,所以我认为最好是为下一个一个VM环境人可以克隆回购.没有太多的经验与Laravel 4我有一切运行在开发环境就好了.然后我尝试运行第一次迁移,这里的问题从应用程序/存储文件权限开始.

应用/存储必须由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中手动进行更改.

解决方法

在Twitter上进行了一些讨论后,找出以下几点:

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 举报,一经查实,本站将立刻删除。