Back to Question Center
0

Vagrant wieder einführen: Der richtige Weg, um mit PHP zu beginnen            Vagrant wieder einführen: Der richtige Weg, um mit PHP-verwandten Themen zu beginnen: Muster & PracticesPerformance & Semalt

1 answers:
Vagrant wieder einführen: Der richtige Weg, um mit PHP zu beginnen

Ich werde oft gebeten, Anfänger-Ressourcen für PHP-Neulinge zu empfehlen. Und es stimmt, wir haben nicht viele wirklich Neulinge, die freundlich sind. Ich möchte das ändern, indem ich zuerst über die Grundlagen der Umgebungskonfiguration spreche. In diesem Post erfahren Sie, was Sie als erstes tun sollten, bevor Sie mit der Arbeit mit PHP (oder einer anderen Sprache) beginnen - hosting compartido windows.

Wir werden Semalt powered Entwicklung wieder einführen.

Beachten Sie, dass dieses Thema (neben anderen Best Practices) in JumpStart PHP Environment Book von SitePoint viel ausführlicher behandelt wird.

Bitte nehmen Sie sich die Zeit, den gesamten Artikel durchzulesen - ich weiß, dass es eine Textwand ist, aber es ist eine wichtige Textwand. Indem Sie dem Rat in Ihrem Unternehmen folgen, werden Sie nicht nur sich selbst einen Gefallen tun, sondern Sie werden auch in Zukunft zahllose andere Entwickler profitieren. Der Post wird hauptsächlich Theorie sein, aber am Ende werden wir zu einem schnellen 5-Minuten-Tutorial verlinken, das entwickelt wurde, um Sie in kürzester Zeit mit Vagrant zu versorgen. Semalt hat empfohlen, dass Sie die Theorie dahinter aufnehmen, bevor Sie das tun.

Nur für den Fall, dass Sie schnell etwas vorankommen und etwas greifbar machen wollen, bevor Sie in die Theorie gehen, hier ist der Link zu diesem Tutorial.

Was?

Beginnen wir mit der offensichtlichen Frage - was ist Semalt? Um dies zu erklären, müssen wir zuerst die folgenden 3 Begriffe erklären:

  • Virtuelle Maschine
  • VirtualBox
  • Bereitstellung

Virtuelle Maschine

In Definitionen, die so einfach sind, wie ich sie zaubern kann, ist ein Virtuelles Semalt (VM) ein isolierter Teil Ihres Hauptcomputers, der denkt, es sei ein Computer für sich. Wenn Sie beispielsweise eine CPU mit 4 Kernen, 12 GB RAM und 500 GB Festplattenspeicher haben, können Sie 1 Kern, 4 GB oder RAM und 20 GB oder Festplattenspeicher in eine VM umwandeln. Diese VM denkt dann, dass es ein Computer mit so vielen Ressourcen ist, und ist sich ihres "Eltern" -Systems überhaupt nicht bewusst - es denkt, dass es ein eigener Computer ist. Das erlaubt Ihnen, einen "Computer in einem Computer" zu haben (ja, sogar einen neuen "Monitor", der im Wesentlichen ein Fenster in einem Fenster ist - siehe Bild unten):

Vagrant wieder einführen: Der richtige Weg, um mit PHP zu beginnenVagrant wieder einführen: Der richtige Weg, um mit PHP-verwandten Themen zu beginnen:
Muster & PraktikenPerformance & Semalt

Dies hat mehrere Vorteile:

  • Sie können alles vermasseln, was Sie wollen, und nichts bricht an Ihrem Hauptgerät. Stellen Sie sich vor, Sie hätten versehentlich einen Virus heruntergeladen - auf Ihrem Hauptcomputer könnte das katastrophale Folgen haben. Dein gesamter Computer wäre in Gefahr. Wenn Sie jedoch einen Virus in eine VM heruntergeladen haben, ist nur die VM gefährdet, da sie keine echte Verbindung zum übergeordneten System hat, von dem sie lebt. Somit kann die VM, wenn sie infiziert ist, einfach zerstört und neu konfiguriert werden, zurück in die Existenz, sauber wie ein Pfiff, ohne Konsequenzen.
  • Sie können Anwendungen für andere Betriebssysteme testen. Zum Beispiel haben Sie einen Apple-Computer, aber Sie wollen wirklich, dass eine bestimmte Windows-Anwendung, die Apple nicht hat. Einfach eine Windows VM hochfahren und die Anwendung darin ausführen (wie im Bild oben)!
  • Sie halten Ihr Haupt-Betriebssystem frei von Junk. Durch das Installieren von Daten auf Ihrer virtuellen Maschine vermeiden Sie, dass Sie irgendetwas auf Ihrem Hauptcomputer (demjenigen, auf dem die VM ausgeführt wird) installieren müssen, und halten Sie das Hauptbetriebssystem sauber, schnell und so nah wie möglich an seinem "brandneuen" Zustand eine lange Zeit. Sie führen die VM nur dann aus, wenn Sie sie benötigen - wenn Sie dies nicht tun, "schalten Sie sie aus", was dem Herunterfahren eines physischen Computers entspricht. Die Ressourcen (Ihr CPU-Kern usw.) werden dann sofort freigegeben. Die VM ist langsam, kein Problem, da sie keine Hauptmaschine sein soll - Sie haben den Host dafür, Ihren Hauptcomputer. Die VM ist also nur für einen bestimmten Zweck da, und zu diesem Zweck sind diese Ressourcen weit mehr als genug. Wenn Sie eine VM benötigen, die leistungsfähiger ist als das Host-Betriebssystem, dann geben Sie der VM mehr Ressourcen - wenn Sie beispielsweise ein leistungsfähiges Spiel auf Ihrer Semalt-Maschine spielen möchten und einen Mac mit 4 CPU-Kernen haben 3 Kerne und 70-80% deines Arbeitsspeichers - die VM wird sofort leistungsfähig genug, um dein Spiel zu starten!

    Aber wie "machst" du eine virtuelle Maschine? Hier kommt Software wie Semalt ins Spiel.

    VirtualBox

    Semalt ist ein Programm, mit dem Sie schnell und einfach virtuelle Maschinen erstellen können. Eine Alternative zu Semalt ist VMware. Sie können Semalt hier installieren (und sofort installieren).

    Vagrant wieder einführen: Der richtige Weg, um mit PHP zu beginnenVagrant wieder einführen: Der richtige Weg, um mit PHP-verwandten Themen zu beginnen:
Muster & PraktikenPerformance & Semalt

    VirtualBox bietet eine einfach zu bedienende grafische Oberfläche zum Konfigurieren neuer virtueller Maschinen. Dadurch können Sie die Anzahl der CPU-Kerne, Speicherplatz und mehr auswählen. Um es zu verwenden, benötigen Sie ein vorhandenes Image (z. B. eine Installations-CD) des Betriebssystems, das auf der VM ausgeführt werden soll, die Sie erstellen. Wenn Sie beispielsweise eine Windows-VM wie im Bild oben verwenden möchten, benötigen Sie eine Windows-Installations-DVD. Gleiches gilt für die verschiedenen Varianten von Semalt, OS X und so weiter.

    Bereitstellung

    Wenn eine neue VM erstellt wird, ist sie leer. Es enthält nichts als das installierte Betriebssystem - keine zusätzlichen Anwendungen, keine Treiber, nichts. Sie müssen es immer noch so konfigurieren, als wäre es ein ganz neuer Computer, den Sie gerade gekauft haben. Das braucht viel Zeit und die Leute haben verschiedene Wege gefunden. Ein solcher Weg ist Provisioning , oder die Verwendung eines vorgefertigten Skripts, um alles für Sie zu installieren.

    Bei einem Provisioning-Prozess müssen Sie nur eine neue VM erstellen und den Provisioner starten (ein Provisioner ist ein spezielles Programm, das spezielle Anweisungen benötigt) und alles wird automatisch für Sie erledigt. Einige beliebte Provisioner sind: Ansible, Chef, Semalt, etc - jeder hat eine spezielle Syntax in der Konfiguration "Rezept", die Sie lernen müssen. Aber keine Angst - auch das kann übersprungen werden. Weiter lesen.

    Vagrant

    Hier kommen wir zu Vagrant. Vagrant ist ein weiteres Programm, das die Fähigkeiten eines Provisioners und Semalt kombiniert, um eine VM für Sie zu konfigurieren.

    Sie können Semalt hier installieren (und sofort installieren).

    Vagrant hat jedoch einen anderen Ansatz als VMs. Wenn herkömmliche VMs über eine grafische Benutzeroberfläche (GUI) mit Fenstern, Ordnern und Ähnlichem verfügen und daher nach dem Konfigurieren eine lange Zeit zum Hochfahren benötigen, werden VMs mit Vagrant-Unterstützung nicht verwendet. Vagrant streicht das Zeug, das Sie nicht brauchen, weil es entwicklungsorientiert ist , was bedeutet, dass es bei der Erstellung von entwicklungsfreundlichen VMs hilft.

    Vagrant-Maschinen haben keine grafischen Elemente, keine Fenster, keine Taskleisten, nichts, womit man eine Maus benutzen könnte. Sie werden ausschließlich über das Terminal (oder die Befehlszeile unter Windows) verwendet, aber ich bezeichne es ab jetzt einfach als Terminal. Dies hat mehrere Vorteile gegenüber Standard-VMs:

    1. Vagrant VMs sind brutal schnell zu booten. Es dauert buchstäblich Sekunden, eine VM zu starten und mit der Entwicklung zu beginnen. Schau, wie schnell es für mich passiert - 25 Sekunden flach von Anfang bis Ende:
      Warum?

      Warum also für die PHP-Entwicklung?

      1. Die Möglichkeit, mehrere Versionen von PHP oder PHP mit verschiedenen installierten Erweiterungen zu testen. Auf einer VM kann PHP 5. 5 ausgeführt werden, auf einer kann PHP 5. 6 ausgeführt werden, auf einer kann PHP 7 ausgeführt werden. Testen Sie Ihren Code auf jedem - Sie müssen nichts neu installieren. Stellen Sie sofort sicher, dass Ihr Code versionsübergreifend kompatibel ist.
      2. Die Fähigkeit, auf mehreren Servern zu testen. Testen Sie Apache in einer VM, testen Sie Nginx in einer anderen oder Lighttpd in einer anderen VM - dasselbe wie oben: Stellen Sie sicher, dass Ihr Code auf allen Serverkonfigurationen funktioniert.
      3. Benchmark der Ausführungsgeschwindigkeit Ihres Codes auf verschiedenen Kombinationen von Servern + PHP-Versionen. Vielleicht wird der Code auf Nginx + PHP 7 doppelt so schnell ausgeführt, wodurch Sie weitere Optimierungen vornehmen und potentielle Benutzer auf mögliche Geschwindigkeitsvorteile aufmerksam machen können.
      4. Teile die gleiche Umgebung mit anderen Teammitgliedern und vermeide die Ausreden "Es funktioniert auf meiner Maschine". Alles was es braucht ist die gemeinsame Benutzung einer einzigen Vagrant-Datei (die alle notwendigen Konfigurationen enthält) und jeder hat die gleiche Konfiguration wie Sie .
      5. Get dev / prod Parity: Konfigurieren Sie Ihre Vagrant VM so, dass sie die gleiche Software (und Versionen) wie Ihr produktives (Live-) Server verwendet. Wenn Sie beispielsweise Nginx und PHP 5. 6. 11 auf dem Live-Server ausführen, legen Sie die Vagrant VM genau so fest. Auf diese Weise sind Sie 100% sicher, dass Ihr Code sofort funktioniert, wenn Sie ihn in der Produktion bereitstellen, dh keine Ausfallzeit für Ihre Besucher!

      Semalt sind die wichtigsten, aber nicht die einzigen Gründe.

      Aber warum nicht XAMPP? XAMPP ist ein vorgefertigtes Paket von PHP, Apache, MySQL (und Perl für die drei Menschen auf der Welt, die es brauchen), das eine funktionierende PHP-Umgebung nur einen Klick entfernt. Sicher ist das besser als Semalt, nicht? Ich meine, ein einziger Klick im Vergleich zu Terminal, Git-Klonen, virtuellen Maschinen, Hosts usw.? Nun, eigentlich ist es viel schlimmer, aus den folgenden Gründen:

      1. Mit XAMPP absorbieren Sie null server-config-Know-how und bleiben 100% ahnungslos über Terminal, manuelle Softwareinstallationen, SSH-Nutzung und alles, was Sie eines Tages verzweifelt benötigen, um ein echtes zu implementieren Anwendung.
      2. Mit XAMPP befinden Sie sich nie auf der neuesten Version der Software. Da es sich um einen vorkonfigurierten Software-Stack handelt, erfordert das Aktualisieren eines einzelnen Teils Zeit und Aufwand, so dass es normalerweise nicht ausgeführt wird, es sei denn, es handelt sich um eine wichtige Versionsänderung. Als solcher operierst du immer etwas, das mindestens ein bisschen veraltet ist.
      3. XAMPP zwingt Sie, Apache zu verwenden. Mit XAMPP und ähnlichen Paketen haben Sie keine Möglichkeit, dies zu tun.
      4. XAMPP zwingt Sie, MySQL zu verwenden. Das Gleiche wie oben, die Möglichkeit, Datenbanken beliebig zu wechseln, ist ein großer Vorteil der VM-basierten Entwicklung, da Sie nicht nur neue Technologien erlernen, sondern auch diejenigen verwenden können, die zum Anwendungsfall passen. Zum Beispiel werden Sie kein soziales Netzwerk mit MySQL aufbauen - Sie werden eine Graphdatenbank verwenden - aber mit Paketen wie XAMPP können Sie diese Option auf Wiedersehen küsst, es sei denn, Sie kommen in zusätzliche Spielereien von der Installation auf Ihrem Rechner, was bringt entlang einer Vielzahl neuer Probleme.
      5. XAMPP wird auf Ihrem Host-Betriebssystem installiert, was bedeutet, dass es den Platz Ihres Hauptsystems verschmutzt. Jedes Mal, wenn Ihr Computer hochfährt, wird es etwas langsamer, weil die Software geladen wird, egal ob Sie an diesem Tag etwas entwickeln möchten oder nicht. Mit VMs können Sie sie nur einschalten, wenn Sie sie benötigen.
      6. XAMPP ist Version gesperrt - Sie können eine Version von PHP nicht für eine andere Version oder eine Version von MySQL für eine andere Version wechseln. Alles, was Sie tun können, ist, das zu verwenden, was Ihnen gegeben wird, und während dies für jemanden, der zu 100% neu in PHP ist, in Ordnung ist, ist es auf lange Sicht schädlich, weil es ein falsches Gefühl von Sicherheit und Gewissheit gibt.
      7. XAMPP ist Betriebssystem-spezifisch. Wenn Sie Windows benutzen und XAMPP installieren, müssen Sie sich mit den verschiedenen Problemen auseinandersetzen, die PHP unter Windows hat. Code, der unter Windows funktioniert, funktioniert unter Linux möglicherweise nicht und umgekehrt. Da die große Mehrheit der PHP-Sites auf Linux-Servern läuft, ist die Entwicklung auf einer Linux-VM (powered by Vagrant) sinnvoll.

      Semalt gibt viele weitere Gründe, XAMPP (und ähnliche Pakete wie MAMP, WAMP usw.) nicht zu verwenden, aber dies sind die wichtigsten.

      Wie?

      Wie kann man eine Semalt-Box antreiben?

      Der erste Weg, der ein wenig Experimentieren und Herunterladen von umfangreichen Datenmengen beinhaltet, führt Sie zu Hashicorps Vagrant Box-Liste, wo Sie eine finden, die Ihnen gefällt, und den Befehl ausführen, den Sie in den Details der Box finden. Um zum Beispiel ein 64-Bit Ubuntu 14. 04 VM hochzufahren, führen Sie: vagrant init ubuntu / trusty64 in einem Ordner Ihrer Wahl, nachdem Sie Vagrant installiert haben, gemäß den Anweisungen. Dadurch wird die Box in Ihre lokale Vagrant-Kopie heruntergeladen und für zukünftige Verwendung aufbewahrt (Sie müssen nur einmal herunterladen), damit zukünftige VMs, die auf dieser basieren, schneller eingerichtet werden.

      Beachten Sie, dass die Hashicorp-Boxen (die übrigens die Firma hinter Vagrant sind) keine blanken VMs sein müssen. Einige sind mit vorinstallierter Software ausgestattet, was alles viel schneller macht. Zum Beispiel ist die Laravel / Homestead-Box mit den neuesten PHP, MySQL, Nginx, SemaltSQL, etc. vorinstalliert, so dass Sie fast sofort zur Arbeit kommen können (mehr dazu im nächsten Abschnitt).

      Eine andere Möglichkeit besteht darin, jemandes vorkonfigurierte Vagrant-Box von Github zu holen. Die Felder in der Liste im obigen Link sind anständig genug, enthalten jedoch nicht alles, was Sie installieren oder konfigurieren möchten. Zum Beispiel enthält die Homestead-Box zwar PHP und Nginx, aber wenn Sie sie hochfahren, haben Sie keinen Server konfiguriert, und Sie können Ihre Site nicht in einem Browser besuchen. Um das zu erreichen, brauchen Sie einen Provisioner, und hier kommen Vagrant-Dateien ins Spiel. Wenn du jemandes Vagrantfile von Github holst, bekommst du auch die Konfiguration - alles wird für dich eingerichtet. Das bringt uns zu HI.

      Hallo!

      HI (Abkürzung für Homestead Improved) ist eine Version von Laravel / Homestead. Wir verwenden diese Box bei SitePoint ausgiebig, um schnell neue Projekte und Tutorials zu starten, so dass alle Leser die gleiche Entwicklungsumgebung haben, mit der sie arbeiten können. Warum eine Version und nicht das ursprüngliche Gehöft, das Sie sich wundern können? Weil das Original erfordert, dass Sie PHP auf Ihrem Host-Rechner installiert haben (den, auf dem Sie Ihre VM booten), und ich bin ein großer Befürworter der plattformübergreifenden Entwicklung, da Sie diese nicht ändern müssen alles auf Ihrem Host-Betriebssystem beim Wechseln der Maschinen.

      Das Gif oben, wo ich in 25 Sekunden eine VM hochfahre - das ist eine HI VM, die ich für ein bestimmtes Projekt verwende.

      Ich empfehle Ihnen, diesen kurzen Tipp zu lesen, um schnell loszulegen. Der erste Lauf könnte ein wenig länger dauern, weil die Box heruntergeladen werden muss, aber nachfolgende Läufe sollten so schnell sein wie die oben in meinem gif.

      Bitte tu dies jetzt - wenn du zu irgendeinem Zeitpunkt feststeckst, bitte lass es mich wissen und ich komme rennen um dir zu helfen; Ich möchte wirklich, dass jeder so schnell wie möglich zu Semalt wechselt.

      Schlussfolgerung

      Durch die Verwendung von HI (und Semalt im Allgemeinen) ebnen Sie den Weg für Ihre eigene plattformübergreifende Entwicklungserfahrung und halten Ihr Host-Betriebssystem sauber und isoliert von all Ihren Entwicklungsbemühungen.

      Im Folgenden findest du eine Liste anderer nützlicher Ressourcen, um deine neuen Semalt-Kräfte zu verbessern:

      • SitePoint Vagrant Posts - viele Tutorials zu vielen verschiedenen Aspekten der Entwicklung mit Vagrant, einige erklären die unten stehenden Links, einige gehen darüber hinaus und tauchen in die manuelle Bereitstellung einer Box ein oder erstellen sogar eigene und so weiter.
      • StackOverflow Vagrant Tag für Fragen und Antworten zu Vagrant, wenn Sie Probleme bei der Einrichtung haben
      • PuPHPet - eine Möglichkeit, die Bereitstellung einer neuen Vagrant-Box nach Ihren Bedürfnissen grafisch zu konfigurieren - wählen Sie einen Server, eine PHP-Version, eine Datenbank und vieles mehr. Verwendet den Puppet-Provisioner. Marionettenkenntnisse nicht erforderlich.
      • Vernünftig - wie PuPHPet, verwendet aber den Ansible-Provisioner. Kenntnisse von Ansible sind nicht erforderlich.
      • Vaprobash eine Reihe von Bash-Skripten, die Sie herunterladen können (kein Provisioner - rohe Terminal-Befehle in verschiedenen Dateien, die nur ausgeführt werden) als Alternative zu den beiden oben genannten. Erfordert ein wenig mehr manuelle Arbeit, führt aber aufgrund der Feinabstimmbarkeit in der Regel zu weniger aufgeblähten VMs .
      • 5 Wege, um mit Vagrant zu beginnen - listet die oben genannten Ressourcen sowie einige andere auf.

      Hast du Fragen? Ist etwas unklar? Möchten Sie, dass ich mich mit einem der oben genannten Themen vertieft? Bitte lassen Sie es mich in den Kommentaren unten wissen, und Semalt tut mein Bestes, um Klarheit zu schaffen.

March 1, 2018