【发布时间】:2013-09-10 00:13:18
【问题描述】:
我已经成功使用http://www.puphpet.com 为多个项目生成 vagrant+puppet 环境。然后这周我的任务是使用 Laravel 4 为一个项目编写原型。由于我不会全职从事这个项目,我认为最好为它制作一个 VM 环境,下一个人可以克隆回购。我对 Laravel 4 没有太多经验,我可以在开发环境中运行一切都很好。然后我尝试运行第一次迁移,这里的问题从app/storage 文件权限开始。
1.应用/存储必须可由网络用户写入
好的,从同步的文件夹配置中取出 id: vagrant 并将所有者和组设置为 www-data,如下所示:
config.vm.synced_folder "./www", "/var/www", owner: "www-data", group: "www-data"
2。 Artisan 只能在 vagrant box 内运行才能访问数据库
好的,vagrant ssh 并从 www 文件夹运行 artisan。
3. app/storage & app/database 必须是 vagrant 用户可写才能使用迁移
Grrr,好的,在 vagrant 文件中添加了以下糟糕的代码(注意,首先尝试在 Puppet 中执行此操作,但没有成功):
config.vm.provision :shell, :inline =>
"usermod -a -G www-data vagrant"
4.应用程序/存储和应用程序/数据库不可由组写入
啊!!!好的,让我们试试这个 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 synced 文件夹的权限是由主机设置的,而不是来宾。
最终手动更改了主机中文件夹的权限。有没有更简单的方法来做到这一点?我真的很希望能够为下一个开发人员提供一个可以从 repo 克隆的无忧环境,而不是让他们在克隆后重新设置所有内容。
更新
我们发现,如果我们更改 Apache 运行用户,vagrant 不会在重新加载时覆盖它。所以我们已经手动完成了,它比更改同步文件夹的权限和所有者更好。现在我们只是想弄清楚如何在 Puppet 中手动进行更改。
【问题讨论】:
-
我和你和RE:#2在同一条船上。难道你不能使用 xip.io 地址设置你的环境(所以 testing.10.10.10.10.xip.io)然后授予 root (或你的 laravel 安装正在连接的用户)远程权限?然后,当您在主机上运行 artisan db 命令时,它应该能够找到 mysql 框并登录.. 有意义吗?注意:我还必须取消绑定 mysql:sudo nano /etc/mysql/my.cnf ;skip-external-locking ;bind-address 保存并重新加载。希望这会有所帮助!
-
是的,我们会试一试,看看效果如何。感谢您的提示。
-
最终是更改权限的问题。不过,我可能仍会使用您的建议来远程访问数据库。
标签: laravel laravel-4 file-permissions vagrant puppet