Vagrant: Unsere Entwicklungsumgebung für Shopware
Zurück zum Blog

Vagrant: Unsere Entwicklungsumgebung für Shopware

Bei Keynet verwenden wir häufig Vagrant zum einfachen Konfigurieren und Verwalten von virtuellen Maschinen für unsere Entwicklungssysteme. Dies hat vor allem zwei Gründe: Jedes Projekt hat seine eigene Anforderungen bezüglich verwendetem Webserver (Apache, Nginx, …), verwendeter PHP-Version, und installierter Pakete. Vagrant eignet sich daher bestens zum Nachstellen des späteren Livesystems für die Entwicklung, um eventuelle Inkompatibilitäten und Abhängigkeiten rechtzeitig aufzuzeigen, und nicht erst am Tag des Liveschaltens vor dem Problem zu stehen.

Mit Vagrant erhalten zudem alle am Projekt beteiligten Entwickler eine gleich konfigurierte virtuelle Maschine, unabhängig vom verwendeten Rechner oder Betriebssystem. Somit sind Abhängigkeiten davon ausgeschlossen und falls Änderungen an der Konfiguration der virtuellen Maschine notwendig sind, erhalten diese alle Team-Mitglieder automatisch mit, da die Konfigurationsdateien in der Versionsverwaltung des jeweiligen Projektes gespeichert sind. Zusätzlich wird so die Einrichtungszeit für neue Projektmitarbeiter deutlich verkürzt.

Unsere Konfiguration

  • Vagrant

  • VirtualBox zum Betrieb der virtuellen Maschinen

  • Ansible als Konfigurator der virtuellen Maschine und zum Installieren der notwendigen Pakete.

  • VagrantManager, als GUI zur Verwaltung mehrerer virtueller Maschinen

  • Vagrant Hostsupdater-Plugin für automatische Einträge in der /etc/hosts-Datei, damit die lokal betriebene virtuelle Maschine unter der zukünftigen Domain erreichbar ist (notwendig für lizenzpflichtige Shopware-Plugins, die auf einen Domainnamen registriert sind).

  • Phansible, um schnell und einfach eine neue virtuelle Maschine zusammenzustellen.

  • Außerdem bietet PHPStorm seit Version 7 die Integration von Vagrant.

Vagrant & Shopware

Für Shopware-Projekte bietet Shopware bereits eine Grundkonfiguration und eine ausführliche Anleitung zur Verwendung mit PHPStorm an. Diese wurde von uns etwas abgeändert, um den etwas mühseligen FTP-Upload des Source Codes in die Virtuelle Maschine zu vermeiden. Stattdessen verwenden wir einen Synced Folder, um von der Virtuellen Maschine direkt auf Dateisystem des Host-Rechners zu verweisen. Außerdem haben wir uns einen Ansible-Task geschrieben, damit IonCube zur Decodierung lizenzpflichtiger Plugins automatisch installiert wird. Diesen Task stellen wir hier gerne zur Verfügung:

- name: download ioncube module
  get_url:
 url=http://downloads3.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz
    dest=~{{ ansible_ssh_user }}/ioncube_loaders_lin_x86-64.tar.gz
    force=no
- name: extract ioncube module files
  command: tar -zxvf ~{{ ansible_ssh_user }}/ioncube_loaders_lin_x86-64.tar.gz -C ~{{ ansible_ssh_user }}/
    creates=~{{ ansible_ssh_user }}/ioncube_loaders_lin_x86-64
- name: copy ioncube module to php module folder
  shell: cp ~{{ ansible_ssh_user }}/ioncube/ioncube_loader_lin_5.5.so /usr/lib/php5/20121212/ioncube_loader_lin_5.5.so && chmod 644 /usr/lib/php5/20121212/ioncube_loader_lin_5.5.so
    creates=/usr/lib/php5/20121212/ioncube_loader_lin_5.5.so
  sudo: yes
- name: add ioncube configs
  copy: src=ioncube.ini dest={{ item }} mode=0644
  with_items:
    - /etc/php5/apache2/conf.d/00-ioncube.ini
    - /etc/php5/cli/conf.d/00-ioncube.ini
  sudo: yes
  notify:
    - restart apache
Ansible Task für IconCube Installation

Auch wenn die Verwendung einer virtuellen Maschine gegenüber einem lokalen Entwicklungssystem (MAMP, XAMPP, …) anfänglich etwas gewöhnungsbedürftig ist und auch die Systemressourcen des Hostrechners stärker beanspruchen, so überwiegen doch die Vorteile - vor allem bei zunehmender Projektkomplexität und Größe des Projektteams.

Diesen Artikel teilen

Schreiben Sie den ersten Kommentar zu diesem Artikel

Ihr Kommentar

Bitte geben Sie Ihren Namen an
Bitte geben Sie eine E-Mail Adresse an
Bitte geben Sie eine Nachricht ein
Das Ergebnis ist nicht korrekt