2015-02-08 17 views
5

Ich habe versucht, über diese Frage zu suchen, aber es scheint nirgendwo, wo es gründlich erklärt wird, meist nur Teile des Problems wie app/storage Erlaubnis wurde nicht festgelegt, so Webserver kann Datei schreiben, aber mein Problem scheint größer und grundlegender zu sein, ich hoffe, dass jemand ausführlich erklären kann, wie dies eingerichtet werden sollte, vorzugsweise ohne die Erlaubnis, 777 zu setzen.PHP-FPM + Laravel + Nginx + Ubuntu Erlaubnis

Also mein Stack ist Ubuntu 14.04, PHP 5.6 mit PHP-FPM weil ich nginx 1.4.6 verwenden und ich verwende Laravel 4.2 als Rahmen, ow und ein mehr ich Git verwenden als mein Versionierungswerkzeug. Also, was die notwendige Schritt-für-Schritt die folgenden ermöglichen:

  1. Einstellung des ursprünglichen Projekts, Git und Nginx:

    So wie weit ich weiß, ist Nginx einrichten zu verwenden Benutzername www-data als Standard richtig? Bedeutet das, dass ich meinen Benutzer z. kevin in die Gruppe www-data? Wenn ich Git initialisieren, erstellen Sie das Projekt mit Composer, SSH öffentlichen/privaten Schlüssel einrichten, muss ich zur Gruppe gehören www-data oder ich muss sudo oder was? In meinem Produktionsserver habe ich versucht, sudo für die Einrichtung alles zu verwenden, es macht es einfacher, all das oben genannte zu tun, aber ist es die beste Praxis?

  2. machen app/storage beschreibbaren für Webserver:

    Ich denke, dies ist die zweite und wichtigste für Laravel, denn es sei denn, dies Laravel funktioniert nicht ausgeführt werden, meines Wissens, dass dieser Ordner beschreibbar sein muss durch den Webserver (nginx), also muss ich dies auf sudo chown -R www-data:www-data app/storage und sudo chmod -R 664 app/storage richtig einstellen? Aber irgendwie scheint das nicht die ganze Zeit zu funktionieren, denn während meiner Entwicklung wird es manchmal sagen, dass ein Cache einer Ansicht nicht in den Ordner app/storage geschrieben werden kann, also muss ich ihn am Ende auf 777 oder 775 setzen, wenn ich M glücklich.

  3. Öffentliche Ordner oder Ort meines Vermögens

    Hier habe ich einige Inkonsistenz zu, ich habe es am Ende zu 777 einzurichten, um sicherzustellen, dass alle meine Dateien von nginx zugegriffen werden kann. Manchmal nginx wird mir sagen, dass ein Bild in meinem Asset-Ordner verboten ist, und es wird nur HTTP 200 zurückgeben, wenn ich entweder 777 oder die Gruppe auf www-data:www-data ändern, muss ich die Berechtigung oder Gruppe für jedes Bild ändern dass ich aus Gimp, Photoshop erstellt habe, oder wenn ich von Dropbox oder von meiner E-Mail heruntergeladen habe, wenn mein Grafikdesigner neue Icons erstellt?

  4. Datei hochladen

    Also irgendwo um die Zeit, in der Lage, die Menschen zum Beispiel des Profilbild hochladen, oder wenn ich einen Blog schreibe ich ein Bild hochladen, bedeutet dies, dass an einem gewissen Punkt des Datei-Upload-Skript wird die Datei aus dem Ordner /tmp in meine public Ordner verschieben, muss es möglicherweise nur in ein Unterverzeichnis in public schreiben oder vielleicht muss es einen Ordner basierend auf einem bestimmten id erstellen und die Datei in das Verzeichnis verschieben, die meisten von Zeit werde ich einen Fehler erhalten, dass das Verzeichnis während der Ausführung des Skripts nicht beschreibbar oder irgendein Erlaubnisfehler als solcher scheint. Bedeutet das, dass der PHP-Prozess mit einer gewissen Berechtigung ausgeführt werden muss? Oder bedeutet das, dass das Verzeichnis eine bestimmte Berechtigung haben muss? Bezieht sich dieses Problem auf den Nginx-Service oder bezieht es sich auf den PHP-Prozess?

    ich die Erfahrung von Paketen zu benutzen wie roumen/sitemap oder jlapp/swaggervel, scheint sie die gleiche Fassade File, zu verwenden, aber irgendwie haben sie keine Probleme mit der Erlaubnis, ich versuche, ihren Code Verhalten zu replizieren, aber ich traf das Problem über.

  5. Queue, Artisan, andere Befehlszeilen basierend ausgeführt Skript

    Last werden Befehlszeilen basierend ausgeführt Skript, verhält sich dies das gleiche wie Skript, das von der Interaktion mit dem Webserver, wie die Datei ausgeführt hochladen, oder muss ich mich auf andere Inkonsistenzen vorbereiten?

Danke, wenn mir jemand das erklären kann. Ich denke, wenn ich es herausfinde, werde ich einen Blogpost oder etwas erstellen, schätzen es Jungs! : D

+0

Oh noch eine Sache, bitte nicht Homestead Antwort -.- –

Antwort