2 Testumgebung einrichten
Sie installieren ein vollständiges Joomla!-Entwicklungssystem auf Ihrem Arbeitsrechner. Dort lässt sich nach Belieben experimentieren und testen, bevor Sie die fertige Website auf dem Live-Server des Webhosters aufspielen.
Nach dem sehr theoretischen Einstieg im Einleitungskapitel setzen Sie sich in diesem Teil des Buchs endlich vor den Rechner und richten sich eine vollständige Entwicklungsumgebung ein. Denn obwohl Ihre Joomla!-Website am Ende natürlich live im Internet auf den Servern Ihres Webhosters läuft, lohnen ein paar Trockenübungen auf dem heimischen oder Büro-PC. Damit lernen Sie das System besser kennen und probieren alles erst mal aus, bevor die ideale Konfiguration live eingestellt wird.
Einige Abschnitte dieses Kapitels sind optional, also nicht notwendig, um das Basissystem aufzusetzen und Joomla! so schnell wie möglich mit Inhalten zu befüllen. Diese Abschnitte, insbesondere gegen Ende des Kapitels, können Sie überspringen, um vielleicht später zu ihnen zurückzukehren, um Ihre Joomla!-Installation auszubauen. Dazu zählen beispielsweise sichere Datenbankverbindungen, saubere Testinstallationen oder auch verzwickte Konfigurationen, um Ihr lokales Entwicklungssystem von überall auf der Welt, auch vom Strand auf Gran Canaria, zu erreichen. Grundsätzlich sind aber nur die folgenden Schritte notwendig, die Sie nach einigem theoretischen Hintergrundwissen auf den folgenden Seiten nacheinander in Abschnitt 2.2 bis Abschnitt 2.4 durchspielen:
-
Serverumgebung installieren
-
Datenbank einrichten
-
Joomla! installieren
Am Ende dieses Kapitels sind Sie in der Lage, Entwicklungs- und Testumgebungen einzurichten, und verstehen, welche Technologien und Mechanismen hinter Webservern und Webapplikationen wie Content-Management-Systemen stecken.
Werfen Sie einen Blick auf die wichtigsten Begriffe, denen Sie in diesem Kapitel häufiger begegnen (siehe Tabelle 2.1):
Begriff | Erklärung |
---|---|
Entwicklungsumgebung | Joomla!-Umgebung, in der alles erlaubt ist: experimentieren, testen, entwickeln. Befindet sich meist auf dem persönlichen Arbeitsrechner. |
Testumgebung, Staging- Umgebung | Plattform, auf der alles, was in der Entwicklungsumgebung angetestet oder entwickelt wurde, gesammelt und auf Herz und Nieren geprüft wird. Dazu ist die Testumgebung technisch der Live-Umgebung so ähnlich wie möglich, damit es dort zu keinen unvorhergesehenen Überraschungen kommt. |
Produktionsumgebung, Live-Umgebung | angemieteter Webserver bei einem Webhoster, z. B. Root, Managed, Dedicated oder Shared Server; siehe auch Abschnitt 3.1, »Webhosting bestellen« |
Deployment | Vorgang der Bereitstellung von Inhalten oder Features auf der Live-Website |
Release | Sammlung von Inhalten und/oder Funktionalitätserweiterungen, auch Bugfixes, in einem Paket, das gesamtheitlich deployt wird |
Apache | der weltweit meistgenutzte Webserver, der die einzelnen Seiten einer Website ausliefert |
MySQL | das bekannteste Open-Source-Datenbank-System |
PHP | Webprogrammiersprache, in der Joomla! programmiert ist und die auf dem Apache Webserver ausgeführt wird |
JavaScript | Webprogrammiersprache, über die vornehmlich Frontend-Applikationen und Modifikationen am HTML-Dokument umgesetzt werden. In den letzten Jahren dient JavaScript aber auch der Entwicklung von komplexen Backend-Applikationen. |
XAMPP | Paket aller wichtigen Komponenten, die die Basis für die Joomla!-Website bilden: Webserver, Datenbank und PHP-Programmiersprache |
IP | Kurz für IP-Adresse, kurz für Internetprotokoll-Adresse; eine Zahlenkombination, die jedem ans Internet angeschlossenen Gerät (PC, Server, Tablet, Smartphone, Internationale Raumstation ISS) eine eindeutige Adresse zuweist. Diese Adresse ist für die Datenübertragung wichtig, wenn Sie z. B. im Web surfen und die Inhalte einer Webseite abrufen. |
Protokoll | Zwischen Computern im Internet festgelegte Übertragungsregeln. Das verwendete Protokoll steht am Anfang jeder URL, z. B. http für Standardwebsites, https für gesicherte Websites, ftp für Dateiübertragungen. |
Port | Kanalnummer, auf der Inhalte im Internet übertragen werden. Eine normale Website läuft z. B. auf Port 80. |
Virtualisierung | Ein Linux-System auf dem Windows-Rechner installieren? Die neueste Windows-Beta auf dem Mac ausprobieren? Virtuelle Maschinen erlauben es, auf Ihrem Rechner andere Computer, sogar ganze Server, zu simulieren. |
2.1 Umgebungen und Deployments
Sicher haben Sie sich schon bei einem Webhosting-Provider ein Paket gemietet, zusammen mit der Registrierung einer Domain Ihrer Wahl. Sie könnten jetzt sofort loslegen und dort Joomla! installieren – in vielen Webhosting-Umgebungen geht das sogar mit wenigen Mausklicks. Bei diesen Systemen sollten Sie sich allerdings vergewissern, was da alles eingerichtet wurde. In der Regel fahren Sie mit einer eigenen Installation sicherer, da Sie die Konfiguration genau kennen.
Doch ein Entwicklungsstart in Ihrem Webspace ist heikel, denn Sie arbeiten dann stets an der Live-Version Ihrer Website, quasi eine Operation am offenen Herzen. Verirrt sich jetzt ein Internetbesucher auf Ihre Website, findet er sie halb fertig, vielleicht sogar nicht funktionsfähig vor.
Um dieses Problem zu vermeiden, arbeitet man bei der Websiteentwicklung in verschiedenen Umgebungen, die zu bestimmten Terminen und Milestones miteinander synchronisiert werden. Ein solcher Milestone ist z. B. die Fertigstellung der Website und die Bereitstellung einer größeren Artikelsammlung zu einem bestimmten Thema. Das Freischalten in der Produktiv- oder Live-Umgebung bei Ihrem Webhoster bezeichnet man als Go-Live.
2.1.1 Entwicklungs-, Test- und Live-Umgebung
Eine Umgebung ist die Gesamtheit aller infrastrukturellen Aspekte, die zur Entwicklung oder Bereitstellung einer Softwareentwicklung, das betrifft auch Websites, eingerichtet sein müssen. Idealerweise gibt es drei Umgebungen (siehe Abbildung 2.1):
-
Entwicklung
Hier verbringen Sie die meiste Zeit. Es geht sehr bunt zu: erste Joomla!-Experimente, Joomla!-Updates, Testen von Erweiterungen, Herumschrauben am Layout, Programmierung von Features, Einstellen von Inhalten. Alles, was Sie im Rahmen der Lektüre dieses Handbuchs mit Joomla! unternehmen, passiert zuerst in der Entwicklungsumgebung. -
Test
Oder auch Staging-Umgebung – hier wird die Website ins Reine gebracht. Während in der Entwicklungsumgebung zahlreiche Erweiterungen zum Ausprobieren installiert wurden, ist die Staging-Umgebung sauber und imitiert die Live-Umgebung möglichst genau. So ist sichergestellt, dass bei einem Go-Live alles wie geplant funktioniert. Der Begriff Staging lässt sich hier mit einer (Arbeits-)Bühne übersetzen, auf der sich alle Akteure (Joomla! und Erweiterungen) für die Generalprobe treffen. -
Live
Das ist die Hosting-Umgebung, in der Ihre Website schließlich im Internet abrufbar ist, auch Produktionsumgebung genannt.
Die strikte Trennung der Umgebungen ist insbesondere bei Projekten wichtig, an denen mehrere Entwickler werkeln. Jeder arbeitet in seiner persönlichen Entwicklungsumgebung, das gemeinsame Produkt wird dann in der Testumgebung gesammelt, geprüft und für den Go-Live vorbereitet. Das komplette Paket für den Go-Live nennt man Release; der Vorgang der Live-Schaltung ist ein Deployment (deutsch: Bereitstellung, Entsendung).
Info: Die vierte Umgebung – Integration
Bei sehr komplexen Websites, an denen große Entwicklerteams arbeiten, wird die Testumgebung noch mal unterteilt: Die Integrationsumgebung sorgt für das Zusammenführen aller Arbeiten. Sämtliche Komponenten werden dabei in eine Umgebung integriert, häufig geschieht das mit automatischen Mechanismen und Scripts. Die Testumgebung spiegelt die Live-Umgebung dann noch genauer.
Solch eine persönliche, lokale Entwicklungsumgebung richten Sie in diesem Kapitel ein. Zur Vereinfachung wird sie mit der Testumgebung kombiniert.
Warum lokal?
Weil Sie das gesamte Joomla!-Paket mit allen Erweiterungen, eigenen Templates und vorbereitetem Content auf dem Arbeitsplatzrechner installieren können. Hier lässt sich nach Herzenslust mit dem Content-Management-System (CMS) experimentieren; Sie probieren Erweiterungen aus und testen Layoutänderungen, ohne dass das jemand, wie z. B. auf einem Live-Server, mitbekommt. Entscheidender Vorteil: Dadurch, dass alle Komponenten und alle Bilder auf Ihrem Rechner liegen, müssen keine Daten durch den engen und deshalb langsamen Internet-Flaschenhals gepresst werden – lokale Entwicklung macht Spaß, weil alles schnell geht.
Aber auch für die zukünftige Wartung der Website ist eine lokale Testumgebung hilfreich. Erscheint eine neue Version von Joomla! oder von Ihnen eingesetzten Erweiterungen, ist es ratsam, das Einspielen der Updates erst mal auszuprobieren. Ein CMS ist ein komplexes System, bei dem nur eine falsche Programmdatei genügt, um die Website funktionsunfähig zu machen. Und egal, wie viele Tests vor einem Update-Release auch durchgeführt werden, bei einem Projekt dieser Größenordnung kann auch mal etwas schiefgehen. Da wäre es ungünstig, dass Ihre Website zwei Wochen nicht erreichbar ist, bevor ein Reparatur-Patch erscheint. Darum testen Sie alles zunächst in der Entwicklungs- bzw. Testumgebung, bevor das gesamte Update mit einem Mal auf dem Live-Server eingespielt wird.
2.1.2 Deployments und Updates
In diesem vereinfachten Entwicklungsszenario bewegen Sie sich also in der Entwicklungs- oder Test- oder in der Live-Umgebung. Joomla! bietet von Grund auf keine Mechanismen, Umgebungen miteinander zu synchronisieren. Deshalb konstruieren Sie sich selbst den notwendigen Workflow. Dabei wird unterschieden, welche Daten überhaupt auf der Live-Umgebung eingespielt werden:
Content
Für Joomla! in der Grundinstallation heißt das, Beiträge (Artikel und Textfragmente), Kategorien, Bilder. An dieser Stelle schmerzt der fehlende Deployment-Mechanismus am meisten, da Contentaktualisierungen in der Regel zum Tagesgeschäft gehören. Es bieten sich drei Möglichkeiten an:
-
Contentpflege auf dem Live-Server
Über diese sehr unsichere Methode wird sämtlicher Content direkt auf dem Live-Server eingestellt und dafür Sorge getragen, dass er während der Bearbeitungszeit den Status Versteckt behält.Beiträge, Kategorien, eigentlich alle Joomla!-Elemente befinden sich entweder in einem Veröffentlicht- oder Versteckt-Status (neben Archiv und Papierkorb). Als Administrator bzw. Super-Benutzer sind versteckte Elemente im Frontend aber dennoch sichtbar. Sie fügen sich zwischen alle anderen Elemente und sind mit einem kleinen Versteckt-Icon gekennzeichnet, so ist jederzeit eine Vorschau möglich.
Die Gefahr ist, dass nur ein Klick notwendig ist, um den Versteckt-Status aufzuheben. Für Websites von Privatpersonen oder kleineren Firmen ist das aber kein Problem und darum in diesen Szenarien ein vertretbares Risiko.
-
Copy-&-Paste-Aktionen
Content wird in der Entwicklungs-/Testumgebung vorbereitet und dann nach Freigabe sämtlicher Elemente auf dem Live-Server dupliziert exakt nach Vorbild.Bilder und Download-Dateien lassen sich risikolos hochladen. Das Anlegen eines Beitrags erfolgt in einer einzelnen Copy-&-Paste-Aktion; sämtliche Meta-Eigenschaften des Beitrags werden eingestellt, bevor man das Konstrukt das erste Mal speichert. Außerdem ist es bereits bei der Beitragserzeugung möglich, den Status Versteckt zu vergeben.
In diesem Szenario besteht das Risiko, dass beim Kopieren sämtlicher Inhalte und Einstellungen (Kategoriezuordnung, Metadaten, Veröffentlichungszeiträume etc.) etwas vergessen wird, da die Rekonstruktion per Hand erfolgt. Dem lässt sich mit einem detailliert ausformulierten Workflow entgegenwirken, der allerdings streng diszipliniert ausgeführt werden muss. Insgesamt also ein recht mühsamer, fehlerbehafteter, wenn auch erwägenswerter Prozess.
-
Ein Tool
Wie bei anderen Content-Management-Systemen landet Joomla!-Content in einer zentralen Datenbank. Was spricht dagegen, die Joomla!-Programmierschnittstelle zu nutzen und sich selbst ein kleines Synchronisationswerkzeug zu schreiben? Teil V dieses Handbuchs geht zwar auf die Entwicklung eigener Erweiterungen ein, aber trivial ist solch ein Tool natürlich nicht. Verfahren bei doppelten Einträgen, Bildpaketierung, Integration in die Benutzeroberfläche; das alles sind Themen, die daraus ein mehrtägiges Miniprojekt machen. Dabei sollte man meinen, solch ein Tool gibt es bereits.Im Joomla! Extensions Directory werden Sie bedingt fündig. Das optimale Werkzeug, in dem Sie über eine benutzerfreundliche Oberfläche Menüeinträge, Beiträge und Module von links nach rechts vom Test- zum Live-Server schieben, gibt es nicht. Stattdessen finden Sie einige Komponenten, die den Export und Reimport der betreffenden Datenbanktabellen ermöglichen oder sich live mit der Datenbank einer anderen Joomla!-Instanz verbinden, um einzelne Datensätze zu kopieren. Das ist zwar nicht besonders komfortabel (Ausnahme J2XML), funktioniert in der Regel aber zuverlässig. Kapitel 21, »Joomla! und Content deployen«, geht auf diese Tools ein und zeigt Ihnen auch, wie ein händisches Deployment oder die Hammermethode mit Backup-/Restore-Mechanismen funktionieren.
Joomla!-Updates
Die Aktualisierung von Joomla! ist kein Problem, da hier nichts zwischen Serverumgebungen synchronisiert werden muss. Das Joomla!-Update erfolgt auf Knopfdruck, sobald eine neue Version erscheint. Lässt sich also sicherheitshalber in der Entwicklungs-/Testumgebung ausprobieren und dann, ein vorher angelegtes Backup vorausgesetzt, in der Live-Umgebung nachstellen.
Updates von Erweiterungen und Templates
Mit Erweiterungen verhält es sich in der Regel wie mit dem Joomla!-Update. Sobald eine neue Version verfügbar ist, erhalten Sie eine Notification im Administrations-Backend von Joomla!, direkt im Kontrollzentrum, der Einstiegsseite des Backends (siehe Abbildung 2.2).
Sie verfahren hier genauso wie bei der Joomla!-Aktualisierung: Updates in der Entwicklungs-/Testumgebung ausprobieren, sämtliche Seiten prüfen, Websitefunktionalitäten testen, und wenn nichts zusammengebrochen ist, die Aktualisierungen in der Live-Umgebung durchführen. Davor legen Sie natürlich immer ein Backup an, wobei Sie durch eine andere in Kapitel 16, »Empfohlene Erweiterungen«, vorgestellte Erweiterung, Akeeba Backup, unterstützt werden.
Hinweis: Nicht alle Erweiterungen nutzen den Update-Mechanismus von Joomla!. Insbesondere für kleine Feature-Ergänzungen sollten Sie gelegentlich einen Blick auf die Website des Entwicklers werfen, um dort die aktuelle Versionsnummer zu erfahren und gegebenenfalls das Update per Hand einzuspielen.
Updates eigener Entwicklungen
Bei der Entwicklung eines eigenen Templates oder einer Erweiterung integrieren Sie den gleichen Joomla!-Mechanismus, den andere Erweiterungen aus dem Joomla! Extensions Directory verwenden. Dabei steckt in der Erweiterungskonfiguration eine Referenz zu Ihrem Update-Server, das kann ein einfaches Verzeichnis auf Ihrem Joomla!-Webspace sein. Sobald Sie im Enwicklungssystem eine neue Version des Templates oder der Erweiterung fertiggestellt und als Update bereitgestellt haben, erkennt das sofort die Aktualisierungsprüfung von Joomla! auf dem Live-System. Das funktioniert exakt wie die Aktualisierung einer beliebigen Drittanbieter-Erweiterung.
Zusammengefasst stehen, obwohl Joomla! über keine eingebauten Deployment-Funktionen verfügt, keine nennenswerten Hürden bei der geregelten Veröffentlichung von Releases im Weg. Die System- und Erweiterungen-Updates sind allesamt testbar und autark in jeder Umgebung durchführbar. Für das Content-Deployment picken Sie sich einfach eines der drei oben dargestellten Szenarien heraus.