Es klingt sehr viel komplizierter als es man Ende ist. Das Wichtigste ist es erst einmal XDebug auf der VM zu installieren. Ich habe da PHP7.1 und es erklärt sich an sich von selbst:
apt-get install php7.1-xdebug
Danach muss die /etc/php/7.1/mods-available/xdebug.ini bearbeitet werden. Wenn man nun davon ausgeht, dass die VM mit VirtualBox und einem Host-only Netzwerk in den Standard Einstellungen läuft ist der Host 192.168.56.1 . Die Datei sieht dann also so aus:
Bei mit zeigt shopware.localhost auf die VM und auf eine Shopware-Installation. Einen Breakpoint habe ich ganz an den Anfang von der shopware.php gesetzt.
Im Firefox verwendet ich das Addons Xdebug Session Cookie. PHPStorm hört auf Port 9000 nach Debug-Verbindungen. Wenn man nun shopware.localhost aufruft und das Addon aktiviert, wird auch sofort in PHPStorm dieses erkannt und er stoppt beim ersten Breakpoint, den man gesetzt hat.
Ist also in wenigen Minuten machbar, das für seine lokale Umgebung einzurichten.
Etwas komplexer ist es mit SSH und Portweiterleitungen, was aber ermöglicht ganz sicher ein Live- oder Staging-System zu debuggen und man muss nicht auf dem Server mit VI und echo/var_dump arbeiten, um heraus zu finden warum es zwar lokal super lief, aber nicht auf dem Server, obwohl die an sich total gleich sind. Kennt jeder.. oder?
Ich und NAS war immer ein schwieriges Thema. Eines von Buffalo mit 1TB Festplatte war mir viel zu laut. Ich habe die Festplatte dann in meinen PC eingebaut und den Rest des NAS entsorgt. Die NAS-Funktion der Fritzbox war ganz nett aber ich wollte keine Festplatte unter dem Schrank im Wohnzimmer haben. In der Wohnung war leider der Telefonanschluss nicht mit Arbeitszimmer und unter dem Bücherschrank war es immer extrem staubig. Also es dann mit dem Haus begann und ich die Idee hatte mit IP-Kameras den Gartenbereich zu überwachen, wurde das Thema NAS wieder aktuell. Ich hatte mir da verschiedene Lösungen überlegt:
- Billiger 19" Server
- Billiger HP Micro-Server
- ein NAS
- ein Rasberry Pi mit USB-Festplatte
Ich bestellte mir ein günstiges NAS aus China. Dieses mal eines, wo die Festplatte austauschbar war und das etwas mehr nach einem NAS aussah. Die UI war auch sehr viel besser als bei dem Buffalo NAS. Aber es war wirklich sehr laut (allein der Lüfter) und so wirklich toll fühlte es auch nicht an. Man merkte einfach den Preis und Updates und Patches konnte man da auch nicht erwarten.
Gehen wir ein paar Jahre zurück. Ich weiß nicht mehr wie ich darauf gekommen bin, aber irgendwann fand ich heraus, dass man bestimmte QNAP NAS als VM-Hosts verwenden konnte. Diese waren nicht günstig, aber brauchten an sich alles mit was eine kleine Firma brauchte.
Vor so 4 Jahren kam es dann dazu, dass ich um Hilfe bei einer kleineren Firma gebieten wurde. Da schien ein QNAP-NAS perfekt zu passen. Die brauchten eben nur zentralen Speicher und Dinge wie eine zentrale Groupware, die nicht in der Cloud lief (wegen Datenschutzbedenken). Verbindung per VPN, um auf die Groupware zugreifen zu können, wäre nicht wirklich das Problem gewesen.
Damals hätte so ein NAS ca. 2000 Euro gekostet, das genug Festplatten- und Arbeitsspeicher für den Zweck gehabt hätte. Das war dann für die kleine Firma zu viel.
Dezember 2017. 10 PCs ein Server. Domain-Controller. Zentraler Speicher. Zuerst dachte ich man könnte eine VM mit Samba als Domain-Controller nutzen und auf so einem NAS laufen lassen, bis ich heraus fand, dass diese Größe von NAS's sogar einen entsprechenden Service schon mit brachte. Die Preise waren auch in der Zeit stark gefallen. Ein passendes NAS mit 2x 3GB und 4GB RAM kostete gerade mal etwas über 600 Euro. Bezahlbar und alles in einem.
Auch ganz praktisch an einer QNAP TS-253A ist auch die Größe, die ohne Probleme auf dem Boden eines 19" Schranks platz findet. USB 3.0, 2x 1GBit LAN, RAID.. Microphone-Anschlüsse für Karaoke (ohne wäre teurer gewesen).
Das NAS wurde gekauft und ich hatte endlich mal die Möglichkeit mit so einem System zu arbeiten. Fazit: Toll! UI ist super zu bedienen. Es ist leise und schnell. Netzwerkfreigaben
funktionieren natürlich sofort und problemlos. Der Domain-Controller funktionierte auch sofort, wobei ich etwas mit den Logon-Scripten zu kämpfen hatte bis die liefen. Man durfte kein ".bat" hinter schreiben. Der Rest ist wirklich einfach. Eine Domain anlegen, einen Domain-Admin anlegen ,paar Benutzer und es kann los gehen. PC mit Hilfe des Admin-Kontos in die Domain aufnehmen. Neustart und sich mit einem der Benutzer anmelden. Läuft und bringt kleinen Firmen sehr viel mehr Kontrolle (als PCs wo jeder als Admin drauf arbeitet).
Das Geld für eine TS-253A wollte ich privat dann doch nicht ausgeben. Aber es gibt günstigere gebrauchte NAS von QNAP wie die TS-120. Dieses hat nur einen HDD-Slot und einen 1GBit LAN-Anschluss. Aber auch USB 3.0 und sogar E-SATA. Als CPU ist eine ARM-CPU und keine x86 von Intel verbaut. Deswegen hat es wohl auch keine VM-Host Funktion, wobei es auch beim RAM eng werden würde. Leider fehlt da auch der Domain-Controller, den ich sonst doch gerne gehabt hätte.
Wenn man sich aber mal durch die Funktionen und Zusatzdienste der dort installierten QTS-Version klickt, merkt man schnell, dass QNAP ein NAS auch eher als sehr kompakten Server sieht, als eine Festplatte mit LAN-Anschluss. QTS ist dabei ein wirkliches tolles System, dass schnell ist und trotz den ganzen Funktionen auch für denen übersichtlich erscheint, der vorher noch nie mit QTS zu tun hatte.
Auf dem Startbildschirm sind schon verschiedene Dienste wie ein eigens kleines Cloud-Storage-System zu sehen.
Ich zeige hier mein paar Dienste, die wirklich praktisch sein können (ich aber auch nicht nicht wirklich verwendet habe). Wie oben schon erwähnt, fehlt mir etwas der Domain-Controller.
Eine ActiveDirector/Domain Integration als Client ist aber möglich, so dass man die Benutzer einer Windows Domain direkt im NAS nutzen kann und nicht alles doppelt pflegen muss. Aber es gibt auch einen LDAP-Server. Wie weit man damit kommt, habe ich noch nicht getestet, werde ich aber in den nächsten Monaten wohl mal ausprobieren.
Wenn man eine einfache Groupware oder ein Wiki im Intranet laufen lassen möchte, braucht man an sich auch keine VMs. Denn das NAS bringt einen WebServer (sieht wie ein Apache aus), einen MySQL-Server und PHP mit. Ein Media-Wiki kann man auch sich direkt so als "App" installieren. Der Fall von vor 4 Jahren hätte sich also auch so lösen lassen ohne VM.
Wer eine Java-Lösung einer PHP-Lösung vorzieht hat Glück, denn es kann sogar ein Tomcat installiert werden. Es fehlt node.js, aber mit Apache + PHP und Tomcat sollte 90% aller Webanwendungen darauf laufen lassen können.
Performance... da würde ich nicht zu viel erwarten, aber sicher ist es für eine Firma mit so 10-15 Mitarbeitern, die dort Emails (Roundcube) checken und ihre Termine und Aufgaben verwalten ausreichend schnell. Mit DynDNS/fester IP und Port-Forwarding oder VPN, hat man eine kleine unbahängige Lösung. Ein VServer zu mieten ist aber da doch vielleicht die bessere Lösung, wenn man von extern Zugreifen möchte und keine wiederkehrenden Probleme mit Verbindungsausfällen der Internetverbindung hat.
Wegen den IP-Kameras überlege ich nochmal zu prüfen, ob die nicht die vom NAS mitgelieferte Lösung verwenden sollte. Ich müsste nochmal prüfen ob meine Kamera damit kompatibel ist und wie teuer kompatible Lösungen sind. Weil direkt die Kamera über das NAS steuern zu können ist natürlich sehr viel schöner, als nur eine Kamera per FTP Bilder und Videos auf einem NAS ablegen zu lassen. Da wäre wohl keine Lösung mit dabei Videos die älter als 1 Woche sind automatisch löschen zu lassen und ähnliches.
Auch wollte ich noch mal Testen, ob ich eine Festplatte einfach per E-SATA anschließen kann und diese wie die interne dann verwaltet wird. Eine externe für Backups wäre nett, aber ich hätte doch gerne die Option mehr Festplatten nachrüsten zu können. QNAP bietet hier leider keine Erweiterungen an wie beim TS-253A an.
Am Ende ist QNAP zwar teurer als einfache NAS-Systeme, bietet aber auch ein sehr stabiles System mit vielen Funktionen und kann in kleineren Firmen ohne Probleme einen klassischen Server ersetzen. Ein klassischer Server wäre dabei zu meist auch teurer. Die Geräte ab 300 Euro (nur das Gehäuse) bieten schon wirklich und sind ihr Geld meinen kleinen Erfahrungen nach auch wert.
Leute die viel mit Video-Streaming arbeiten, sollten sich bestimmte Funktionen wie
DJ2 live mal ansehen. Bei Karaoke im kleinen Stil sollte man aber vielleicht doch erst einmal bei UltraStar bleiben.
Ich war bei Shopware von meinem eigenen Verhalten ausgegangen. Updates waren schnell und machten bis auf einen RC nie Probleme. Die produktiven verhielten sich immer genau so.
Da ich jetzt immer auf der aktuellsten Version entwickelte und dann für den Versions-Branch sagen konnte, ob es Probleme geben könnte oder nicht, habe ich auch den Support einer Plugins irgendwann daran orientiert und z.B. den 5.2er Branch nicht mehr unterstützt. Ich war mir sicher, dass das Meiste da laufen würde, aber ich hatte keine Test-Umgebung für 5.2.x und ging davon aus, dass nach einem halben Jahr wohl die meisten auf die aktuellste Version geupdatet hätten.
Falsch! Es wird noch z.B. 5.2.21 verwendet und braucht neue Plugins. Interessant wäre hier mal, welche Versionen von Shopware wie weit noch verbreitet sind, damit man abschätzen kann, ob es sich lohnt noch dafür zu entwickeln.
Nun habe ich in meiner Shopware VM folgende Versionen installiert, um ausreichend Testen zu können:
- 5.2.21
- 5.2.27
- 5.3.7
- 5.4.2
Damit sollten sich alle wichtigen Versionen abdecken lassen und wenn jemand mit einer anderen Version Probleme hat, kann man das immer noch innerhalb von 15min installieren und dann mit der konkreten Version testen.
Ich habe also jetzt angefangen, meine Plugins nochmal mit alten Versionen zu testen und auch dann dafür freizugeben.
Und wenn man sich Shop mit Oxid 4.3, XTC 3.x oder manche noch anderen Lösungen anguckt, wäre selbst die erste 5.2er Version als Alt zu bezeichnen nicht ganz richtig. Die Shopware-Welt ist exxtrem schnelllebig.
<Directory "/var/www/shopware">
Options Indexes FollowSymlinks MultiViews
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
Um unseren Shopware-Server aufzusetzen brauchen wir
- Apache (mit php7.0-mod)
- PHP7 (common,mysql,gd,xml,json,xsl,intl,gettext,mbstring,zip)
- MySQL Server
- OpenSSH Server
- PHPMyAdmin (wichtig hier Apache2 auszuwählen.. also mit Sternchen sichtbar nicht nur makiert)
Dann folgt die conf für den Apache und der Eintrag in die Host-Datei.
Jetzt können wir Shopware downloaden und installieren
Nun folgt die Netzwerk Konfiguration mit VirtualBox und die Anpassungen der hosts-Datei unter Windows.
Am Ende können wir mit dem Browser auf Shopware und mit WinSCP auf das System und das Shopware-Verzeichnis zugreifen.
So können wir unser lokalen Plugin-Verzeichnis mit dem auf dem Server synchron halten und Änderungen werden automatisch auf den Server gepusht.
Toll fand ich, dass man während des Freigabeprozesses wirklich mit Menschen zu tun hatte und einem auch wirklich von sich aus geholfen wurde.
Meine Erfahrungen beim Mozilla Store für Firefox OS waren da ganz anders. Da erhielt man eine Email mit sehr allgemeinen Punkten gegen was man verstoßen hätte und Hilfe was man noch müssen für die Freigabe gab es so gar nicht.
Deswegen werde ich mich dann jetzt daran machen weitere Plugins zu schreiben und zu veröffentlichen.
Erstmal Shopware mit Vagrant auf meiner Windows Workstation zum Laufen bekommen. Dann geht es sicher alles noch schneller und einfacher.
Oder ich richtige mir doch eine eigene Ubuntu VM ein... mal gucken.
Gerade in Firmennetzwerken kann man nicht immer wie man gerade will eine VM ins Netzwerk hängen. Oft hat man aber Bedarf an einer VM. Gerade wenn man auf Windows entwickelt und am Ende auf Linux deployen soll, ist es immer gut eine Linux-VM zur Hand zu haben, um schnell selbst testen zu können, ob da noch alles läuft.
Auch fertige VMs wie die von Oracle mit einer fertig installierten Datenbank sind wirklich praktisch und können in vielen Situationen helfen.
Um jetzt aber einen eigenen Server in VM zu betreiben, von dem man vom Host aus zugreifen kann, aber kein anderer Rechner im Netzwerk diesen Server sehen kann, kann man in VirtualBox ein Host-only Netzwerk erstellen. Der Host ist Teil des Netzwerks, aber er Rest ist rein virtuell.
Beim einfachen Anlegen einer VM ist immer NAT voreingestellt.
Zuerst muss man das Host-only Netzwerk erstellen.
am Besten mit DHCP damit man sich nicht mit den IP-Adressen herum ärgern muss.
Danach die VM von "NAT" auf "Host-only" beim Netzwerkadapter umstellen.
Wenn man nun die VM wieder startet sieht man schon dass die IP sich geändert hat
Was haben PHP und Java gemeinsam? Deren unterste Schicht der VM/Engine ist in C geschrieben. Aber was interessiert die VM oder Engine? Irgendwann kommt man an den Punkt wo man Performance-Probleme hat und dann muss man verstehen warum etwas Langsam ist. Die Frage dann sollte auch nicht lauten: "Wie bekomme ich die Anwendung schnell?" Sondern eher: "Wie habe ich sie langsam bekommen?" Denn erstmal muss man die Gründe kennen, um dann Lösungen zu finden. Lösungen sind nicht immer so einfach zu finden, weil manche Dinge sind einfach langsam und manchmal muss man sein ganzes Vorgehen ändern. Assoc-Arrays sind toll, aber es sind eigentlich keine Array sondern Hash-Maps und die sind nun mal nicht ganz so performant.
Aber warum das so ist und warum die in PHP7 viel besser implementiert sind, erschließt sich aber nicht einfach so, wenn man nicht weiß, wie die Engine arbeitet. Auch einen Garbage-Collector gibt es in PHP, der genau wie in Java zu 98% super läuft. Aber wenn er Probleme macht, muss man wissen wie er arbeitet um ansatzweise überhaupt das Problem zu verstehen. Zirkel bei Referenzen sind ein großes Problem, wenn er die Objekte zum freigeben markieren will. Reference-Count gibt es auch dort.
Jedem der sich auch für die Interna der Zend Engine 5.x und 7 interessiert und sich etwas über Performance informieren möchte kann ich diese Artikel empfehlen:
Heute mußte ich eine VirtualBox VM mit Oracle Linux 5.5 (Developers Day Variante) anpassen. Die Partition mit dem Home-Verzeichnis war voll und mußte angepasst werden.
Also erstmal über den Manager für die Laufwerke eine Kopie als VDI erzeugt. Dauert .. geht aber gut.
Dann aus dem VirtualBox Verzeichnis heraus die neue Größe setzen:
vboxmanage "c:\.....\disk2.vdi" --resize 20000
Also auf 20GB vergrößert.
Nun muss nur noch die Partition angepasst werden. Nach einige Versuchen und googeln habe ich diese Anleitung gefunden:
GParted lief bei mir in der 0.17.0-4 Version. Eine aktuelle wollte nicht starten. Aber damit ging es leicht.
Erstmal eine neue VM mit der ISO und der disk2.vdi erstellt. Dann starten und alles so lassen wie vorgeschlagen. Resize wählen. Per Drag and Drop die Größe anpassen und dann auf "apply" drücken. Warten.
VM ausschalten und die Oracle Linux VM wieder starten. Alles super!
Blog-entries by search-pattern/Tags:
Möchtest Du AdSense-Werbung erlauben und mir damit helfen die laufenden Kosten des Blogs tragen zu können?