Heim >Backend-Entwicklung >PHP-Tutorial >13 Schritte, um EZ zu veröffentlichen, 5.x zur Arbeit auf Homestead
Dieser Artikel war zunächst ein kurzer Tipp, wie die EZ -Veröffentlichung in nur wenigen Schritten auf Homestead installiert wird. Nachdem ich jedoch gesehen hatte, wie viel Mühe es brauchte, um es aufzubauen und von Grund auf neu zu arbeiten, entschied ich mich, es in einen vollständigen Artikel zu schaffen. Ich habe gelitten, also musst du nicht :)
Ich hoffe, dass das EZ -Team die Probleme, die ich unten angehe, angehen wird, und wie sie (wenn sie es tun), werde ich diesen Beitrag entsprechend ändern. Zugegeben, meine Umgebung ist sehr spezifisch: Vagrant unter Windows. Dies sollte jedoch keine Rolle spielen. Jedes CMS, jede App und jedes Framework, das ich auf die gleiche Weise starten wollte, war in wenigen Minuten ausgeführt. Es gibt keinen Grund in der heutigen modernen Webwelt, dass dies nicht auf allem funktioniert.
definieren wir den Zweck des Vagranten. Der Zweck von Vagrant ist die Teameinheit und die Produktions- / Entwicklungsparität unabhängig vom Betriebssystem des Hosts. Mit anderen Worten, der Zweck von Vagrant ist zweifach:
in der Lage sein, jedem Teammitglied die
identischeDurch Experimentieren mit den folgenden Installationsverfahren habe ich festgestellt, dass EZ Publish nicht dies einfach macht. Im Jahr 2014 verwenden die meisten professionellen Entwickler mit mehreren Kunden und/oder Projekten Vagrant auch beim Solo - mit engagierten, getrennten, zerstörbaren und wiedergeborenen Umgebungen für jedes Projekt sind unschätzbar Entsorgung.
Ich bin enttäuscht, dass mehr Apps heutzutage einen Vagrantenansatz verfolgen. Genauso wie wir bei der Entwicklung von Frontenden zuerst mobil denken müssen, sollten wir VM-First denken, wenn wir Back End-Bibliotheken, Frameworks und Apps entwickeln-ansonsten die gesamte Docker / Vagrant-Kompartmentalisationsgeschichte, auf die die Welt konzentriert Anpassen wird zurückbleiben, wenn die Welt nach Heroku, Gae, Amazon und anderen wechselt.
Beginnen wir jetzt mit dem Installationsverfahren.
Wichtiger Hinweis: Wenn Sie nicht unter Windows sind, wird Ihnen Schritt 5 wahrscheinlich nicht passieren. Wenn Sie unter Windows sind, können Sie Schritt 5 vermeiden, indem Sie die gesamte Prozedur in einer „erhöhten“ Gitbash / -eintragsaufforderung ausführen (indem Sie entweder als Administrator ausgeführt). Admin -Benutzer sind die einzigen, die die Erlaubnis haben, unter Windows 8 Symlinks zu erstellen. Es gab Gerüchte darüber, dass dies behoben werden konnte, aber keiner von ihnen arbeitet zuverlässig. Wenn Sie Ihre Entwicklungsumgebung als Administrator ausführen, eröffnet der Administrator eine ganz neue Dose Würmer. Wenn jemand erfolgreich eine regelmäßige Windows 8 -Benutzerberechtigung gibt, um Symlinks über Gitbash zu erstellen, lassen Sie es mich bitte wissen.
Lassen Sie eine Laravel Homestead verbessert und arbeiten. Wenn Sie Vagrant gemacht haben, um zu sehen, ob es funktioniert, zerstören Sie Vagrant, damit wir es konfigurieren können.
Öffnen Sie die Datei homestead.yaml und fügen Sie eine neue Site hinzu:
<span> - map: ez.app </span><span> to: /home/vagrant/Code/ezpub/web</span>
EZ.App in die Hosts -Datei Ihres Host -Computers hinzufügen, wie im Laravel Homestead beschrieben, verbessertes Schnellspitzen. Stellen Sie grundsätzlich sicher, dass Ihre Hosts -Datei 127.0.0.1 ez.app enthält. Natürlich auch den gemeinsam genutzten Ordner abbilden.
booten Sie die VM mit Vagrant Up und geben Sie die VM mit Vagrant SSH.
einDas Projekt benötigt PHP, damit die Erweiterungen von PHP-INTL und PHP-XSL installiert sind. Sie werden Sie auch nach Sendmail während des gesamten Setup -Assistenten bitten. In Homestead können Sie alle mit:
installieren<span>sudo apt-get update </span><span>sudo apt-get install php5-intl php5-xsl sendmail</span>
<span>cd Code </span><span>composer create-project ezsystems/ezpublish-community ezpub</span>
Das obige wird ein EZ -Projekt zur Verwendung erstellen, nicht zur Entwicklung. Um die Entwicklungsversion zu erhalten, lesen Sie ihre Github -Seite.
Beachten Sie, dass EZ Publish lächerlich groß ist und dies eine Weile dauern wird. Es ist fast garantiert, dass Sie das nicht authentifizierte GitHub -API -Ratenlimit "60 Anfragen pro Stunde" treffen. Daher müssen Sie möglicherweise Ihren Benutzernamen und Ihr Passwort während des Installationsprozesses eingeben, um diese Barriere zu durchlaufen.
Der Prozess kann aufgrund von Zeitüberschreitungen und der enormen Datenmenge, die heruntergeladen werden müssen, ein paar Mal ausfallen. Wenn dies geschieht, entfernen Sie einfach den gesamten EZPub-Ordner mit RM-RF EZPUB und führen Sie den obigen Befehl create-project erneut aus-es ist jedes Mal schneller, da jedes Mal ein Paket heruntergeladen wird, es wird auf nachfolgenden Anfragen aus lokalem Cache serviert anstatt erneut heruntergeladen zu werden.
Der Installateur fragt Sie gegen Ende einige Daten (Secret, Fallback -Gebietsschema usw.). Füllen Sie es aus oder drücken Sie einfach die Eingabetaste an, um Standardeinstellungen zu verwenden.
Der Grund, warum wir kein von der EZ Publish -Website heruntergeladenes TAR -Archiv verwenden, liegt darin, dass das vorbereitete Archiv mit Symlinks gepackt ist - und diese funktionieren nicht, wenn Ihr VM auf einem Windows -Computer gehostet wird. Um die multi-plattform-freundlich zu halten, habe ich mich für den Komponisten-Ansatz für Erstellungsprojekte entschieden.
Wie es aussieht, ist EZ Publish nicht wirklich fein für VMs oder Edge -Fälle und es gibt eine Menge, die das Team nicht in Betracht gezogen hat - zum Beispiel in einem VM in einem Windows -Box. Bei allen Abhängigkeiten wird es garantiert, dass sie während der Installation irgendwo brechen. Für mich und wahrscheinlich auch für Sie sind dies die Post -Installationskripts, die Assets installieren. Installieren von Assets ist tatsächlich Teil von Symfony, die in der Klasse, die dies tut, tatsächlich vor Windows und Symlinks warnen, aber nicht berücksichtigt, wenn das Elternprojekt Symlinks erzwingt, wie es EZ Publish tut.
Wenn dies geschieht (Sie erhalten einen Fehler über Symlinks und einige), öffnen Sie Composer.json und löschen Sie die Zeile:
<span> - map: ez.app </span><span> to: /home/vagrant/Code/ezpub/web</span>
Dies zwingt den Installateur eher das Design -Assets als symlink . .
Dann führen Sie die Skripte nach der Installation erneut aus, indem Sie ausführen:
<span>sudo apt-get update </span><span>sudo apt-get install php5-intl php5-xsl sendmail</span>
Sie werden möglicherweise immer noch einen Fehler über die Legacy EZ -Version und ein Kommentarbündel von irgendeiner Art erhalten, aber ich bin mir noch nicht sicher, wie ich das beheben soll oder ob es wichtig ist oder nicht.
Erstellen Sie eine Datenbank, die wir später EZ füttern. Melden Sie sich in Ihrer MySQL -Instanz in der VM mit MySQL -U Homestead -Pecret an. Dann rennen Sie:
<span>cd Code </span><span>composer create-project ezsystems/ezpublish-community ezpub</span>
Dieser Schritt kann auf Homestead übersprungen werden, da der Server bereits unter dem Benutzer „Vagrant“ ausgeführt wird, der alle Unterordner in den EZPub -Ordnern besitzt.
bearbeiten: Siehe Jeromes Kommentar unten für einen Ansatz, der einen Teil von Schritt 8 und Schritt 9 automatisch verarbeitet.
besuchen Sie ez.app:8000 und sehen Sie den folgenden Bildschirm.
Hier wird es super komisch. Ohne Grund passiert dies. Ja, es ist ein Problem, das seit zwei Jahren nicht unfixiert ist - im Ernst, es ist ein zweijähriger ungelöster Fehler in einem PHP -Projekt. Das Fixieren im Kern würde sieben Sekunden lang Arbeiten dauern, einschließlich Commit and Push (siehe 8.2). Es gibt zwei Möglichkeiten, es in unserem Fall umzugehen. Keiner ist angenehm, also liegt es an Ihnen, einen auszuwählen.
Um es zu umgehen, und ich meine ernst meine, ist dies kein Witz - Sie müssen Entwickler -Tools öffnen und Ezsetup am Ende des Aktionsattributs des Formulars setzen, da es standardmäßig nur Index sagt .php. Es ist verblüffend, wie ein solches Problem im Jahr 2014 noch existieren kann, aber hier sind wir:
Wählen Sie diesen Ansatz aus, wenn Sie die Quelldateien eines Frameworks nicht gerne ändern.
Der zweite, vielleicht etwas einfachere Ansatz ist die Änderung der Form des Assistenten selbst und verändert sein Aktionsattribut.
gehen
<span> - map: ez.app </span><span> to: /home/vagrant/Code/ezpub/web</span>über ihm, geben Sie Folgendes ein:
<span>sudo apt-get update </span><span>sudo apt-get install php5-intl php5-xsl sendmail</span>Danach wird das Aktionsattribut behoben.
Schritt 9: Ignorieren Sie Assistentenfehler
Am Ende des Setup -Assistenten erhalten Sie einen Nginx -Zeitüberschreitungsfehler. Dies liegt daran, dass EZ Publish notorisch langsam ist, da es sowohl die schreckliche Legacy -Version als auch die neue Version verarbeiten muss, und aufgrund des Laufens auf einer VM. Sie werden dann von dieser Schönheit begrüßt:
Der Fehler im obigen Bildschirm erfolgt, während EZ versucht, Caches von PHP -Dateien wie diese zu erstellen: /home/vagagrant/code/ezpub/ezpublish/cache/prod/stash/0fea6a13c52b4d47/25368f24b045ca84/a1e4f174919d040af6d06113d677c9e0/4A1c6be177 996F9E/03934AE1C1C02FFC/9A0364B9E9BBB480/DD25E1F0284C8555/CAF9B6 B99962BF5C/2264824231D7A40C/D3D9446802A44259/755D38E6D163E820.PHP (Ugh, fragen Sie nicht ...).
Diese Cache -Engine ist nicht klug genug, um sich selbst zu deaktivieren, falls er ausfällt, also müssen wir es manuell tun.
In eZpubezPublishConFigezPublish.yml ändern Sie den Stash -Block auf diese:
<span> - map: ez.app </span><span> to: /home/vagrant/Code/ezpub/web</span>
"Im Speicher" bedeutet, dass der Speicher für Stash -Cache anstelle des Dateisystems verwendet wird. Löschen Sie den Cache mit RM -Rf ezpublish/cache/* und aktualisieren Sie es. Ersetzen Sie bei Bedarf die Cache -Engine später durch etwas anständigeres als den Dateisystem -Cache. Ich habe keine Ahnung, wie ich sonst den Protokollfehler für MKDIR lindern kann-ich weiß, dass es sich um VM-bezogene, aber nicht viel mehr. Jeder Rat wird sehr geschätzt.
Sie werden jetzt wahrscheinlich von einer weiteren Warnungen und einem 503 -Fehler am Ende begrüßt:
Aber zumindest haben wir den Titel zum Rendern!
Schritt 11: Bootstrap.php.cache- und AntwortgrenzenAbgesehen von
schreckliche Caching -Praktiken können wir dieses gesamte Chaos deaktivieren und EZ Publish im Debug -Modus laden, indem wir die Umgebungsumgebungsvariable ändern. Sie können dies in Homestead.yaml ändern, damit es während des Starts autokonfiguriert wird, indem Sie es dem Block „Variablen“ hinzufügen:
<span>sudo apt-get update </span><span>sudo apt-get install php5-intl php5-xsl sendmail</span>oder Sie können einfach die Index.php -Datei unter EZPUB/Web bearbeiten und $ umwelt = 'dev' putieren. unter $ umwelt = Getenv ("Umwelt"); in Zeile 8.
Zu diesem Zeitpunkt ist der zweite Ansatz einfacher, wenn Sie verfolgt werden, da Sie sonst mit dem gesamten Setup -Prozess von vorne beginnen müssen, wenn Sie wieder zerstören und wieder aufstehen.
beenden dies, Sie sollten in der Lage sein, dies zu rendern:
<span>cd Code </span><span>composer create-project ezsystems/ezpublish-community ezpub</span>Fügen Sie unter der Stammrichtlinie Folgendes ein:
<span>"symfony-assets-install": "relative",</span>speichern, beenden, nginx neu starten mit sudo service nginx neu starten.
Einige Seiten funktionieren (Blog, Discover), andere nicht so sehr. Das Debuggen ihres Demo -Bündels liegt jedoch außerhalb des Rahmens dieses bereits zu langen Artikels.
standardmäßig haben alle Symfony -Apps aus irgendeinem Grund "App.php" oder in EZ Publishs Fall "index.php" in ihrer URL. Ich denke, Jemand muss die Hosting -Anbieter und -Enteile aus dem Jahr 2001 unterstützen. Bringen wir beide Projekte ins 21. Jahrhundert, indem wir es entfernen.
<span> - map: ez.app </span><span> to: /home/vagrant/Code/ezpub/web</span>
nach Anweisungen hier über dem Block „Ort“ hinzufügen:
<span>sudo apt-get update </span><span>sudo apt-get install php5-intl php5-xsl sendmail</span>
speichern, beenden und starten Sie Nginx mit sudo service nginx neu starten.
Nach einem mühsamen Prozess sind wir endlich fertig. Was mich mehr als einen Tag gebraucht hat, hat Sie hoffentlich weniger als 10 Minuten gebraucht (ohne Download -Zeiten). Jetzt können auch Sie diesen leistungsstarken, wenn auch überlasteten, überkomprizierten und veralteten CMS in Ihrer eigenen Homestead -Instanz ausprobieren. Lassen Sie mich wissen, wie es funktioniert!
Jedes CMS, das so viel Arbeit erfordert, um in einer Vagrantenkiste aufzusteigen, ist in meinen Gedanken kein CMS, dem es wert ist, darauf zu achten. Sicher, Sie können es wahrscheinlich problemlos auf einem Host -Computer installieren und so ausführen, aber das ist kein professioneller Ansatz. Entwicklungsumgebungen müssen eingekapselt und isoliert werden, und Entwickler müssen in der Lage sein, eine Instanz aus einer Laune herauszunehmen und wieder aufzubauen. Ein CMS sollte Skripte haben, die automatisch ausgerichtet sind, alle möglichen Probleme erkennen (z. unterwegs.
Dieser Prozess hat EZ Publish installiert, aber war es sich gelohnt? Das liegt an Ihnen zu entscheiden. Während EZ definitiv ein kraftvolles CMS ist, sind die Schwierigkeiten, sich darauf zu befassen, bestenfalls schädlich. Sie haben jetzt einen gemeinsamen Ausgangspunkt, um es zu testen, und ich werde sicher mehr über diese Probleme der EZ -Leute im PHP Summer Camp und anderswo erfahren. Lassen Sie uns bis dahin einige EZ -Tutorials für diese Box in Gang bringen, sollen wir?
Geben Sie Ihr Feedback in die Kommentare unten ein, ich bin bestrebt, verschiedene Ansätze zu hören, insbesondere wenn Sie versucht haben, dies auf einem Nicht-Windows-Host zu tun, und das Demo-Bundle zum Arbeiten gebracht!
Bearbeiten: Dieses Github -Repo wurde mir aufmerksam gemacht. Es handelt sich um eine vorbereitete Vagrant -Konfiguration von EZ Publish, die funktioniert. Es gibt jedoch zwei Vorbehalte:
Das obige ist der detaillierte Inhalt von13 Schritte, um EZ zu veröffentlichen, 5.x zur Arbeit auf Homestead. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!