Joomla! mit verschiedenen Umgebungen

Development, Test, Live...


Joomla! ist eines der am weitesten verbreiteten Content Management Systeme überhaupt. Auch wenn in großen Unternehmen hierzulande kaum verwendet, hat es doch seine Berechtigung vor allem für kleine und mittlere Webseiten.

Es ist natürlich sinnfrei einem Handwerksbetrieb eine Webseite für 80.000 Euro anzubieten, bei der alles von Grund auf neu programmiert wird. Auch besteht ein gewisses Risiko bei solchen "Individualsystemen". Absolut niemand garantiert wie lange der Anbieter Lust darauf hat sein eigenes System zu supporten. Vor allem wenn es nach einigen Jahren nicht die Verbreitung gefunden hat wie gewünscht. Leider geschieht das nicht selten, dass solche "Klitschen" den Support einstellen wenn kritische Updates anstehen. So ein Fall ist das Update von PHP 5 auf PHP 7.

Darum ist die Wahl eines CMS Systems wie Joomla! oder Wordpress eine sehr gute Wahl. Es gibt Millionen von Anwendern und die Community achtet darauf, dass solche Updates möglich sind. Auch gibt es reichlich Anleitungen dafür. Und falls man sich bei der Erweiterung und Individualisierung des Systems an Standards hält, kann die Wartung und Weiterentwicklung der Seite vergleichsweise einfach von jemandem übernommen werden.

Noch vor einigen Jahren wurde darüber gelacht, wenn man Joomla! oder Wordpress als CMS System genannt hat. Es musste schon Typo 3 oder Drupal sein. Darunter ging nix wenn man ernst genommen werden wollte. Das hat sich grundlegend geändert. Hier ist eine Statistik dazu zu finden https://de.statista.com. Die außerordentliche Wordpress Dominanz geht darauf zurück, dass Wordpress quasi Standard für Blogs ist. Auf eine Unternehmenswebseite kommen 30 (oder so) Blogs.

Wir verwenden für kleinere Projekte derzeit vor allem Joomla!. Es ist leicht zu handhaben und sowohl in der Entwicklung als auch in der Bedienung sehr intuitiv. Sicherlich wird in naher Zukunft auch Wordpress dazukommen. Aber nun schauen wir uns an, wie man mit wenigen Handgriffen Joomla! für die Arbeit mit verschiedenen Umgebungen anpasst. Diese erlauben dann individuelle Einstellungen.

Alle nachfolgenden Pfadangaben sind relativ zum Document-Root

  1. Zuerst kopiert man die Datei includes/defines.php nach defines.php.
  2. Das Gleiche macht man mit der defines.php im administrator Verzeichnis. Also Datei administrator/includes/defines.php nach administrator/defines.php kopieren.
  3. Anschließend muss man beide Dateien wie folgt anpassen. Bitte nur das ändern was mit Kommentaren versehen ist.
  4. Danach erstellt man ein Verzeichnis conf. Dort legt man ein Verzeichnis für die jeweilige Umgebung an z.B. dev. Hier kopiert man die configuration.php hinein, die sich im Stammverzeichnis befindet.
  5. Anlegen einer Umgebungsvariable, die in unserem Beispiel joomla_env genannt wird. Am einfachsten ist es die Umgebungsvariable systemweit zu setzen. Dann steht sie sowohl für den Webserver als auch für PHP-Scripte, die über die Konsole aufgerufen werden, zur Verfügung.

Anpassung defines.php bzw. administrator/defines.php lt. Punkt 3


defined('_JEXEC') or die;

 //---ÄNDERUNG--- Zeile hinzufügen
define('JPATH_BASE', __DIR__);

//---ÄNDERUNG--- Zeile hinzufügen
$environment = getenv('joomla_env') ?: 'prod';

// Global definitions
$parts = explode(DIRECTORY_SEPARATOR, JPATH_BASE);

// Defines.
define('JPATH_ROOT',          implode(DIRECTORY_SEPARATOR, $parts));
define('JPATH_SITE',          JPATH_ROOT);

//---ÄNDERUNG--- Zeile anpassen um Variable $environment  zu nutzen
define('JPATH_CONFIGURATION', JPATH_ROOT . DIRECTORY_SEPARATOR .'conf' . DIRECTORY_SEPARATOR . $environment); 

define('JPATH_ADMINISTRATOR', JPATH_ROOT . DIRECTORY_SEPARATOR . 'administrator');
define('JPATH_LIBRARIES',     JPATH_ROOT . DIRECTORY_SEPARATOR . 'libraries');
define('JPATH_PLUGINS',       JPATH_ROOT . DIRECTORY_SEPARATOR . 'plugins');
define('JPATH_INSTALLATION',  JPATH_ROOT . DIRECTORY_SEPARATOR . 'installation');
define('JPATH_THEMES',        JPATH_BASE . DIRECTORY_SEPARATOR . 'templates');
define('JPATH_CACHE',         JPATH_BASE . DIRECTORY_SEPARATOR . 'cache');
define('JPATH_MANIFESTS',     JPATH_ADMINISTRATOR . DIRECTORY_SEPARATOR . 'manifests');

 //---ÄNDERUNG--- Zeile hinzufügen
define('_JDEFINES', true);

Es wurden insgesamt zwei Konstanten definiert. Zu dem das Auslesen der Umgebung sowie das Erstellen des umgebungsspezifischen Pfades implementiert.

Anlegen der umgebungsspezifischen Konfigurationsdateien lt. Punkt 4

Bild Konfigruationsdateien pro Umgebung

Hier sieht man die Verzeichnisstruktur für die umgebungsspezifische Konfiguration. Eigentlich reicht es aus nur für die eigene Umgebung einen Ordner zu erstellen. Für die anderen wird dieser auf den jeweiligen Servern existieren. Diesen Ordner sollte man in SVN oder Git in die Liste der Ignores aufnehmen, damit er nicht in die Versionskontrolle gelangt. In den meisten Fällen wird man irgendwo eine configuration.php.dist haben, die keine sensiblen Informationen enthält. Auf der jeweiligen Umgebung würde man den entsprechenden Ordner (dev, test, prod) erstellen. In diesen Order die configuration.php.dist hineinkopieren und die Erweiterung .dist entfernen. Und schließlich die umgebungsspezifischen Anpassungen vornehmen.

Anlegen einer Umgebungsvariable für die jeweilige Umgebung lt. Punkt 5

Bild Umgebungsvariable  für Umgebung

Hier wurde die Windowsvariante gewählt. Das System muss nach dem Setzen neu gestartet werden damit die Umgebungsvariable in PHP zur Verfügung steht.

Das wars. Joomla ist jetzt bereit für die Arbeit mit verschiedenen Umgebungen.

Zurück zur Kategorie: PHP
Zurück nach oben