Ich habe http://www.puphpet.com erfolgreich verwendet, um vagrant + Marionettenumgebungen für eine Reihe von Projekten zu generieren. Dann wurde ich diese Woche beauftragt, einen Prototyp für ein Projekt mit Laravel 4 zu schreiben. Da ich nicht derjenige sein werde, der Vollzeit an dem Projekt arbeitet, dachte ich, dass es am besten wäre, eine VM-Umgebung dafür zu schaffen Person kann nur für den Repo klonen. Da ich nicht viel Erfahrung mit Laravel 4 habe, habe ich alles, was in der Entwicklungsumgebung läuft. Dann habe ich versucht, die erste Migration zu starten und hier beginnen die Probleme mit den Dateiberechtigungen app/storage
.Laravel 4 Berechtigungen auf einer Vagrant Box mit Puppet
1. app/Lagerung durch den Web-Benutzer
Feine beschreibbar sein müssen, nahm ID: Vagabund aus dem Ordner Provisioning synchronisiert und stellen Sie den Eigentümer & Gruppe www-data in etwa so:
config.vm.synced_folder "./www", "/var/www", owner: "www-data", group: "www-data"
2. Artisan kann nur aus dem Inneren des vagabundierenden Box ausgeführt werden Zugriff auf die
Fein, DB haben vagrant ssh
und führen Sie Handwerker aus dem www-Ordner.
3. app/Speicher & app/Datenbank durch den vagabundierenden Benutzer um beschreibbar sein zu verwenden Migrationen
Grrr, ok, addierte das folgende schreckliche Stück Code an die vagabundierenden Datei (beachten Sie, dies in Puppet versuchte zunächst zu tun, und es dauerte nicht):
config.vm.provision :shell, :inline =>
"usermod -a -G www-data vagrant"
4. app/Speicher & app/Datenbank, die von der Gruppe nicht beschreibbar ist
Argh !!! Ok, lasst uns diese Puppet-Direktive ausprobieren:
file { "/var/www/app/storage":
source => "/var/www/app/storage/",
mode => 0775,
ensure => 'directory',
owner => 'www-data',
group => 'www-data',
recurse => true
}
Nein, funktioniert nicht. Versucht, das gleiche mit der Puppet exec {}
Direktive ohne Wirkung zu tun. Es scheint, dass die Berechtigungen für den synchronisierten Ordner vagrant vom Hostcomputer und nicht vom Gast festgelegt werden.
Schließlich endete die manuelle Änderung der Berechtigungen für den Ordner auf dem Host-Rechner. Gibt es einen einfacheren Weg dies zu tun? Ich möchte wirklich nur dem nächsten Entwickler eine sorgenfreie Umgebung geben können, die er aus dem Repo klonen kann, und nicht alles nach dem Klonen neu einrichten.
UPDATE
Wir haben herausgefunden, dass, wenn wir den Apache laufen Benutzer zu ändern, es vagrant außer Kraft setzen nicht auf reload. Wir haben das manuell erledigt und es funktioniert besser als die Berechtigungen des synchronisierten Ordners zu ändern. & Besitzer. Jetzt versuchen wir nur herauszufinden, wie wir diese Änderung in Puppet manuell vornehmen können.
I‘ m im selben Boot wie du und RE: # 2. Konnten Sie Ihre Umgebung nicht mit einer xip.io-Adresse einrichten (also testing.10.10.10.10.xip.io) und dann Root (oder dem Benutzer, mit dem Ihre Laravel-Installation verbunden ist) Remote-Privilegien gewähren? Wenn Sie dann artisan db-Befehle auf dem Host ausführen, sollte es in der Lage sein, die mysql-Box zu finden und sich einzuloggen. HINWEIS: Ich hatte auch mysql entbinden: sudo nano /etc/mysql/my.cnf ; skip-external-locking ; bind-Adresse speichern und neu laden. hoffe das hilft! – dpluscc
Yup, wir werden das ausprobieren und sehen, wie es geht. Danke für den Tipp. – Adrian
Letztendlich ging es darum, Berechtigungen zu ändern. Ich kann jedoch immer noch Ihren Vorschlag verwenden, um einen Fernzugriff auf die Datenbank zu erhalten. – Adrian