www.f-space.de stellt mehrere selbst entwickelte Webanwendungen bereit. Jede Webanwendung ist in einem Unterverzeichnis (=Anwendungsverzeichnis) abgelegt, z.B.
/ds4
/voidspace
/dsa1
/names
Innerhalb des Anwendungsverzeichnisses sind statische Inhalte, Daten, Scripts und Styles abgelegt.
Daneben gibt es gemeinsam genutzte Scripts und Styles unter:
/lib
/css
/images
/fonts
/webfonts
/php
Jede Webanwendung besteht aus einer Sammlung von einzelnen HTML-Seiten und unterstützt grundsätzlich Mehrsprachigkeit. Dazu basiert jede Seite auf einer konfigurierbaren Vorlage, aus welcher dann statische HTMl-Seiten pro Sprache generiert werden.
Die Konfiguration aller Seiten einer Webanwendung ist im Anwendungsverzeichnis hinterlegt:
config.php // Basiskonfig
pages.php // Liste aller Seiten
In der Basiskonfiguration sind die grundlegenden seitenübergreifenden Eigenschaften der Webanwendung hinterlegt, sowie die unterstützen Sprachen. Desweiteren werden die Vorlagen für die allgemeine DOM-Struktur in template
, header-common
, navigation
, sidebar-common
und footer
angegeben.
In pages.php
wird die individuelle Konfiguration der einzelnen Seiten vorgenommen und Vorlagen überschrieben, z.B.
$page = Page::directoryBased("tools-sicoweapons.html", "tools/sicoweapons", ["sidebar" => "tools/sidebar.xml"]);
$page->addKeyword("tool");
$page->addKeyword("werkzeug");
$page->addKeyword("generator");
$page->addKeyword("waffe");
$page->addKeyword("sico");
$page->addScript("tools/common/pdf.js");
$page->addScript("tools/sicoweapons/main.js");
$app->register_page($page)
directoryBased wird nachher die Seite tools-sicoweapons.html aus den Inhalten des Verzeichnisses tools/sicoweapons
unter Berücksichtigung der seitenübergreifenden Konfiguration generieren. Im Verzeichnis Verzeichnisses tools/sicoweapons
müssen nur noch zwei Fragmente abgelegt werden, z.B.
tools/sicoweapon/header.xml // Die Seitenüberschrift
tools/sicoweapon/content.xml // Der echte Inhalt
tools/sicoweapon/main.js // seitenspezifische Fachlogik
Der Generierungsprozess wird mit
php pages.php
gestartet und erstellt für jede Seite mehrere Dateien, z.B.
generated_pages/DE/tools-sicoweapons.html
generated_pages/EN/tools-sicoweapons.html
generated_pages/FR/tools-sicoweapons.html
tools-sicoweapons.html
Die Landingpage tools-sicoweapons.html behinhaltet nur ein kleines PHP-Skirpt welches je nach Spracheinstellung des Nutzers den eigentlichen Inhalt ausliefert. Damit das funktioniert, muss der Apache auch HTML-Seiten durch den PHP-Prozessor verarbeiten, vgl. Apache.
Der Generierungsprozess greift ebenfalls auf die Übersetzungstabellen im Backend zu.
Die Entwicklung und Testen findet auf deinem lokalen System statt. Ich nutze Ubuntu 18.04 als Betriebssystem, andere Linuxsysteme gehen bestimmt auch. Die Einrichtung der Entwicklungsumgebung muss dann entsprechend angepasst werden. Als IDE verwende ich Eclipse.
Grundsätzlich wird benötigt:
svn
apache2
perl
php 7.0 oder neuer
less
bash
Alle Inhalte und Webanwendungen von www.f-space.de sind in einem SVN-Repository abgelegt. Das SVN-Repository kann in den Workspace ausgecheckt werden mit:
svn co https://www.f-space.de/svn/sfschne/trunk/web/www
Zur Generierung der Seiteninhalte via der Kommandozeile müssen die PHP-Skripte in den include_path von PHP aufgenommen werden. Der PHP-Prozessor des Webservers muss den Pfad ebenfalls kennen. Auf Ubuntu wird dazu die Datei 20-local.ini
mit beispielhaftem Inhalt erstellt:
include_path = ".:/usr/share/php:/usr/share/pear:/home/venture/workspace/web/www/php"
und in der Konfiguration abgelegt, z.B.
/etc/php/7.0/apache2/conf.d/20-local.ini
/etc/php/7.0/cli/conf.d/20-local.ini
/etc/php/7.0/mods-available/20-local.ini
Als Style-Prozessor zur Generierungszeit der Seiten wird lessc
benötigt.
TODO
Der Apache muss die Landingpages der Webanwendungen durch einen PHP-Prozessor schicken. Die Konfiguration dazu wird in /etc/apache2/sites-enabled/000-default.conf
vorgenommen, z.B.
# Send all html files through php
<Directory /var/www/html/f-space/ds4>
<FilesMatch ".+\.html$">
SetHandler application/x-httpd-php
</FilesMatch>
</Directory>
Diese Einstellung muss für jede Webanwendung vorgenommen werden.
Anschließend müssen die Webanwendungen und die gemeinsamen Verzeichnisse im Webroot des Servers (hier `/var/www/html) verfügbar gemacht werden. Ich verlinke dazu die Verzeichnisse aus meinem Workspace, z.B.
ln -s $workspace/www /var/www/html/f-space
ln -s $workspace/www/cgi-bin /var/www/html/
ln -s $workspace/www/css /var/www/html/
ln -s $workspace/www/data /var/www/html/
ln -s $workspace/www/fonts /var/www/html/
ln -s $workspace/www/images /var/www/html/
ln -s $workspace/www/php /var/www/html/
ln -s $workspace/www/webfonts /var/www/html/
Die Webanwendung sollten danach über z.B. http://localhost/f-space/ds4 erreichbar sein.
Das default encoding für Text, CSV und XML muss auf UTF-8 eingestellt werden.