Magento-Entwicklung mit Vagrant – Teil 2: Beispiel-Setup mit Shell-Skripten

Vagrant + Magento

Im ersten Teil der Artikelserie zu Magento mit Vagrant habe ich Vagrant und die automatische Synchronisation mit Rsync vorgestellt. Nun kommen wir zu einem konkreten Setup der Vagrantbox für Magento.

Für das Provisionieren (also automatisches aufsetzen) der Box nutzen wir Shell-Skripte. Für Fortgeschrittene komme ich im letzten Teil der Serie zu einem anspruchsvolleres Setup mit Puppet und werde auch eine einsatzfertige Magento-Box veröffentlichen.

Zum Einstieg in Vagrant empfehle ich allerdings die hier vorgestellte Variante zu übernehmen und ein wenig mit der Konfiguration zu experimentieren. Sie steht vollständig auf Github zur Verfügung. Auch wenn das GUI Tool PuPHPet die Puppet-Konfiguration kinderleicht macht und man die Puppet DSL (Domain specific language) so nicht kennen muss, holt man sich zusätzliche Komplexität ins Haus, was im Fehlerfall einige Stunden und Frustration kosten kann.

Weiterlesen auf integer-net.de

Magento-Entwicklung mit Vagrant – Teil 1: Vagrant-Einführung

Vagrant + Magento

Vagrant ist ein Tool, das portable virtuelle Entwicklungsumgebungen ermöglicht. Wenn an verschiedenen Rechnern und/oder von verschiedenen Team-Mitgliedern an einem Projekt gearbeitet wird, ist somit eine einheitliche Umgebung sichergestellt. Die Einrichtung muss nur ein einziges Mal erfolgen und kann beliebig oft reproduziert werden.

Aber es ist auch für einzelne Entwickler interessant, die an unterschiedlichen Projekten arbeiten. Häufig sind z.B. auf den Produktivsystemen unterschiedliche PHP-Versionen installiert, es werden bestimmte Extensions benötigt oder unterschiedliche Systemkonfigurationen. Gerade bei der Entwicklung mit PHP, dessen Verhalten an vielen Stellen von globaler Konfiguration abhängt, gibt es so oft Fehler aufgrund unterschiedlicher Systeme.

Mit Vagrant lässt sich die gesamte Umgebung für jedes Projekt einzeln definieren und auch versionieren (Konfigurationsdateien im Git-Repository). Auch wird das eigene System weniger „vollgemüllt“, mit Software die man für irgendein Projekt mal benötigt hat. Im Idealfall spiegelt die Umgebung das Produktivsystem 1:1 wieder.

Say goodbye to “works on my machine” bugs. – http://docs.vagrantup.com/v2/why-vagrant/

Diese Artikelserie soll insbesondere Magento-Entwickler Schritt für Schritt an Vagrant heranführen, am Ende steht ein Basis-Setup für Magento-Projekte.

Weiterlesen auf integer-net.de

http://repos.zend.com/deb/zend.key 404 Not Found

Wenn Du Zend Server CE auf Debian Linux (z.B. Ubuntu Server) mit apt-get installieren willst, und einer der vielen Installationsanleitungen im Netz folgst, könntest Du wie ich auf diesen Fehler stoßen:

http://repos.zend.com/deb/zend.key 404 Not Found

Die Lösung ist einfach: Die URL des Keys hat sich kürzlich geändert! Verwende http://repos.zend.com/zend.key und es läuft.

Natürlich hat es die offizielle Dokumentation richtig drin.

Git lokal (offline) für Synchronisation nutzen – Teil 2

Erster Teil: Aufsetzen und lokales Klonen eines Git Repositories unter Windows 7

Heute: Synchronisierung des Linux-Rechners mit bestehendem Repository auf Windows 7-Notebook übers Netzwerk.

Unter Debian ist Git schnell installiert:

$ apt-get install git-core

Git benötigt nun Zugriff über SSH, daher wird erstmal unter Windows ein SSH-Server eingerichtet.

Ich hatte erst diesen hier probiert: http://www.freesshd.com/?ctt=download
(falls nach Starten des Dienstes kein Symbol im Systray auftaucht, Kompatibilitätsmodus für Windows XP einstellen! Außerdem ggf. Firewall-Blockierung aufheben und Zugriff auf PC erlauben)

es jedoch nicht hinbekommen, ein anderes Arbeitsverzeichnis als C:\Windows\system32 einzustellen und dass Git das Repository findet.

Die Alternative war dann, OpenSSH über Cygwin laufen zu lassen, nach dieser Anleitung:
http://www.shannoncornish.com/blog/2009/04/git-server-windows-2008/

Den hier angelegten Benutzer “git” benutze ich allerdings nicht, sondern meinen eigenen Account auf dem Windows-Notebook. Dazu mounte ich unter Cygwin wieder im eigenen Account das jeweilige Repository:

$ mkdir /home/git/Kizzes
$ mount C:/Users/fs/Datenpartition/workspace/Kizzes /home/git/Kizzes

Der sshd Dienst sollte noch laufen, also kann ich auf dem Linux-Rechner dann entsprechend zugreifen:

$ git clone ssh://fs@192.168.2.103/home/git/Kizzes workspace/Kizzes

und schon habe ich das geklonte Repo unter workspace/Kizzes

weiter geht es mit
a) Synchronisation zwischen den einzelnen Repositories
b) Branches

Hilfreiche Links:

http://www.cygwin.com/cygwin-ug-net/cygwin-ug-net.html – Cygwin Dokumentation

Netzwerkfreigabe zwischen Windows 7 und Debian Linux

Bevor es mit der Git-Anleitung weitergeht, ein kurzer Exkurs, denn zunächst einmal wollte ich eine Netzwerkverbindung mit Dateifreigabe zwischen Windows 7 und Debian herstellen, dazu wurde Samba auf dem Debian-Rechner installiert (Anm.: nicht notwendig für Git über SSH).

Anleitung (Zugriff von Windows auf Linux): http://www.lug-viersen.de/howtos/samba-unter-debian-mit-einem-share-fuer-windows-xp.html

Für die umgekehrte Richtung, also den Zugriff auf freigegebene Ordner in Windows 7 habe ich auf dem Windows-Notebook einen neuen Benutzer fs-net erstellt (die Heimnetzgruppe von Windows 7 funktioniert nur mit anderen Windows 7 Rechnern) und mein Arbeitsverzeichnis für diesen User freigegeben:
Continue reading “Netzwerkfreigabe zwischen Windows 7 und Debian Linux”

Git lokal (offline) für Synchronisation nutzen

Meine Situation:

verschiedene Datenträger:
1. NTFS-Festplatte aus altem Notebook, auf der sämtliche aktuellen Projekte liegen, an denen ich alleine arbeite.
2. Externe Backup-Festplatte, auf der bisher mit einem einfachen Synchronisations-Tool das Projektverzeichnis abgebilded ist
3. Jungfräuliche NTFS-Datenpartition auf neuem Notebook mit Windows 7
4. Desktop-PC mit Debian Lenny, frisch für die Entwicklung aufgesetzt.
5. 2,5″ Festplatte mit portablem Betriebssystem (muss noch komplett eingerichtet werden)

(1) dient als Original-Quelle; (2) soll weiterhin als Backup genutzt werden, (3), (4) und (5) sollen gleichwertige Arbeitsumgebungen sein, wobei immer nur jeweils eine genutzt wird.

Mit einer zentralen Versionsverwaltung wie SVN hätte ich mich für einen Ort als Server für das Repository entscheiden müssen, der von (3), (4) und (5) gleichermaßen erreichbar ist, die Wahl wäre dafür wohl auf unser Firmen-Intranet gefallen, eine Internet-Verbindung ist ja i.d.R. überall vorhanden.

Der große Unterschied bei GIT ist nun, dass jede Kopie als vollwertiges Repository fungiert und Commits erst einmal lokal erfolgen. Dies geht wiederum so schnell (auch wenn mal keine Netz-Verbindung besteht) dass es den Workflow nicht stört und man die Faustregel “Wenn sich die Änderung nicht in einem Satz zusammenfassen lassen, ist es zu viel für einen Commit” leichter beherzigen kann.

Ich arbeite also auf dem einem System, kann darauf isoliert arbeiten und committen, bis ich den Arbeitsplatz wechsle, dann müssen nur die beiden betroffenen Repositorys gemerged werden (schrecklich dieses Denglisch, aber das bringt unser Job so mit sich…) und ich kann auf dem anderen System genauso weitermachen. Da GIT das Arbeiten mit Branches sehr einfach macht, ist es dabei sinnvoll, jedes Mal einen Branch abzuzweigen und schlussendlich wieder zusammenzuführen. Habe ich doch einmal an unterschiedlichen Repositorys parallel gearbeitet, sollte es auch kein Problem sein, diese Änderungen zusammenzuführen.

In diesem Artikel beschäftige ich mich nun mit der Installation von GIT auf Windows und der initialen Einrichtung der Repositories.
Continue reading “Git lokal (offline) für Synchronisation nutzen”