Derzeit ist meine Entwicklungsumgebung Ubuntu v12.04 mit VMWare. Ich arbeite vollständig innerhalb der VM mit vollständiger GUI und verwende die Samba-Dateifreigabe in Ubuntu nur, wenn ich von meinem Host-Betriebssystem Windows 7 auf die Dateien zugreifen muss. Normalerweise greife ich über die interne IP der auf ein Netzwerklaufwerk zu und ordne es zu VM über NAT für die Vernetzung mit der VM. Die Verwendung anderer Lösungen erwies sich als viel langsamer als die Verwendung von freigegebenen Ordnern von VMWare. Ich habe dies in meinen VMWare-Image-Einstellungen deaktiviert. Ich installiere jedoch VMWare-Tools, um einfaches Kopieren / Pasta auf meinen Host-Computer und umgekehrt zu ermöglichen.
Wie Matthias Zeis betonte, sollten Sie bei der Auswahl der Netzwerk- / freigegebenen Ordner mit Ihrer VM vorsichtig sein, da sich einige als problematisch erweisen.
Ich war vorheriger Benutzer von VirtualBox, fand VMWare jedoch stabiler und performanter (zumindest für mich). Ich würde jedoch Ihre eigenen Tests durchführen, um Ihren Bedürfnissen und Anforderungen am besten zu entsprechen, d. H. Vagrant benutzt VirtualBox.
IDE:
Ich habe Netbeans ziemlich häufig als IDE meiner Wahl verwendet, bin aber seitdem zu einer leichteren Lösung als Sublime Text 2 übergegangen . Ich werde Netbeans selten öffnen, da dies hauptsächlich für X-Debug-Zwecke und einfacheres Refactoring gedacht ist. Netbeans, PHPStorm, Eclipse usw. sind alle Java-basierte IDEs und können sehr ressourcenintensiv sein.
HARDWARE:
Um mehr hinzuzufügen, wird Hardware (offensichtlich) immer eine Schlüsselrolle bei der Leistung spielen. Wenn Ihre Entwickler immer noch Plattenteller-Festplatten verwenden, würde ich versuchen, für sie in SSD zu investieren. Da Magento eine sehr große Anzahl von Dateien / Ordnern enthält, wird die Leistung der Entwickler erheblich gesteigert. Während der Entwicklung: Bei deaktiviertem Caching und beim einfachen Durchlaufen des Ordnerbaums in SVN / GIT oder Ihrer IDE. Genauso wichtig ist es, Ihrer VM genügend Arbeitsspeicher zur Verfügung zu stellen.
Mein Hostcomputer: Samsung SSD 512 GB Speicherplatz, Win7 (64 Bit), 8 GB RAM, i7 2,4 GHz (8 Kerne)
Meine VM-Maschine: Samsung SSD, 30 GB Festplattenspeicher, Ubuntu 12.04 (32 Bit), 3 GB RAM, i7 (4 zugewiesene Kerne).
FRAGEN:
Die größte Frage ist, ein Developer VM-Image zu erstellen, das kompakt und über mehrere Projekte hinweg wiederverwendbar ist, oder ein Image pro Projekt zu erstellen. Früher habe ich versucht, kleinere VMs pro Projekt zu erstellen. Die ständige Neukonfiguration für meinen Entwicklungsworkflow war jedoch zu aufwändig. Verwenden Sie jetzt eine größere VM und versuchen Sie, jedes Projekt so isoliert wie möglich zu halten.
Das Verwalten von Betriebssystem, IDE, LAMP-Stack, Updates / Konfigurationen usw. kann zu einer Aufgabe werden, wenn mehrere VMs pro Projekt als Route ausgewählt werden. Dies führt letztendlich zu einer längeren Entwicklungszeit (und noch schlimmer zu einer nicht abrechenbaren Zeit für die Einrichtung der lokalen Umgebung).
Dies hat sich auch als hilfreich erwiesen, da ich schnell auf andere Projektdateien zugreifen konnte, ohne eine neue VM öffnen und meine Host-Hardware noch weiter ausbauen zu müssen. Der Nachteil ist, dass ich im Idealfall möchte, dass jedes Projekt von anderen Projekten getrennt wird, um unvorhergesehene Probleme mit der Umgebung (z. B. php.ini, my.cnf, httpd.conf usw.) zu vermeiden. Bisher erwies sich der Kompromiss, alle Projekte leicht zugänglich zu haben, als einfallsreicher.
Auch dies hängt von Ihren Anforderungen und Bedürfnissen ab. Bewerten Sie diese daher vorab.
FEEDBACK:
Was zu Feedback führt. Holen Sie sich so viel Input wie möglich von Ihren Entwicklern. Letztendlich müssen ihre Anforderungen erfüllt und ihre Probleme verstanden werden, bevor eine angemessene Lösung gefunden und umgesetzt werden kann. Jeder hat unterschiedliche Workflows, und nicht jeder ist mit dem Betriebssystem, das Sie für die Entwicklung auswählen, zufrieden. Als Faustregel gilt, dass der Entwickler das Betriebssystem und die IDE auswählen kann, in denen er sich am wohlsten fühlt und mit denen er die beste Leistung erzielt. Selbst eine schlanke Linux-VM ohne Kopf kann sich für ihre Anforderungen als nützlich erweisen, kann jedoch offensichtlich dazu führen, dass die Ordner über das lokale Netzwerk zwischen dem Host und der VM gemeinsam genutzt werden.
PORTABILITÄT:
Ich habe auch mit der Idee gespielt, mein VM-Image auf so etwas wie Dropbox zu belassen, damit ich jederzeit problemlos darauf zugreifen kann. Da Dienste wie Dropbox Stück für Stück vergleichen, was gespeichert ist, schien es logisch, dass nur die Bits, die ich geändert habe, synchronisiert würden. Dies erwies sich jedoch als nicht der Fall, da ich glaube, dass dies mit der internen Speicherung der Image-Datei zusammenhängt, und ich würde den ganzen Tag / die ganze Nacht darauf warten, dass meine VM synchronisiert wird.
HINWEISE:
Je größer der der VM zugewiesene Speicherplatz ist, desto größer wird das Image. Beachten Sie dies, wenn Sie das Image an Ihre Entwickler verteilen. Das Laden Ihrer Projektdateien von vorne pro Projekt ist möglicherweise zu viel und ich überlasse es jedem Entwickler, diese einzurichten, nachdem sie das erstellte Image haben.
Ashley Schroder hat einen etwas älteren verwandten Artikel, der gut zu lesen ist, sowie einige der Kommentare von Fooman und Colin
Hoffentlich hilft dies bei der Einsicht in das aufgeführte Problem, Nr. 6.