Я успешно использовал http://www.puphpet.com для создания бродячих + марионеточных сред для ряда проектов. Затем на этой неделе мне поручили написать прототип для проекта с использованием Laravel 4. Поскольку я не буду работать над проектом полностью, я решил, что лучше всего создать для него среду VM, чтобы следующий человек может просто клонировать для репо. Не имея большого опыта работы с Laravel 4, я получил все, чтобы работать в среде Dev просто отлично. Затем я попытался выполнить первую миграцию, и здесь проблемы начинаются с разрешений файла app/storage
.
1. приложение/хранилище должно быть доступно для записи веб-пользователем
Хорошо, вытащил id: брандмауэр из предустановленной синхронизации и установил владельца и группу в www-данные следующим образом:
config.vm.synced_folder "./www", "/var/www", owner: "www-data", group: "www-data"
2. Artisan можно запустить только изнутри бродячего ящика, чтобы иметь доступ к DB
Прекрасно, vagrant ssh
и запустите мастер из папки www.
3. приложение/хранилище и приложение/база данных должны быть доступны для записи бродячим пользователем, чтобы использовать миграции
Grrr, ok, добавил следующий ужасный фрагмент кода в бродячий файл (заметьте, сначала попытался сделать это в Puppet, и он не взял):
config.vm.provision :shell, :inline =>
"usermod -a -G www-data vagrant"
4. приложение/хранилище и приложение/база данных не могут быть записаны группой
Argh!!! Хорошо, попробуйте эту директиву 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 {}
. Кажется, что разрешения для синхронизированной папки с бродягой устанавливаются хостом, а не гостем.
Наконец, в результате вручную были изменены разрешения для папки на главной машине. Есть ли более простой способ сделать это? Я бы просто хотел, чтобы у вас появилась следующая среда, свободная от беспокойства, которую они могут клонировать из репо, а не повторять настройку после клонирования.
UPDATE
Мы выяснили, что если мы изменим пользователя запуска Apache, бродяга не переопределит его при перезагрузке. Таким образом, мы сделали это вручную, и он работает лучше, чем изменение разрешенных прав доступа и владельца. Теперь мы просто пытаемся выяснить, как сделать это изменение вручную в Puppet.