Copyright Garvin Hicking (s9y.org),
Ian Styx (https://github.com/ophian/)
Serendipity Styx 3.9, Juli 2022
Vorwort
Styx kann als Serendipity Next gelesen werden!
Dies ist eine Neubearbeitung für Serendipity Styx 3.9 und
beruht auf meiner damaligen S9y-Origin "Entwurfs"-Revision für den Entwicklungsstand
von Serendipity 2.1 (Alpha-Builds) aus dem Frühjahr 2016, Seit dem Spätsommer 2018 lag diese hier
in einer aktuelleren Neubearbeitung für Styx 2.4 vor, welche jetzt erneut für die Styx 3er Series überarbeitet
wurde. Diese Bearbeitungen beruhen alle auf dem damals veröffentlichten Buchtext und der im März
2012 an den Autor und die Community vom Verlag zurückgegebenen Rechte.
Die Entwurfs-Revision legte zu ihrem damaligen Zeitpunkt keinen absoluten Anspruch auf Vollständigkeit
(insbesondere der kompletten Überarbeitung und Auflistung aller Konfigurationsoptionen
aller hier genannten Plugins) und besitzt selbst jetzt in den Überarbeitungen noch ein paar
wenige offene Fragen, welche mit ??? markiert sind. Bis auf ein paar Kleinigkeiten
wurde darauf Wert gelegt, den ursprünglichen Text so weit wie möglich zu erhalten, doch immer
dann konsequent zu überarbeiten bzw. zu ergänzen, wenn der damalige Text heutzutage keinen
Sinn mehr machte, oder mit Erscheinen von Serendipity 2.0/2.1 bzw. Serendipity Styx
hoffnungslos überholt war.
Des Weiteren wurden außer der Einrückung verschiedene Farben verwendet, um
bestimmte Einheiten klarer herauszustellen. Das helle Blau
dient der Anzeige von bestimmten Listendarstellungen und Konfigurations-Optionen,
insbesondere bei Plugins und überhaupt in Beziehung zum Backend. Ebenso wurde es
(im light mode) als Grundlage bei der Aufzählung von Datenbanktabellenfeldern gewählt.
Das helle Gelb wurde dann angewendet, wenn es um Smarty,
oder klare Frontend / Template (Theme) -Eigenschaften, -Aufzählungen, CSS, Werte
und Variablen ging. (Im dark mode allerdings etwas anders gelöst.)
Zwischen diesem Gelb und Blau konnte aber nicht immer
eine konsequente Unterscheidung vorgenommen werden; so dass mitunter die eine
Farbe auch die andere sein könnte. Bestimmte Eigenschaften von gekennzeichneten
Hervorhebungen, wie Smarty-Variablen, Datei-Namen, Verzeichnissen, Datenbankfeld-Namen,
Importer, Serendipity-Hooks, etc. wurden farblich unterschiedlich markiert bzw.
hervorgehoben, damit sie in der Fülle nicht untergehen.
Durch die Anordnung der Seitenstruktur, der Kapitel und ihrer Unterabteilungen,
über eine jederzeit ausfahrbare Seitenleiste, siehe das "Hamburger"
Symbol im Seitenkopf links, können Sie im Text beliebig hin- und herspringen.
So können sie einen Anker des Inhaltsverzeichnisses anspringen und die Leiste
durch einen beliebigen Klick auf der Inhaltsseite schließen, oder das weiße
im Kopf als Linksymbol zum Schließen der ausgefahrenen Seitenleiste benutzen.
Im Text selbst sehen Sie die
diagonal-orangenen Kettensymbole der Überschriften, die zum gleichen Ankersprung-Ergebnis
führen. Der beim Seitenscrollen auf der angezeigten Seite unten rechts eingeblendete
große Button, bringt Sie im Schnelldurchlauf wieder ganz nach oben.
Durch die farblich mitwachsende Anzeige des Seitenfortschritts ("progress-bar")
in der Sie begleitenden Navigationsleiste im Seitenkopf, können Sie gut einschätzen lernen,
an welcher Stelle des Buches Sie sich gerade befinden. Zu guter Letzt gibt es noch die
Example Sprungtags im Text,
die zu Ergänzungen, Vertiefungen, Fortsetzungen des Gesagten an anderer Stelle des Textes führen.
Es ist noch unentschieden, ob es zu einer weiteren physischen Aufteilung
(zum Beispiel in einzelne Kapitel per Request) des recht langen Textes
kommen muss, damit die Ladezeiten und Swaps für User mit wenig Spielraum mit
ihrem lokalem RAM weniger intensiv sind. Ansonsten ist die momentane Version
darauf eingerichtet alles "in-one" zu laden, um anschließend per
Javascript bestimmte Verwandlungen wie Sprungelemente und Linkanker vornehmen
zu können. Danach müssen Sie nichts mehr neu laden, sondern können sich mittels
der Sprungmarken und der ausfahrbaren Seitenleistennavigation im vollständig
geladenen und aufbereiteten Werk frei herum bewegen. Ein erneutes Laden geschieht
dann zum größten Teil aus dem Browsercache und ist wesentlich schneller erledigt.
Ansonsten ist noch viel Raum für weitere Optimierungen gegeben!
Ein großer Dank geht an Garvin Hicking, der mit seiner umfassenden Arbeit für
Serendipity seit Mitte 2003 und seinem veröffentlichten Buch vom April 2008 den
gewichtigen Grundstock für diese Neubearbeitung legte, ohne jene nicht wäre was
sie ist!
Chats und Foren dominierten noch in den 90er Jahren das interaktive
Internet. Diskussionen wurden darüber hinaus allenfalls über
Newsgroups und Mailbox-Systeme geführt. Mit der allgemeinen
Verfügbarkeit von Internetzugängen wuchs auch das Bedürfnis nach einem
System, um sich selbst in diesem neuen Medium zu präsentieren: Das
sogenannte Self-Publishing war geboren.
Während der Boom der Wiki-Communities aus dem vornehmlich
akademischen Wunsch nach Wissensaustausch resultierte, entstand auch für
das Self-Publishing eine neue Art von Software - Weblogs,
kurz: Blogs. Der Name ist Programm, denn die Grundfunktion ist
ein persönliches Tagebuch (ein Logbuch) im Internet. Blogsysteme
zeichnet aus, dass sie Inhalte sehr einfach darstellen und fassbar
machen, denn schließlich sollen die persönlichen Bemerkungen viele --
auch zufällige - Besucher schon auf den ersten Blick ansprechen.
Ganz bewusst setzen sich Blogsysteme von den
Content-Management-Systemen (CMS) ab, die aus Blogger-Sicht zu
teuer, vor allem aber zu komplex sind. Mit steigender Popularität
entstanden zahlreiche Blogsysteme im Open-Source- wie im kommerziellen
Umfeld: Serendipity, Movable Type, Blogger.com, b2 Evolution,
WordPress und andere.
Mittlerweile wird Blog-Software nicht nur für persönliche oder
firmenspezifische Tagebücher eingesetzt, sondern ebenso für kleine,
stark angepasste und individualisierte Projekt-/Produktseiten,
Firmenpräsentationen oder redaktionelle Inhalte jeder Art.
Serendipity!Namensursprungs9y!NamensursprungSerendipity ist eines dieser Systeme. Es entstand aus dem
Wunsch nach einer freien Software mit größtmöglicher Flexibilität,
worauf auch der - für die deutsche Zunge zugegebenermaßen etwas
gewöhnungsbedürftige - Name hinweist, der etwa bedeutet: "eine
zufällige Entdeckung, die Überraschendes und Großartiges mit sich
bringt". Und da der Name nicht nur schwierig auszusprechen, sondern
auch umständlich zu schreiben ist, kürzt man ihn in Fachkreisen
einfach ab: s9y. Geeks ersetzen längere Wörter gerne durch deren
Anfangs- und Endbuchstaben und schreiben die Zahl der ausgelassenen
Buchstaben einfach dazwischen...
Serendipity hat den Anspruch, von Anfängern einfach zu bedienen, aber
von fortgeschrittenen Anwendern weitestgehend modifizierbar zu sein.
Um auf möglichst vielen verschiedenen Serversystemen zu laufen, sollte
es mit mehreren Datenbanksystemen kompatibel sein, die verbreitete
Skriptsprache PHP einsetzen und einfach auf dem eigenen Webspace
installierbar sein. Die Wahl der Lizenz für das System fiel auf
BSD, denn diese räumt im Gegensatz zur GNU GPL auch die
Möglichkeit ein, das Blogsystem in kommerziellem Umfeld sinnvoll zu
nutzen.
So hob Anfang 2002 ein Kernteam bekannter PHP-Entwickler Serendipity
aus der Taufe: Jannis Hermanns, Sterling Hughes, George Schlossnagle,
Wez Furlong, Joyce Park und Joseph Tate sowie Sebastian Bergmann vom phpUnit-Projekt.[*]
Die PHP-Testsuite ist unter https://phpunit.de/ erhältlich.
Mit den Jahren entwickelten wechselnde Programmierer das System stetig
und konsequent weiter. Seit 2003 war der Autor des ursprünglichen Buchtextes,
Garvin Hicking, leitender Entwickler.
Dieses Online-Buch bezieht sich auf die aktuelle
Serendipity Styx Version 3.9 und möchte einen
umfassenden Überblick über das System und seine Anpassbarkeit
vermitteln. Neben der Bedienung der Software werden Sie darum auch
lernen, eigene Plugins zu schreiben, Templates anzupassen und
Konfigurationsänderungen vorzunehmen.
Wie gesagt, Serendipity Styx kann auch als Serendipity Next gelesen werden!
Ein Blogsystem zielt darauf ab, einzelne Artikel möglichst einfach zu
erfassen und in einem festen Rahmendesign darzustellen. Ein CMS
hingegen verwaltet ganz unterschiedliche Inhalte in individuellen
Designs und baut komplexe Navigationsstrukturen auf.
Für Blogsysteme sind alle Artikel grundsätzlich gleichwertig und
werden nur chronologisch sortiert dargestellt. Ein CMS sollte Seiten
unterschiedlich gewichten und diese verschlagworten und kategorisieren
können. Darum bietet es sich für umfangreiche Webseiten an, die nicht
nur eine "Seitenansammlung" darstellen, sondern eine komplexe
Hierarchie abbilden, was den Umgang mit sog. "Teasern", Übersichten,
Unter- und Parallelseiten erfordert.
Dies ist natürlich eine grobe Vereinfachung, da viele Blogsysteme
inzwischen auch solch komplexe Anwendungen meistern. Für Serendipity
gibt es beispielsweise das Plugin Statische Seiten, mit dem man
Inhalte losgelöst von den chronologisch sortierten Artikeln erstellen
und auch Hierarchien mit Unterseiten abbilden kann (siehe Seite
staticpage).
Oder das Freetag
Plugin für die Indizierung durch Schlagworte.
Ein weiterer fundamentaler Unterschied ist die Ausrichtung eines CMS
auf Mehrbenutzerfähigkeit und Workflows, so dass ein Artikel vor
seiner Veröffentlichung verschiedene Arbeitsphasen möglicherweise verschiedener Redakteure durchläuft. Gerade für umfangreiche Webseiten
ist es wichtig, dass mehrere Artikelversionen nebeneinander existieren
können: Während man bereits an neuen Fassungen einer Seite arbeitet,
soll die Online-Version unverändert für Besucher zur Verfügung stehen.
Solch ausgefeilte Mechanismen sind im Blog-Umfeld meist nur unnötige
Last.
Somit lässt sich ein Blog grundsätzlich als funktionsreduziertes CMS
beschreiben. Das mag negativ klingen, hat aber tatsächlich einen
großen Vorteil: Ein Blog geht zielgerichtet auf Bedürfnisse des
Web-Publishings ein. Die Bearbeitungsprozesse sind einfacher, und
Blog-spezifische Techniken (RSS-Feeds, XML-RPC, Widgets, Web-Services,
interaktive Funktionalitäten wie Kommentare und Trackbacks [*]
Eine Erklärung dieser Begriffe finden Sie im
Kapitel Terminologie auf Seite Terminologie.)
lassen sich meist mit wesentlich geringerem Aufwand einbinden als in
umfangreichen Content-Management-Systemen.
Blog!vs. CMS|)CMS!vs. Blog|)
1.2 - Warum Serendipity?
Warum Serendipity?
Serendipity!Vorteile|(
Serendipity versteht sich als erweiterbares Blog-Framework, dessen
Kernarchitektur so offen konzipiert ist, dass man individuelle
Anpassungen vornehmen kann, ohne an den Sourcecode selbst Hand
anzulegen. Änderungen am Aussehen des Blogs lassen sich durch
Templates vornehmen, Funktionalitäten durch Seitenleisten- und
Ereignis-Plugins nachrüsten.
Diese Modularität macht es möglich, eigenen Code vor Updates der
Serendipity-Version zu schützen. Seit Erscheinen der ersten Version
legen die Entwickler sehr viel Wert auf Abwärtskompatibilität. Im
Gegensatz zu anderen Systemen ließen sich bestehende Plugins bisher
selbst bei großen Versionssprüngen weiterverwenden. Dies spricht zum
einen für eine gesunde Weiterentwicklung des Systems, zum anderen auch
für die Plugin-Architektur, die sich als sehr stabil erwiesen hat.
Gerade die Auslagerung von Code macht Serendipity auch im
kommerziellen Umfeld interessant. Aufgrund der BSD-Lizenz kann man
dieses Blogsystem verwenden, ohne hinzugeschriebenen Code
veröffentlichen zu müssen.
Der Einsatz dynamischer PHP-Skripte gewährleistet, dass Serendipity im
Gegensatz zu mit Perl, Ruby oder Python entwickelten Blogsystemen auf
beinahe jedem Webserver lauffähig ist. Zudem macht die Unterstützung
mehrerer Datenbank-Management-Systeme die Software portabel, so
dass sie mit unterschiedlichen Datenbank-Servern einsatzfähig ist.
Darüber hinaus legen die Entwickler viel Wert auf guten
Programmierstil (mit phpDoc-Funktionskommentaren, einheitlichen
Einrückungen und einer kleinteiligen Funktions-API) und sicheren Code.
Im Laufe der Serendipity-Entwicklung gab es bislang nur wenige
Sicherheitslücken!BehebungszeitraumXSRF
Sicherheitslücken, die bei Bekanntwerden innerhalb weniger Stunden
offiziell behoben wurden. Auch gegen weniger verbreitete
Angriffsmöglichkeiten auf eine Webanwendung wie XSRF [*]
XSRF
steht
Angriff!Robustheit gegen ~eCross-Site Request Forgery|see{XSRF}XSRF
für Cross-Site Request Forgery und beschreibt eine
Angriffsmethode, bei der eine fremde Website mit Privilegien eines
authentifizierten Benutzers Aktionen (zB. das Löschen aller
Artikel) durchführt.Schutz!gegen Angriffe
stellte Serendipity frühzeitig Schutzmechanismen bereit.
Serendipity-Templates werden unter Verwendung des Templating-Frameworks
SmartySmarty, [*] https://www.smarty.net/
einem De-facto-Standard unter PHP, entwickelt. Zahlreiche Entwickler
schwören auf dessen einfache Syntax, die es selbst Anfängern
ermöglicht, die HTML-Ausgabe anzupassen, ohne PHP lernen zu müssen.
Das zentrale Plugin- und Template-Archiv namens
SpartacusPlugin-Archiv|see{Spartacus}Template-Archiv|see{Spartacus}Spartacus [*] Spartacus auf Styx
bietet derzeit mehr als 160 Plugins und knapp 100 Templates an. Diese können
Sie direkt aus der Verwaltungsoberfläche Ihrer eigenen Blog-Installation heraus
installieren oder aktualisieren. Die dort aufgeführten Plugins werden großteils
offiziell gewartet und entsprechen den vom Serendipity-Projekt vorgegebenen
Anforderungen an Programmierstil und Sicherheit. Plugins mit identischer
Funktionalität, die den Benutzer vor die Qual der Wahl stellen, findet
man hier nicht, und auch auf Kompatibilität zu allen verfügbaren
Serendipity-Versionen wird geachtet.
Da die Serendipity Kernentwickler derzeit aus Deutschland kommen, haben gerade
deutsche Anwender den Vorteil einer stets aktuellen deutschen
Übersetzung der Benutzeroberfläche. Zudem sorgen eine engagierte
Community und ein großes Supportforum mit bislang über hundertausend
Beiträgen dafür, dass Fragen zum System oder Rückfragen selten
unbeantwortet bleiben. Serendipity wird sehr nah an den Wünschen der
Community entwickelt - das Feature-Diktat von "oben herab" ist
verpönt.
Serendipity!Vorteile|)
Serendipity!Nachteile|(
Natürlich kann Serendipity zum jetzigen Zeitpunkt noch nicht alles. Der
größte Nachteil besteht wohl darin, dass man auf eine einzelne
Blog-Instanz festgelegt ist. Unter-Blogs (thematisch oder auch pro
Benutzer) lassen sich zwar hintricksen, aber an ein echtes
MovableType
Multi-Blogsystem wie Movable Type kommt die Software in dieser Hinsicht
nicht heran.
Aufgrund der dynamischen Kompilierung jedes Seitenaufrufs verursacht
Serendipity auch mehr Prozessorlast als solche Systeme, die mit exportiertem
HTML arbeiten. Serendipity kann auf gut eingerichteten Servern zwar
mehrere Dutzend Seitenaufrufe parallel verarbeiten, für den Einsatz
einer Community mit Tausenden parallelen Seitenaufrufen pro Sekunde ist
das System jedoch nicht konzipiert.
Serendipity!Nachteile|)
Serendipity hebt sich von der Konkurrenz anderer frei oder
kommerziell erhältlicher Systeme vor allem in folgenden Punkten ab:
Die Browser-basierte Installationsoberfläche erlaubt sowohl eine weitgehend
automatische Konfiguration, bei der nur essentielle Daten abgefragt werden, als
auch die Einflussnahme auf nahezu alle Parameter bei der Fortgeschrittenen
Installation (Seite webinstaller). Jede installierte Version lässt
sich über die integrierte Oberfläche auf die jeweils aktuellste updaten (Seite
s9yupdate).
Texte pflegt man auf Wunsch mit übersichtlichen, einfach verständlichen und
funktionalen WYSIWYG-Editoren ein (Seite WYSIWYG).
Die integrierte Mediathek für Bilder, PDFs, MP3s etc. gestattet
Rechtemanagement, Stichwortsuche und automatische Vorschaugrafiken (Seite
Mediathek). Über einen gesonderten Dialog (Seite
Mediathek-Popup) bindet man die Dateien aus der Mediathek
mit wählbaren Layout-Optionen einfach in Blog-Artikel ein. Die Inhalte dieser
Mediathek lassen sich dynamisch in einer Verzeichnisansicht darstellen, wie
Sie es zB. vom Windows Explorer gewöhnt sind.
Das gruppenbasiertes Rollenkonzept von Serendipity erlaubt das Anlegen unbegrenzt
vieler Autorengruppen und das Vergeben individueller Rechte (Seite
Benutzerverwaltung und Gruppenverwaltung).
Kommentare und Kategorien lassen sich verschachteln, Einträge mehreren
Kategorien zuordnen. Natürlich implementiert Serendipity alle gängigen
Blog-Standards (und ist somit vollständig Buzzword-kompatibel): Trackback,
Pingback, XML-RPC, XHTML 1.1, CSS, RSS, Atom ... (siehe Seite
Terminologie).
Eine flexible Plugin-API erlaubt es Ihnen, Seitenleisten- und
Ereignis-Plugins einzusetzen oder zu entwickeln, die das System ohne Eingriffe in den Serendipity-Code beliebig erweitern (Seite pluginapi).
Das bereits erwähnte Online-Plugin-Archiv (Spartacus) erlaubt die
Ein-Klick-Installation von mehr als 160 Plugins (Seite Spartacus).
Dank Plugin-Verwaltung per Drag&Drop können Sie das Aussehen und die
Inhalte der Seitenleisten des Blogs nach Ihren Wünschen gestalten, ohne
Templatedateien manuell ändern zu müssen (Seite Plugins verwalten).
Das dynamische, Smarty-basierte Template-Konzept erlaubt die strukturelle
Änderung sämtlicher Frontend-Elemente über aufeinander aufbauende
Templatedateien. Smarty-Templates dürfen ohne Einschränkung Kontrollstrukturen
wie Schleifen, Abfragen und Variablen enthalten und optional mit
zusätzlichem PHP-Code versehen werden (Seite Smarty-Templates).
Einfache Integration in bestehende Webseiten. Das Konzept der Shared
Installation ermöglicht den Betrieb beliebig vieler Blog-Instanzen mit nur einer
Code-Basis (Seite sharedinstall).
Serendipity kämpft an Ihrer Seite mit umfangreichen, konfigurierbaren
Anti-Spam-Maßnahmen gegen unerwünschte Kommentare oder Trackbacks. Als
Schlagworte seien Captcha, automatische Moderation, Akismet und Blacklists
genannt (Seite spamblock).
Beim Datenbanksystem haben Sie die Wahl zwischen MySQL(i), PostgreSQL und SQLite.
Serendipity ist nicht nur Open Source, sondern unterliegt sogar der
BSD-Lizenz. Somit kann das System auch in kommerziellen Programmen seinen Einsatz
finden.
Ob WordPress, MoveableType, b2Evo, blogger oder andere --
Serendipity importiert auf Wunsch den Inhalt zahlreicher anderer
Blogsysteme (Seite Daten importieren).
Für einen gewissen Monatsbeitrag erhalten Sie Zugangsdaten zu einem Rechner,
auf den Sie HTML-Dateien und Software wie Serendipity mittels eines
FTP-Programms hochladen können. So gespeicherte Software
können Sie auf dem Webserver als Anwendungen ausführen; darauf greifen
Sie mittels eines Webbrowsers von Ihrem PC aus zu - ganz so, wie Sie es von
Webseiten wie eBay oder Amazon kennen.
PHPTerminologie!PHPSkriptsprache
Die Dateien, die zu Serendipity gehören, enthalten Quellcode, der in der
Skriptsprache PHP [*]
PHP ist die Abkürzung von
PHP Hypertext Preprocessor, siehe https://www.php.net/.
geschrieben ist.
Ein PHP-Interpreter macht diesen bei jedem Aufruf auf dem Webserver
maschinenlesbar. Das Ergebnis dieser Aktion liefert der Webserver an
den Browser des Zielsystems. Laienhaft gesprochen, ließe sich PHP als
Betriebssystem für Serendipity ansehen.
Dies ist wichtig, um die generelle Funktionsweise von
Serendipity zu verstehen. Im Gegensatz zu Webbrowsern oder einer
Office-Anwendung kann Serendipity selbst keine Echtzeit-Eingaben von
Ihnen annehmen. Serendipity läuft komplett auf dem Webserver und wird
über Ihren Browser sozusagen ferngesteuert. Dabei sendet Ihr Browser eine
Anfrage an den Server, Serendipity verarbeitet diese und schickt ein
Resultat. Danach geht der Vorgang wieder von vorne los.
Dies hat den Vorteil, dass auch die Besucher Ihrer Seite stets aktuelle Daten
zu sehen bekommen. Da jeder Aufruf dynamisch die aktuellsten Daten darstellt,
kann Serendipity beispielsweise vorbereitete Artikel mit Erreichen eines
speziellen Datums automatisch einbinden, ohne dass Sie nochmals tätig werden
müssen. Das ist ein fundamentaler Unterschied zu einem statischen Blogsystem
wie MovableType. Dort speichert der Server (vereinfacht gesagt) nur
HTML-Dateien, in die sich dynamische Komponenten wie die neuesten Kommentare
oder die aktuelle Server-Uhrzeit nicht ohne Weiteres einbinden lassen.
Diese Vorgehensweise von Serendipity hat zahlreiche Vorteile: Ein Besucher
kann, abhängig von seinen Zugriffsrechten, Artikel sehen, die andere nicht
zu Gesicht bekommen. Ein Besucher kann das Design der Webseite
selbständig durch Wahl einer Designvorlage verändern. Die Sprache der
Benutzeroberfläche richtet sich auf Wunsch nach seinen Einstellungen usw.
Diese Dynamik hat zwar auch Nachteile (so verlangt sie nach mehr Speicher
und macht das System langsamer), ermöglicht Ihnen als Blogbetreiber aber
auch interessante Möglichkeiten, die wir im Folgenden detailliert
beschreiben werden.
Voraussetzungen
Um ein aktuelles Serendipity Styx einzusetzen, benötigen Sie SSH oder FTP-Zugriff auf
einen Webserver, auf dem eine aktuelle PHP-Version (mindestens PHP 7.3) installiert ist
und auf dem der Webhoster Zugriff auf eine Datenbank (MySQL (bevorzugt),
PostgreSQL, SQLite) gewährt. Als Webserver-Software eignen sich Apache (bevorzugt),
Nginx, Lighttpd und Microsoft IIS. Das Blogsystem lässt sich
somit sowohl auf Windows- als auch auf Unix-Derivaten einsetzen.
Mit der Serendipity 1.7.x Serie stieg die interne Voraussetzung auf PHP 5.2 und mit dem
Erscheinen von Serendipity 2.1 auf mindestens PHP 5.3, besser min 5.4+. Die letzte aktuelle
Version der Styx 2er Serie, Serendipity Styx 2.9.5 vom 2. Mai 2020, hatte bereits PHP 5.6 als
minimale Voraussetzung. Heutzutage ist mindestens PHP 7.4+ Voraussetzung, um in den erweiterten
Genuss der sprachlichen Modellpflege außerhalb gravierender Sicherheitsfixes zu kommen.
Vor allen Dingen, weil der Support für alle alten Versionen abgelaufen ist und die Supportzeiten
immer kürzer wurden. Wie früher, lange Jahre auf alten PHP Versionen zu hocken kann schwerwiegende
Sicherheitslücken eröffnen. Treten Sie ihren Providern also auf die Füße!
Damit Serendipity auf dem eigenen Webserver laufen kann, muss man einige
PHP-Einstellungen berücksichtigen. Üblicherweise sind sie passend
konfiguriert, so dass Sie als unbedarfter Benutzer direkt zum Kapitel
Installation ab Seite
Installation
springen können, wenn Sie Ihren Webserver nicht selbst aufsetzen und
dem Techniker bei Ihrem Provider keine Hinweise geben müssen.
1.3.1 - Systemseitige Einstellungen
Systemseitige Einstellungen
PHPModule@PHP-Module|(
Um herauszufinden, welche PHP-Module auf Ihrem Webserver installiert sind,
laden Sie folgende kleine Datei namens info.php in das
Document RootStammverzeichnis
Webdaten-Stammverzeichnis (auch Document Root genannt) [*]
Das ist meistens
DocRoot das Stammverzeichnis, in dem Sie bei Benutzung Ihres
FTP-Zugangs standardmäßig zu Beginn landen. Je nachdem, wie Ihr Provider den
Webserver konfiguriert hat, kann es aber auch sein, dass Sie zuerst in ein
Verzeichnis wie htdocs oder httpdocs wechseln müssen, um in das
Stammverzeichnis des Webservers zu gelangen. auf den Server (im Buch
www.example.com genannt) und rufen diese in einem Browser über
http://www.example.com/info.php auf:
Aus Gründen der Einfachheit nutzen wir für diese Beispiel URLs das
ungesicherte http:// Protokoll-Präfix, empfehlen aber dringend
im realen Leben immer https:// über ein vertrauenswürdiges
Zertfikat zu verwenden!
<?php phpinfo(); ?>
Der Browser sollte dann eine Übersicht darstellen, aus der Sie Ihre
aktuellen Einstellungen herauslesen können. Folgende Module benötigt
Serendipity:
libxml (PHP-Modul)sessionsession (PHP-Modul)
Das PHP-Modul session muss installiert und aktiviert sein sowie Session-Cookies zulassen. Dies
erreicht man mit der php.ini-Einstellung
session.use_cookies = On
Serendipity verlangt darüber hinaus, dass die PHP-Sessiondateien schreibbar sind.
Die php.ini-Einstellung session.save_path muss demnach auf
ein Verzeichnis zeigen, in dem der Webserver bzw. PHP Schreibrechte hat.
Gerade bei Windows-Servern enthält diese Variable häufig ein nicht
existierendes oder nicht beschreibbares Verzeichnis.
libxml (PHP-Modul)xml/libxml
Damit Serendipity in anderen Zeichensätzen verfasste
Texte nach UTF-8 konvertieren und seine XML-Funktionalitäten ausspielen
kann, muss das (standardmäßig vorhandene) PHP-Modul xml/libxml
installiert und aktiviert sein.
iconv (PHP-Modul)mbstring (PHP-Modul)iconv/mbstring
Für andere Zeichensatzkonvertierungen, die besonders bei Import- und
Exportvorgängen (zB. von RSS-Feeds) nötig werden, kann Serendipity
sowohl das PHP-Modul iconv als auch mbstring verwenden. Beide
Module sind in aktuellen PHP5-Versionen standardmäßig aktiviert.
PCRE (PHP-Modul)PCRE
Um Zeichenketten zu finden und zu bearbeiten, setzt Serendipity häufig
reguläre Ausdrücke ein. Diese Funktionalität liefert das
(standardmäßig installierte) PHP-Modul pcre.
libgd (PHP-Modul)ImageMagickgd/imageMagick
Um die Mediathek vernünftig nutzen zu können, benötigen Sie
entweder das PHP-Modul gd oder das Paket ImageMagick. Sollten Sie
Letzteres benutzen, müssen die Dateien des Pakets für Ihren Web-Benutzer
ausführbar sein.
socket (PHP-Modul)Firewallsocket
Damit Serendipity auf fremde Webseiten zugreifen kann, um zB.
Webservices zu integrieren und den Download von Plugins zu ermöglichen,
benötigt es das (standardmäßig aktivierte) PHP-Modul socket,
das Netzwerkfunktionen bereitstellt. Selbst wenn das Modul
vorhanden ist, kann es sein, dass Firewall-Einstellungen am Server die
Verbindung zu fremden Servern auf HTTP-Port 80 (oder anderen) verbieten.
Je nach Einsatzzweck müssen Sie Verbindungen zu den Servern, die
Serendipity von sich aus anspricht (zB. github.com für den
Download von Plugins), explizit erlauben.
Sollte dies nicht möglich sein, können Sie Serendipity zwar nutzen,
müssen aber auf die entsprechende Funktionalität verzichten.
openssl (PHP-Modul)openssl
Damit die Serendipity-Komponenten intern auf https-URLs zugreifen
können (und beispielsweise Trackbacks zu solchen geschützten URLs senden
können), wird das PHP-Modul openssl benötigt.
Ebenso wichtig ist, dass Ihr Serversystem mindestens openSSL ab
Version 1.1.1d (zB. in Debian Buster) einsetzt, damit keine Kompromisse bei der
Verschlüsselungsstärke für "langlebig" gespeicherte Auto-Logins (siehe Wartung)
gemacht werden müssen.
zlib (PHP-Modul)zlib
Soll Serendipity die HTML-Seiten per gzip-Kompression
bündeln, wird das PHP-Modul zlib benötigt.
sendmailsendmail
Um E-Mails zu versenden (zB. um auf neue Kommentare
hinzuweisen), muss PHP mit der sendmail-Option kompiliert worden
sein.
MySQLPostgreSQLSQLitemysql, pgsql, sqlite
Abgesehen von einem
Datenbanksystem muss auf Ihrem Server auch die Client-Schnittstelle für
die jeweilige Datenbank (MySQL(i), PostgreSQL, SQLite) als PHP-Modul
(mysqli, pgsql, sqlite)
eingebunden sein. Standardmäßig wird PHP mit MySQL-Bibliotheken
eingerichtet; seit PHP 5 ist auch das Datenbanksystem SQLite
üblicherweise aktiviert.
CacheAPCZendCacheionCubeAPC, ZendCache, ionCube
Um die Geschwindigkeit zu erhöhen,
empfiehlt sich der Einsatz von PHP-Bytecode-Caches wie APC (apc),
ZendCache oder ionCube.
PHPModule@PHP-Module|)
PHP!Konfigurationseinstellungen
PHP bietet zahlreiche sicherheitsrelevante Parameter, deren aktueller Wert bei
der Installation des Blogs angezeigt und auf optimale Einstellung überprüft
wird. All diese Einstellungen werden in der php.ini-Konfigurationsdatei
geändert
[email protected]
und bedürfen je nach Serverumgebung eines Neustarts der Webserver-Software.
Für Hilfe zur Konfiguration von PHP und des jeweiligen Webservers schlagen
Sie bitte in der Anleitung der jeweiligen Software nach, da dies den Rahmen
dieses Buchs sprengen würde.
VirtualHost
Kommt Apache zum Einsatz, können die Einstellungen auch pro Domain
konfiguriert werden. Im jeweiligen <VirtualHost>-Abschnitt der
Konfigurationsdatei (je nach Apache-Version unterschiedlich, meist
httpd.confhttpd.conf
oder auch in Dateien unterhalb des Apache conf.d-Verzeichnisses)
muss dazu php_admin_value option wert bzw. php_value option
wert eingetragen werden. Alle per php_value
einstellbaren Optionen lassen sich auch über eine .htaccess-Datei
[email protected]
im Stammverzeichnis des Webauftritts verändern. Einstellungen in
dieser Datei haben Vorrang vor den globalen Optionen, die in der
Webserverkonfiguration oder in php.ini definiert wurden. Via
php_admin_value gesetzte Werte lassen sich von
.htaccess-Dateien nicht mehr verändern.
Serendipity selbst legt bei der Installation eine solche Datei im
Serendipity-Verzeichnis an.
Sollte Ihr Webserver deren Auswertung
unterbinden, können Sie die von Serendipity erstellte Datei gefahrlos
löschen, verlieren dadurch aber die Möglichkeit, sprechende
URLs zu benutzen sowie den Download einiger interner Dateien zu
verhindern.
Daher sollten Sie dies nur dann tun, wenn Ihr Provider auch nach
Rücksprache die Auswertung der .htaccess-Dateien nicht
genehmigt.
[email protected]
Haben Sie die Möglichkeit, die .htaccess-Nutzung über
AllowOverride (Apache-Option)
die Option AllowOverride in der Webserver-Konfigurationsdatei zuzulassen, geschieht dies im
<VirtualHost>-Abschnitt mittels
<Directory /pfad/zum/serendipity-verzeichnis>
AllowOverride All
Require all granted
</Directory>
AllowOverride (Apache-Option)
Notfalls reicht auch AllowOverride Options
FileInfo. Der Wert All erlaubt es Plugins grundsätzlich, weitere
Webserver-Optionen zu setzen, und gibt Ihnen damit mehr Flexibilität.
Serendipity setzt in seiner .htaccess-Datei (siehe Seite
htaccess) die
Optionen session.use_trans_sid (Seite
session-trans-sid) und register_globals (Seite
register-globals). Bei der Benutzung des Apache-Moduls
mod_rewrite kommen auch die Optionen RewriteEngine,
RewriteBase und RewriteRule zum Einsatz. Die
.htaccess-Optionen ErrorDocument und DirectoryIndex
ermöglichen freie Permalinks (siehe Seite urlformung).
Damit der Webserver bestimmte Serendipity-Dateien nicht im Klartext
darstellt, folgt ein Deny from All als Sicherheitsmaßnahme.
Sprechende URLs
mod-rewritemod_rewrite|(Error-HandlingURL-Umformung|(sprechende URLs|(URL!sprechende|(mod_rewrite ist kein PHP-Modul, sondern eine Funktionalität des
Apache-Webservers. Wenn das Modul in Apache eingebunden wurde, erlaubt
es einer Web-Anwendung,
URLs zu benutzen, die nichts mit der tatsächlichen
Dateistruktur auf dem Server zu tun haben.
Statt die Nutzer damit zu behelligen, dass sie gerade ein PHP-Skript
namens serendipity_admin.php nutzen, lässt man sie besser auf eine
URL wie http://www.example.com/serendipity/admin/ zugreifen, die
den Browser auf die tatsächlich existierende Datei serendipity_admin.php umleitet.
Das mod_rewrite-Modul ermöglicht es Serendipity, sogenannte sprechende
URLs (auch URL-Umformung genannt) einzusetzen,
die zum Beispiel Artikeltitel oder
Kategorienamen enthalten. Für den Benutzer hat das
den Vorteil, dass er eine URL schon anhand ihres Namens eindeutig
zuweisen kann. Zudem können Suchroboter wie Google Ihre
Google!Indizierung durch \textasciitildeSuchroboter!Indizierung durch \textasciitilde
Artikel aufgrund der Schlagwörter in der URL besser indizieren.
Serendipity kann auch mit sprechenden URLs arbeiten, wenn mod_rewrite
nicht verfügbar ist. Dann leitet der Apache-Webserver den Browser mittels eines
Tricks an die echte URL weiter: Kann er eine Seite nicht finden, hängt es vom
Error-Handling (genau: der ErrorDocument-Anweisung) ab, ob er die
Fehlermeldung an den Browser durchreicht oder diesen auf eine andere Seite
führt. Diese Methode ist jedoch einen Tick langsamer und unflexibler als
mod_rewrite und klappt leider nicht auf allen Servern, da sie die oben
erwähnte AllowOverride-Einstellung All voraussetzt. Andere
Webserver wie Microsoft IIS oder lighttpd bieten diese Möglichkeiten leider
nicht, daher ist dort keine URL-Umformung möglich [*]
Mit etwas manuellem
Aufwand und Kenntnis der Webserver lassen sich die benötigten Umformungsregeln
jedoch auch nachrüsten (siehe Seite htaccess).
Bei der Installation wird Serendipity versuchen, automatisch die
passendste Methode für Sie herauszufinden. Abhängig davon wird die
.htaccess-Datei unterschiedlich erstellt, damit sie die jeweils
erforderlichen Anweisungen enthält. Die gewünschte Methode zur URL-Umformung
kann später in der Konfiguration natürlich auch umgestellt werden.
Probleme!URL-Umformung
Sobald für Serendipity das mod_rewrite-Modul aktiviert ist, wird
Serendipity sämtliche Aufrufe in seinem Unterverzeichnis umleiten.
Sollten Sie später also einmal andere Programme unterhalb des
Serendipity-Verzeichnisses aufrufen wollen, wird dies womöglich dazu
führen, dass Sie statt des installierten Programms Serendipity sehen.
Dies liegt daran, dass durch die .htaccess-Datei von
Serendipity die URL-Umformungsregeln auch für alle Unterverzeichnisse
gelten. Abhilfe können Sie schaffen, indem Sie in jedem Unterverzeichnis
einer fremden Anwendung eine eigene .htaccess-Datei erstellen, mit
dem Inhalt:
RewriteEngine off
Diese Anweisung sorgt dafür, dass für das jeweilige Programm die
URL-Umformung deaktiviert wird.
mod_rewrite|)URL-Umformung|)sprechende URLs|)URL!sprechende|)
1.3.2 - Für Serendipity relevante PHP-Konfigurationsoptionen
Für Serendipity relevante PHP-Konfigurationsoptionen
Folgende Optionen sind/waren für Serendipity maßgeblich:
[email protected]!session.use_cookiesphp_value session.use_cookies.htaccess, php.ini oder Webserverkonfiguration;
Serendipity speichert temporäre Dateien in PHP-Sessions. Um eine Session
eindeutig zu identifizieren, vergibt das System Session-IDs, die
üblicherweise in einem HTTP-Cookie gespeichert werden. Damit Serendipity
CookiesSession-Cookies
PHP-Session-Cookies nutzen kann, muss diese Option aktiviert sein.
session-trans-sid[email protected]!session.use_trans_sidphp_value session.use_trans_sid
wird von Serendipity selbst in der .htaccess-Datei auf 0
gesetzt, kann aber auch in der php.ini oder der
Webserverkonfiguration geändert werden;
Wenn der Browser keine Cookies akzeptiert, kann die Session-ID auch an
URL!mit Session-ID
die URL angehängt werden.
PHP macht dies automatisch, wenn die Option
session.use_trans_sid aktiviert ist. Diese Automatik ist seitens
Serendipity jedoch aus Sicherheitsgründen unerwünscht.
Sollte die Option dennoch aktiviert
sein, können fremde Nutzer ungültige Session-IDs in die URL
Angriff!auf Session-Dateien
einschleusen und somit möglicherweise Ihre Session-Dateien
kompromittieren. Ein Serendipity-Blog sollte daher niemals die
Session-ID in einer URL angeben.
Gibt Ihnen jemand eine Serendipity-URL wie
http://www.example.com/serendipity/index.php?PHPSESSID=23213123adasd,
kann es sein, dass diese Person
Missbrauch!von Session-Daten verhindern
Ihre Daten ausspähen will. Die serverseitige Deaktivierung der PHP-Option
session.use_trans_sid beugt
solchem Missbrauch vor.
[email protected]!allow_url_fopenphp_admin_value allow_url_fopen
nur in der php.ini oder in der Webserverkonfiguration
änderbar;
PHP liest und behandelt URLs wie normale Dateien, wenn diese Option
aktiviert ist. Gerade in älteren PHP-Versionen öffnet die Aktivierung
Angriff!auf das System
dieser Option die Tür für Angriffsszenarien, in denen Code von
fremden Internetseiten bei Ihnen ausgeführt werden kann (und so das
System kompromittiert).
Damit die Aktivierung dieser sicherheitsrelevanten Option nicht
erforderlich ist, greifen alle wichtigen Serendipity-Funktionen
stattdessen über Sockets auf
Netzwerk-Ressourcen zu. Nur veraltete Plugins erfordern
möglicherweise die Aktivierung dieser Option. Es empfiehlt
sich, sie zu deaktivieren und nur bei Bedarf zuzuschalten.
register-globals[email protected]!register_globalsphp_value register_globals
wird von Serendipity selbst in der .htaccess-Datei auf
off gesetzt, kann aber auch in php.ini oder der
Webserverkonfiguration festgelegt werden;
Wenn diese Variable aktiviert ist, stellt PHP URL-Variablen im globalen
Namensraum zur Verfügung. Ältere PHP-Programme benötigen diese Option,
Serendipity greift jedoch nicht auf dieses Feature zurück. Aus
Sicherheitsgründen ist es daher sehr zu empfehlen, die Option zu deaktivieren,
sofern sie nicht für andere auf dem Webserver laufende Anwendungen
benötigt wird.
[email protected]!safe_modephp_admin_value safe_mode
php_admin_value safe_mode_include_dir
php_admin_value safe_mode_gid
lediglich via php.ini oder
Webserverkonfiguration änderbar;
Safe Mode (PHP)Safe Mode PHPs Safe Mode stellt sicher, dass lokale PHP-Anwendungen wie
Serendipity nur auf die Daten im eigenen Stammverzeichnis zugreifen und
keine fremden Dateien einbinden können. Obwohl Serendipity mit dieser
Einschränkung generell funktioniert, hat die Aktivierung dieses Modus
folgende Nachteile:
Die Optionen safe_mode_include_dir und safe_mode_gid
legen fest, auf welche Verzeichnisse ein PHP-Skript Zugriff hat. Solange
die Benutzerrechte (Permissions) und die Eigentumsverhältnisse
(Ownership) auf dem Webserver für das
Serendipity-Installationsverzeichnis korrekt gesetzt sind, lassen sich zB.
Mediathek-Dateien problemlos hochladen. Ein falsch
eingerichteter Safe Mode hat zur Folge, dass man mittels FTP oder
Administrationsoberfläche keine Templates und andere Dateien hochladen und
keine Bilder im Nachhinein löschen oder bearbeiten kann.
[email protected]!open_basedirphp_admin_value open_basedir
nur via php.ini oder in der Webserverkonfiguration änderbar;
Ähnlich wie der Safe Mode lässt sich der Datei-Zugriffsschutz von PHP auf
gewisse Verzeichnisse beschränken. Üblicherweise wird diese Option in
Zusammenhang mit den Safe-Mode-Parametern konfiguriert. Während der
Safe Mode lediglich den globalen Dateizugriff auf Gruppen- und
Benutzerebene regelt, schränkt open_basedir den
Zugriff auf vordefinierte Verzeichnisse ein.
Verwendet Ihr Webserver diese Option,
gehört das Serendipity-Installationsverzeichnis unbedingt in die damit
konfigurierte Verzeichnisliste. Anderenfalls kann der Webserver
die Installationsdateien nicht aufrufen. Als Trennzeichen zwischen zwei
Verzeichnispfaden dient in dieser Option das Semikolon (;).
Bleibt diese Option leer, ist der Zugriff auf alle
Verzeichnisse möglich. Befindet sich
bereits der Verzeichniseintrag . in der Auflistung, steht
dieser Punkt synonym für das Verzeichnis, in dem ein PHP-Programm
ausgeführt wird.
Gerade auf Servern, die viel mit symbolischen Dateisystemlinks arbeiten,
muss der Administrator sorgfältig auf die korrekte Konfiguration der
involvierten Verzeichnispfade achten.
[email protected]!session.cookie_domainphp_value session.cookie_domain.htaccess, php.ini oder Webserverkonfiguration;
Wenn Serendipity einen HTTP-Cookie setzt (also zB. die Session-ID
oder Login-Daten), enthalten diese den Namen der Domain, auf dem sich die
Serendipity-Installation befindet. Falls in der PHP-Variable
session.cookie_domain ein Domainname eingetragen ist, nutzt
Serendipity stattdessen diese Domainangabe. In dem Fall stellen Sie
sicher, dass sich dieser Wert mit dem Domainnamen des s9y-Servers deckt.
Wenn ein Webserver für mehrere Domains konfiguriert ist und an dieser
Stelle einen zentralen Domainnamen setzt, ist dies oft Ursache für
spätere Probleme.
[email protected]!session.save_pathphp_value session.save_path.htaccess, php.ini oder Webserverkonfiguration;
Alle von Serendipity gespeicherten Sessiondaten werden im mit dieser Option
angegebenen Verzeichnis gespeichert. Der ausführende PHP-Prozess muss
darauf Schreibrechte besitzen. Stellen Sie bei Windows-Servern sicher,
dass hier ein gültiger Verzeichnisname (zB.
C:/Temp) eingetragen ist. Sollten
PHP-Sessions nicht schreibbar sein, zeigt Serendipity
Fehlermeldungen an.
file-uploads[email protected]!file_uploads[email protected]!post_max_size[email protected]!upload_max_filesize[email protected]!max_input_timephp_admin_value file_uploads
php_value post_max_size
php_value upload_max_filesize
php_value max_input_time.htaccess, php.ini oder
Webserverkonfiguration - file_uploads nur via php.ini oder
Webserverkonfiguration änderbar;
Damit man überhaupt Dateien hochladen kann, muss file_uploads aktiv sein. Die
maximale Dateigröße einer hochgeladenen Datei legen
post_max_size, das ein Limit für HTTP-Requests mitsamt aller Daten
definiert, und
upload_max_filesize fest, das seinerseits eine spezielle Obergrenze
nur für die mittels HTTP-Request
übermittelten Dateien setzt. Die maximale Zeit für die Verarbeitung
einer Datei beim Upload legt die Variable max_input_time fest.
memory-limit[email protected]!memory_limitphp_admin_value memory_limit
Einstellung via php.ini oder Webserverkonfiguration;
Serendipity benötigt einiges an Arbeitsspeicher auf dem Webserver. In einer
Grundkonfiguration reichen meist zwischen drei und vier MB RAM. Der
Speicherbedarf kann mit der Anzahl und der Komplexität von Plugins jedoch
zunehmen.
Wie viel verfügbaren Speicher PHP-Anwendungen insgesamt nutzen dürfen,
legt die Variable memory_limit fest. Sollte der Arbeitsspeicher
Fehlermeldungen zufolge nicht mehr ausreichen, müssen Sie entweder dieses
Limit hochsetzen oder Serendipity-Plugins löschen.
[email protected]!display_errorsphp_value display_errors
php_value error_log.htaccess, php.ini oder httpd.conf;
Einige Server geben PHP-Fehlermeldungen nicht an den Browser weiter, um
Fehlermeldungen!PHP-Fehlermeldungen nicht an Browser gebenPHPFehlermeldungen@PHP-Fehlermeldungen!nicht an Browser gebenAngriff!Informationen über ~e
weniger leicht angreifbar zu sein.[*]
Fehlermeldungen können
kritische Dateipfade eines Servers offenlegen (Information
Disclosure). Solche Informationen erlauben es Angreifern, bestimmte
Rückschlüsse auf die Einrichtung eines Server zu ziehen. Wenn Sie
allerdings einmal auf Probleme stoßen oder eigene Anpassungen eine leere
Seite zum Ergebnis haben, empfiehlt es sich ggf., diese beiden Optionen
temporär zu aktivieren. Die bessere Alternative heißt: häufiger die
Fehler-Logfiles des Webservers prüfen.
Befehle, die Serendipity eigenständig in die
.htaccess-Datei im Stammverzeichnis einträgt, fasst die Software in einen
Block ein, der mit
#Begin s9y beginnt und mit #End s9y endet. Wenn Sie eigene
Parameter in diese Datei einfügen, tun Sie dies daher vor
#Begin s9y oder nach #End s9y. Das verhindert, dass
Serendipity diese Zeilen ändert. Wenn Sie eine von Serendipity gesetzte
Option überschreiben müssen, fügen Sie die
Option mit dem von Ihnen gewünschten Wert am besten nach dem s9y-Block nochmals
ein.
Auf einem Server ohne mod_rewrite sieht der s9y-Block wie
folgt aus:
# BEGIN s9y
DirectoryIndex /serendipity/index.php
php_value session.use_trans_sid 0
php_value register_globals off
<Files *.tpl.php>
deny from all
</Files>
<Files *.tpl>
deny from all
</Files>
<Files *.sql>
deny from all
</Files>
<Files *.inc.php>
deny from all
</Files>
<Files *.db>
deny from all
</Files>
# END s9y
Der erste Parameter, DirectoryIndex, legt die zentrale Serendipity-Datei
index.php als Startseite des Blogs fest. Wenn in der Serendipity-Konfiguration
bei der URL-Umformung (siehe Seite urlformung) die Option
Apache ErrorHandling eingestellt wurde, folgt als nächste Zeile der
Eintrag ErrorDocument 404 /serendipity/index.php. Die darin genannte Datei
dient als Weiterleitungsziel für alle virtuellen URLs, auch bei der Verwendung
von mod_rewrite.
Die nächsten beiden Zeilen deaktivieren die PHP-Einstellungen
session.use_trans_sid und register_globals.
Zuletzt folgen mehrere Abschnitte, die den Zugriff auf interne
Serendipity-Dateien (*.tpl.php, *.tpl, *.sql,
*.inc.php und *.db) verbieten.
Wurde mod_rewrite aktiviert, sieht die
.htaccess bis auf einen Block genauso aus wie die eben
gezeigte:
Hinzugekommen ist der Befehl RewriteEngine On, der
mod_rewrite aktiviert. RewriteBase legt den Stammpfad für
alle Operationen fest. Die einzelnen RewriteRules legen fest,
wohin der Nutzer weitergeleitet wird, wenn er spezielle URLs aufruft.
Der erste Teil hinter einer RewriteRule gibt an, welches Muster in
der URL gesucht wird, der zweite Teil legt fest, welche Datei
aufgerufen wird, und zuletzt folgen spezielle
mod_rewrite-Optionen in eckigen Klammern.
L gibt eine abschließende Regel an: Sobald eine URL auf das
jeweilige Muster zutrifft, werden die übrigen Muster nicht mehr geprüft.
QSA bedeutet, dass URL-Parameter (die sogenannten GET-Variablen) an
die Ziel-URL angehängt werden. NC besagt, dass
Groß- und Kleinschreibung bei einer URL nicht unterschiedlich behandelt
wird.
Die jeweiligen Regeln werden mittels regulärer Ausdrücke
formuliert, die bestimmte Muster in Zeichenketten detailliert beschreiben.
1.3.4 - PEAR
PEAR
PEARPEAR
Das PHP Extension and Application Repository (kurz PEAR) ist eine
Sammlung von PHP-Skripten und -Modulen, von der zahlreiche
Web-Anwendungen Gebrauch machen. Auch Serendipity setzt mehrere
PEAR-Komponenten ein: Cache::Lite, HTTP::Request, Onyx,
Net::Socket, Text::Wiki und XML::RPC. Damit diese
nicht zentral auf dem Webserver installiert sein müssen, liefert
Serendipity die Komponenten im Unterverzeichnis bundled-libs mit.
Wenn die entsprechenden PEAR-Komponenten bereits auf dem Webserver
vorhanden sind, räumt Serendipity diesen standardmäßig den Vorrang ein,
damit Systemadministratoren bei kritischen Updates nicht auch das
bundled-libs-Verzeichnis anfassen müssen. Dabei kommt es manchmal
zu (Versions-)Konflikten.
In diesem Fall kann man in der globalen Serendipity-Konfigurationsdatei
serendipity_config.inc.php mit
$serendipity['use_PEAR'] = false;
darauf beharren, dass die von Serendipity Styx mitgelieferten Komponenten zum
Einsatz kommen.
Serendipity!Voraussetzungen|)
HTML [*]
https://meiert.com/de/publications/indices/html-elements/
stellte ursprünglich eine einfache Syntax zur Formatierung
von Dokumenten im Web bereit. Während es anfangs nur sehr primitive
Auszeichnungselemente gab (Überschriften, Fettungen, Tabellen), sorgten
viele Entwickler-Gremien schnell und leider auch unübersichtlich für Erweiterungen.
Parallel zu HTML wurde XML (Extensible Markup Language) als universelles Dateiformat
entwickelt, um beliebige maschinen- und menschenlesbare Inhalte darzustellen. Im
Gegensatz zu Binärformaten lassen sich für XML plattformübergreifend Schnittstellen
bereitstellen und standardisiert eigene Unterformate für alle erdenklichen Einsatzzwecke
erfinden.
Auch HTML wurde mittels XHTML-Standard mit der XML-Syntax aufgefrischt und
konsolidiert. Strenge Regeln sorgen nun dafür, dass sich HTML-Dokumente von
vielerlei Programmen interpretieren und "validieren" (also auf syntaktische
Korrektheit prüfen) lassen. In der Theorie ermöglicht dies weitgehende
Abstraktion von Layout und Inhalt. Der besseren Interpretation durch Software
wegen konnte das CSS-Format (Cascading Style Sheets) seinen Siegeszug
antreten. CSS-Dateien lassen sich auf Elemente in XHTML-Dokumenten anwenden und
legen so die Formatierung der strukturellen Elemente eines Dokuments fest.
Auch wenn viele Webseiten heute noch nicht mit gültigem XHTML entwickelt werden
und es Bemühungen gibt, die "dumme Einfachheit" von HTML mit laxeren Prüfungen
wieder aufleben zu lassen, ist ein Vorteil von XHTML unumstritten:
Weiterverwendbarkeit.
Ein Browser ist eine Software auf Ihrem Computer, mit der Sie Internetadressen
aufrufen und ansehen können. Bekannte Browser sind der Mozilla Firefox,
Google Chrome oder auch Apple Safari. Der Begriff
"Browser" steht dabei für das "Stöbern" (neudeutsch "Surfen") im Internet,
denn erst durch diese Software wird aus einem speziell formatierten HTML-Dokument
etwas, das ein Besucher am Bildschirm wirklich ansehen und benutzen kann.
Die am Markt verfügbaren Browser unterscheiden sich in Merkmalen wie Sicherheit,
Geschwindigkeit, Funktionsumfang und auch Darstellungsqualität. Obwohl HTML und
CSS festgelegte Standards sind, weicht jeder Browser bei deren Interpretation
doch geringfügig ab, daher stellen verschiedene Browser ein und dieselbe Webseite
möglicherweise unterschiedlich dar.
1.4.3 - Client, Server
Client, Server
ClientServerClient-Server
Bei der Kommunikation im Internet sind Millionen von Computern miteinander
vernetzt. Beim Abrufen von Daten aus dem Internet über Ihren Browser verbindet
sich Ihr Computer mit einem fremden Computer, auf dem diese Daten liegen.
Ihr Computer stellt dabei einen Client dar, also den
Empfänger. Der Rechner, der Daten ausliefert, dient dabei als
Server, also als Absender.
Bei Nutzung fast jedes Internet-Protokolls spielen für die Kommunikation
zwei Datenkategorien eine Rolle:
das, was ein Client sendet und empfängt, und
das, was ein Server sendet, empfängt und verarbeitet.
1.4.4 - RSS, Feeds, Syndication und Aggregation
RSS, Feeds, Syndication und Aggregation
RSSRSS
RSS ist die Abkürzung für Rich Site Summary oder auch Really Simple
Syndication und der Name eines Datenformats, das gemeinsam mit den Blogs die
Web-Welt verändert hat.
Eine Datei im RSS-Format ist grundsätzlich erst einmal nur eine XML-Datei, die
einen speziellen Satz von Elementen enthält. Diese legen die Eigenschaften von
Blog-Artikeln, wie Titel, Inhalt oder Hyperlinks, fest.
Eine RSS-Datei stellt eine Art Newsticker dar, der meistens die chronologisch neuesten
Änderungen an News-Artikeln oder
Blog-Einträgen aufführt. Solche Dateien werden
kontinuierlich (meist automatisch) aktualisiert und auch
Feeds
als Feed bezeichnet. Dafür ausgelegte Software kann eine solche
maschinenlesbare RSS-Datei weiterverarbeiten und mit dem Inhalt
SyndicationAggregation
anderer Webseiten zusammenführen (hier seien die Schlagworte
Aggregation und Syndication genannt).
RSS-Reader
RSS-Reader-Programme ermöglichen es
Internet-Nutzern, die RSS-Dateien von Webseiten ähnlich wie mit einem E-Mail-Programm regelmäßig
zu überprüfen, und informieren so leicht und übersichtlich
über Änderungen.
Manche RSS-Dateien liefern den Inhalt eines neuen
Artikels mit, so dass der Nutzer ihn sich unabhängig von der Webseite
ansehen kann. Diese Einbindungsweise fokussiert auf den eigentlichen Inhalt von
Webseiten, da sie es erlaubt, Inhalte beinahe
darstellungsneutral zu beziehen.
Unterschiedliche Gremien haben zahlreiche RSS-Versionen
erarbeitet, teilweise inkompatibel zueinander und mit jeweils
anderen Attributen. Das verbreitetste RSS-Format ist Version
2.0. Serendipity unterstützt auch RSS 0.9, 0.91 und 1.0.
Diese gelten heutzutage aber als veraltet.
1.4.5 - Webservices, Web 2.0, Social Web
Webservices, Web 2.0, Social Web
WebservicesWebservicesWeb 2.0Social Web
In dem Maße, wie Webserver in
Skriptsprachen wie PHP und Perl geschriebene Anwendungen zu interpretieren
lernten, wurde es immer einfacher und
interessanter, verschiedene Komponenten miteinander zu verbinden.
Dynamische Software eröffnete ganz neue Möglichkeiten,
Besuchern einer Webseite Zusatzdienste, sogenannte Webservices, zu
präsentieren. Als Beispiel seien
die Anzeige von neuen Terminen, die Darstellung von
Wetterdaten, spezielle passwortgeschützte Bereiche oder auch die
Darstellung von Bookmarks genannt.
Auf zahlreichen Webseiten kann man oft kostenlos Community-Dienste
in Anspruch nehmen, die sich mittels Webservices an die eigene Webseite
anbinden lassen - sei es die Liste aktueller Fotos von der eigenen
Flickr-Fotoseite, die Darstellung der Lieblingslinks, des aktuellen
Wetters zuhause oder auch die Einbindung fremder Werbung. Derartige Services
bezeichnet man auch als Social Web, da ein Gedankenaustausch in einer gemeinsamen Community stattfindet.
Der Begriff Web 2.0 steht gesamtheitlich für die Wandlung des ehemals
statischen Web 1.0 hin zu einer Web-Welt mit verflochtenen Diensten
und großen Interaktionsmöglichkeiten unter Einbeziehung der Web-Nutzer.
1.4.6 - XML-RPC, SOAP, REST
XML-RPC, SOAP, REST
Damit ein Webservice angesprochen werden kann, benötigt man eine gemeinsame
Schnittstelle zwischen Empfänger (Client) und Absender (Server).
Eine solche lässt sich mittels verschiedener Techniken anbieten.
XML-RPC
Die im PHP-Umfeld verbreitetste Schnittstelle nennt sich XML-RPC.
RPC steht hierbei für Remote Procedure Call, also der Aufruf
einer Funktion durch ein fremdes Programm. Zur Datenübergabe und -annahme
wird hierbei XML verwendet. Der Server erhält eine XML-Datei mit
speziellen Anforderungen. Die ausführende
Server-Software interpretiert diese, wertet sie aus und schickt das Ergebnis wieder im
XML-Format zurück an den Client.
SOAP
Eine dazu konkurrierende Schnittstelle nennt sich SOAP (Simple
Object Access Protocol). Auch SOAP arbeitet mit XML-Datensätzen, hat
aber eine wesentlich komplexere Datenarchitektur und wird aufgrund dieses
Overheads im Web eher selten eingesetzt.
REST
Als dritte bekannte Schnittstelle bietet sich REST an:
Representational State Transfer. Diese simpelste der
Schnittstellen führt Abfragen anhand einfacher URL-Parameter durch und
gibt üblicherweise auch einfach zu interpretierende XML-Daten zurück.
XML-RPC ist für die Weblog-Welt insofern interessant, als sie es erlaubt, Inhalte
neutral von der verwendeten Blogsoftware zu erfassen. Die meisten Blogsysteme
binden eine gemeinsame XML-RPC-Schnittstelle ein, die das Erstellen und
Bearbeiten von Artikeln mittels "Fernsteuerung" ermöglicht. Dadurch kann ein
Benutzer seine Artikel mit ganz normaler Desktop-Software wie zB. ecto,
marsEdit, WindowsLive Writer oder sogar Microsoft Word schreiben, anstatt
sie in der Web-Oberfläche seiner Blogsoftware zu verfassen. Gerade für Benutzer,
die sich nicht mit neuer Schreib-Software auseinandersetzen wollen, ist diese
Variante sehr interessant.
1.4.7 - Atom
Atom
Um die verschiedenen Varianten von RSS wieder zueinanderzuführen,
entwickelte das W3C-Gremium einen Standard namens Atom. In einem
vollständig gültigen XML-Format deckt es alle Fähigkeiten von RSS ab,
wird aber aufgrund der höheren Komplexität heute immer noch als
Konkurrenz zu RSS 2.0 angesehen.
Der Begriff Atom steht nicht nur für ein
Dateiformat, sondern auch für eine Implementation der XML-RPC- oder
SOAP-Protokollschnittstelle, die es erlaubt, entsprechend ausgerüstete Weblog-Software fernzusteuern.
1.4.8 - Trackback und Pingback
Trackback und Pingback
Da Blogs letztlich Sprachrohre von Individuen darstellen, ist es für
einen Blog-Betreiber meist sehr wichtig, sein Blog mit anderen zu
vernetzen. Ganz im Sinne des interaktiven Webs bestand ein wichtiger
Gedanke bei der Erfindung des Blogs darin, Beiträge eines Autoren auf dessen
Seite kommentieren zu können und so in Dialog zu treten.
Leser von Blogs sind häufig selber Blogbetreiber und möchten
-- gerade bei abweichender Meinung - eine Diskussion gern auf der eigenen Seite
weiterführen, ohne dabei die Verbindung mit dem Initiator zu verlieren.
Trackbacks
Hierfür wurde die Technik der Trackbacks erfunden, die es einem Autor erlaubt,
seinen Artikel mit einem anderen zu verketten. Die
Besonderheit dabei: Die fremde Webseite wird davon automatisch in
Kenntnis gesetzt. Somit befindet sich nicht nur auf der eigenen Seite ein Link
auf den Quellartikel, sondern es gibt auch einen, der vom
Quellartikel auf die eigene Seite zeigt. Wie das bei Serendipity
funktioniert, behandelt Kapitel trackback ab Seite trackback.
Pingback
Ein Pingback ist eine abgeschwächte Form des Trackbacks. Der
Initiator kann auf diese Weise den Ursprungsautor darauf
hinweisen, dass er sich auf ihn bezogen hat. Dabei wird auf dessen Blog kein
(ausführlicher) Verweis für andere Besucher erzeugt.
1.4.9 - API und Plugin
API und Plugin
APIAPI
Eine API (Application Programming Interface) stellt ein
Software-Regelwerk (meist eine konkrete Liste an Funktionen oder
Klassen) zur Verfügung, an das man sich als Programmierer halten kann,
um auf gewisse Funktionen einer Software zuzugreifen. Bei Serendipity
benötigt man ein solches Regelwerk vor allem für Erweiterungen mit
eigenen Plugins oder den Zugriff von fremder Software.
Serendipity bietet eine funktionsorientierte Kern-API zur Verwaltung von Artikeln
und Datenbankabfragen. Weiterhin gibt es eine spezielle, objektorientierte
Plugin-API, die alle notwendigen Methoden abdeckt, die man als Entwickler eigener
Plugins benötigt.
Plugins
Ein Plugin ist Software, die sich nahtlos in ein
Hauptprogramm einbindet (to plug bedeutet einstöpseln). Es
hat Vorteile, gewisse Funktionalitäten in Plugins bzw.
Programmmodule auszulagern. Dadurch hält man zum einen die Kernsoftware
schlank, zum anderen kann man losgelöst von der Kernsoftware
Aktualisierungen durchführen und Funktionalitäten erweitern. Ein Benutzer
hält sein System schlank und performant, indem er nur die
Plugins installiert, die er für seine Anwendungsfälle nutzt.
Auch bei Webservices gibt es zahlreiche APIs, die den Verkehr
zwischen Client und Server jeweils strukturieren.
1.4.10 - Mashup
Mashup
Der Begriff Mashup bezeichnet die Verkettung mehrerer Webservices. Dank
der Offenheit vieler APIs lassen sich die abgefragten Daten beliebig
miteinander kombinieren, zB. die Wetterdaten eines mittels Google Maps
dargestellten Orts anzeigen.
Oder man bindet auf der Karte die Bilder ein, die Flickr-Benutzer zu
diesen Geo-Koordinaten eingestellt haben. Die Verknüpfungsmöglichkeiten sind
oft nur durch Ihre Phantasie begrenzt.
Usability ist ein Forschungsfeld, das sich
damit beschäftigt, wie man zB. eine Webseite am besten bedienen kann.
Es beschäftigt sich ua. mit der konzeptionellen Struktur einer Seite, dem Aufbau der
Navigation, der Gliederung der Inhalte und auch der Einbindung von
Formularen, Suchen und anderen interaktiven
Elementen.
Da sich eine Webseite häufig stark von einer normalen Software auf dem
Computer unterscheidet, lassen sich Software-Usability-Weisheiten nicht
einfach auf Webseiten übertragen. Wie man dennoch zielgerichtet auf
Benutzer eingeht und deren Erwartungen erfüllt, ist Aufgabe
der Web-Usability.
Eine Teilmenge des Oberbegriffs Usability ist die Barrierefreiheit
(englisch Accessibility). Diese beschreibt Techniken und
Maßnahmen, die auch behinderten Personen die
Benutzung einer Webseite ermöglichen. Darunter zählen Dinge wie eine
geschickte Farbwahl, sinnvolle Kontraste, aber auch der gezielte Einsatz
von Bildern nur an Stellen, wo sie nötig sind.
XHTML!und Barrierefreiheit
XHTML erlaubt zudem die
Trennung von Layout und Inhalt, die man der Barrierefreiheit zuliebe
stets beachten sollte. Gültiger, valider Quellcode ist
Voraussetzung dafür, dass jeder Browser (und damit jeder Besucher) Ihre
Webseite problemlos bedienen kann. Denken Sie auch an blinde Menschen,
die die Inhalte Ihrer Seite vorgelesen bekommen müssen: Wenn Sie die
Navigation nicht speziell hervorheben, kann es sein, dass dem Benutzer
diese beim Vorlesen vorenthalten wird.
Serendipity Standard-Templates versuchen so barrierefrei wie
möglich zu sein und bei der Usability auf klare Strukturen zu achten.
Erfahrungsgemäß ist dies bei einem Open-Source-Projekt recht schwer, da
meist nur Programmierer und erfahrene Benutzer am Werk sind, die keinen
Wert auf einfache Zugänglichkeit legen. Serendipity hat hier im Laufe der
letzten Jahre sehr stark zugelegt und ist daher für eine barrierefreie
Zukunft bestens gerüstet. Wie Sie diese in Ihrem Blog letztlich selber
umsetzen, wird ab Seite Anpassungen ausführlich
besprochen.
1.4.12 - BBCode, Textile, Markup und Textformatierung
BBCode basiert auf in Foren üblichen Markierungen:
Fettung!in BBCodeTextformatierung!fett|see{Fettung}Formatierung!fett|see{Fettung}[b]text[/b] formatiert zB. das Wort text fett. Alle Tags
werden in eckigen Klammern geschrieben;
Vereinfachungen wie [URL=http://www.google.com]Google[/url]Links!in BBCode
erlauben es, relativ einfach Links zu setzen.
Serendipity bietet für alle bekannteren Markups Plugins an, so dass auch
Kommentatoren zu einem Blog-Eintrag auf diese Syntax zugreifen können.
Kommentare!Formatierung
Die direkte Eingabe von HTML ist bei Kommentaren nicht möglich, daher
stellen solche Plugins die einzige Möglichkeit der Formatierung dar.
Eine weitere Möglichkeit, die Redakteuren die Eingabe von Text
erleichtert, ist der sogenannte WYSIWYG-Modus: What You See Is What You Get.
JavaScript
JavaScript-Module erstellen im Webbrowser ein Texteingabefeld. Dieses enthält
Formatierungsbuttons ähnlich wie bei OpenOffice bzw. Microsoft Word, die es erlauben,
die Farbe oder den Schriftstil zu ändern, per Drag&Drop Texte und eingebundene
Bilder zu verschieben oder Tabellen einzufügen.
Im Folgenden wird also zwischen dem PLAIN TEXT Editor, also dem einfachen Textfeld
mit oder ohne BB-Code artige Formatierungshilfen, und dem Rich Text Format (WYSIWYG-Modus)
unterschieden.
Artikel die mit dem PLAIN TEXT Editor erstellt und gespeichert wurden, werden zur Laufzeit
des Abrufes in HTML umgewandelt. Dazu dienen verschiedenste Plugins. Benutzen Sie die
fortschrittlicheren markdown oder textile Formatierungen, geschieht das gleiche.
Auch diese wandeln als vereinfachte Auszeichnungssprachen bestimmte Formatierungshilfen
in HTML zur Ausgabe um.
Das Rich Text Editor Format (WYSIWYG-Modus) speichert derweil gleich das komplette HTML fertig
zur Ausgabe. Dies ist insbesondere wichtig zu wissen, damit man sein System konsistent halten kann.
Wenn Sie allerdings um die Tücken wissen, macht es nichts aus ein altes Blog von beispielsweise
markdown auf den CKEditor umzustellen. Es ist heutzutage einfach das zu präferierende Format.
Serendipity wird standardmäßig mit dem WYSIWYG-Editor CKEditor [*]
https://ckeditor.com/ ausgeliefert.
Dieser Editor läuft problemlos mit allen aktuellen Browsern (Chrome,
Firefox, Internet Explorer, Firefox, Safari, etc) und wird professionell
und aktiv weiterentwickelt. Er hat sich mittlerweile zum quasi-Standard
der HTML Editoren am Markt entwickelt. In Serendipity ist er als Core-BASIC-Editor
im /templates/_assets Ordner angesiedelt.
Außerdem existiert noch das CKEditor Plus-Plugin,
das immer die neueste Version mit leichter Zeitverzögerung mitbringt und per Plugin Konfiguration sehr leicht
verschiedenste Ausbaustufen de Editors zulässt. Im Grunde ist es damit unnötig geworden
irgendein anderes WYSIWYG-Editor-Plugin wie TinyMCE einzusetzen, wenn nicht absolut
wichtige persönliche Präferenzen dafür sprechen.
(Siehe WYSIWYG)
1.4.14 - Widgets, Nuggets, Blogroll
Widgets, Nuggets, Blogroll
WidgetNuggetKlötze
Viele Webservices erlauben es, ihre Dienste mit einem
einfachen Code-Schnipsel auf der eigenen Seite einzubinden. Beliebte
Beispiele dafür sind zB. Google AdSense, das aktuelle Wetter, die
letzten Flickr-Bilder und vieles mehr. Solche eingebundenen Schnipsel
bezeichnet man als Widgets oder Nuggets/Klötze. Diese lassen sich
bei Serendipity leicht in das eigene Blog einbauen.
Blogroll
Ein Beispiel für ein Widget ist die sogenannte Blogroll. Dies ist
letztlich nichts anderes als eine Liste von Blogs, die man persönlich
liest oder als empfehlenswert betrachtet. Sie erlaubt es zB.,
den eigenen Freundeskreis virtuell zu präsentieren.
Durch Blogrolls werden die Leser eines Blogs auch auf thematisch ähnliche oder
sozial verbundene Blogs aufmerksam. Kein unwichtiges Feature, wenn man
bedenkt, dass sich die Popularität
häufig verlinkter Blogs in Suchmaschinen steigert.
1.5 - Templates, Themes und Styles
Templates, Themes und Styles
themeTemplate-S@TemplatesThemesStylesLayout
Alles, was der Besucher eines Blogs sieht, entspringt einem
zentralen Layout. Die Begriffe Template, Theme, Style
und Layout sind im Kontext von Serendipity grundsätzlich synonym und
bezeichnen lediglich eine Ansammlung von Dateien, die später in HTML-Code
und Design übersetzt werden.
Der HTML-Code eines Templates enthält Platzhalter (sogenannte
Platzhalter|see{Smarty, Variablen}Smarty!Variablen
Smarty-Variablen), an deren Stelle später der Artikeltitel, -text oder
andere dynamische Inhalte erscheinen.
1.6 - Spam, Bots, Captcha
Spam, Bots, Captcha
SpamBots
Mit zunehmendem kommerziellen Gewicht des Internets ist es attraktiv, für
Webseiten auf so vielen Partnerseiten wie möglich zu werben. Sobald der
"Partner" aber mit Werbung bombardiert wird oder diese unfreiwillig
zB. in Form von Gästebucheinträgen und Kommentaren zu redaktionellen
Inhalten erhält, spricht man gemeinhin von Spam. Dabei helfen
automatisierte Systeme (Bots) den Spammern, ihre Werbung möglichst
vielfältig und schnell auf fremde Webseiten zu schleusen. Wie beim
Medium E-Mail, in dem mehr als zwei Drittel aller weltweit versandten E-Mails
unerwünschte Werbemails sind, geht man bei Foren und Weblogs davon
aus, dass eine ähnlich hohe Quote von Beiträgen aus automatisiertem (und teilweise
abgewehrtem) Spam besteht.
Software kann nur sehr schwer unterscheiden, ob der Textbeitrag
eines Besuchers "echt" ist oder von einem automatischen System stammt.
Aufgrund der Funktionsweise des Internets ist es nicht möglich
herauszufinden, ob ein Aufruf einer Webseite von einem Menschen oder von
einer Maschine stammt. Daher beschäftigen sich die meisten Techniken zur
Spamabwehr damit, diesen Unterschied herauszuarbeiten.
Schon in den Anfangszeiten der Informatik postulierte der Mathematiker Alan
Turing, wie sich Mensch und Maschine unterscheiden lassen:
Bei Turing-Tests setzt man Abfragetechniken ein, die die Interaktion eines
Turing-Test
Menschen erfordern: Er soll logische Aufgaben lösen, Farben oder Bilder
analysieren etc. - alles Dinge, die eine Maschine nach heutigem
Forschungsstand nicht können sollte.
CaptchaCaptchas
Eine gebräuchliche Form dieses Tests nennt sich CAPTCHA (Completely
Automated Public Turing Test to tell Computers and Humans Apart).
Captchas nutzen Grafiken mit einer Zahlen- oder Buchstabenkombination, die
häufig noch dazu visuell verfremdet dargestellt wird. Der vor dem Rechner sitzende Mensch soll
diese identifizieren
und eingeben. Nur wenn die eingetippten Zeichen mit denen auf dem Bild
übereinstimmen, gilt eine Nachricht nicht als Spam.
Ein großes Problem dieser Grafiken ist der höhere Performancebedarf
sowie die Tatsache, dass sehbehinderte Menschen
bei der Entzifferung oft Probleme haben. Auch sind Bot-Entwickler nicht
untätig und haben mittels Schrifterkennung per OCR [*]
Optical
Character Recognition große
Fortschritte gemacht, so dass sie geläufige Captchas doch automatisiert entziffern
können.
1.7 - RDF, Semantic Web, Mikroformate
RDF, Semantic Web, Mikroformate
RDFSemantic Web
Schon heute lässt sich die Datenflut des Internets kaum bewältigen, noch
ist sie annähernd überschaubar. Volltextsuchmaschinen sind normalerweise
nicht in der Lage, die im Web publizierten
Texte anhand der üblichen grammatikalischen Syntax miteinander in Beziehung
zu bringen. Um
dieses Problem zu beseitigen, wurde die Initiative des Semantic
Web (Semantisches Internet) gegründet. Diese entwarf eine Syntax namens
RDF (Resource Description Framework) auf Basis der XML-Regeln.
RDF-Anweisungen lassen sich in XHTML-Daten einbetten und
repräsentieren Metadaten (etwa Bildunterschriften, thematische
Eingrenzungen, Querverbindungen ...) zu einem gegebenen Dokument.
Anhand der Metadaten können Suchroboter und andere Webservices Seiten leichter
analysieren und gewichten. Je mehr Metadaten verfügbar sind,
desto engmaschiger lassen sich alle Informationen des Internets
miteinander verknüpfen - und das nun auch nicht mehr nur einseitig.
Zum heutigen Zeitpunkt ist die Erfassung von Metadaten eine recht
aufwendige Sache und obliegt dem Redakteur eines Textes. Daher sind
brauchbare RDF-Metadaten noch recht wenig verbreitet und
Mikroformate
beschränken sich auf sogenannte Mikroformate.
Darunter versteht man Abwandlungen des RDF-Standards oder einfacher:
XML-Attribute, die ein Dokument um spezialisierte Metadaten ergänzen,
zB. um Visitenkarten, Kalenderdaten oder Produktbewertungen.
1.8 - Tagging
Tagging
TaggingTagwolken@Tag-Wolken
Häufig handelt es sich bei Blogs um lose Artikelsammlungen, die der Autor mal mehr
und mal weniger miteinander in Bezug gesetzt hat. Klassischerweise
wurden Artikel thematisch ausschließlich festen Kategorien
zugeordnet. Damit stand der Redakteur vor dem Problem, sich bereits von
vornherein Gedanken über eine hierarchische Struktur seiner zukünftigen
Texte machen zu müssen.
Aus dieser Not heraus wurde das Tagging erfunden: Einem Artikel
lässt sich so dynamisch eine beliebige Menge an Schlagwörtern zuordnen.
Mit deren Hilfe kann sich ein Benutzer zu Artikeln
weiterführen lassen, die dasselbe Stichwort tragen. Das geht zB. über
Tagwolken, also Übersichten der meistgebrauchten Tags,
die häufig durch unterschiedliche Schriftgrößen gewichtet werden.
Gerade im Kontext von Foto-Providern wie Flickr ist Tagging sehr
sinnvoll. Ein Bild einer starren Hierarchie zuzuordnen bedeutete viel
Arbeit, ohne zwingend für mehr Übersicht zu sorgen.
Anhand der Stichwörter jedoch kann man zügig auch andere Bilder mit
ähnlichem Kontext auffinden, zB. weitere Fotos, die mit dem Begriff
"Hochzeit" verkettet sind.
1.9 - Wiki
Wiki
Der Begriff Wiki steht für eine offene Webseite, auf der sich
Informationen von vielen Benutzern gleichzeitig zusammentragen lassen.
Mittels Versionierung und Protokollierung werden unterschiedliche Bearbeitungen
hervorgehoben und miteinander kombiniert.
Zum großen Erfolg der Wikis trug ihre einfache Syntax bei. Anstelle
komplizierter HTML-Regeln beschränken sich
Wiki-Anwendungen auf einfache Auszeichnungen (die je nach Software jedoch
variieren können). Beispielsweise lässt sich ein Wort durch Einschließen in
Sternchen * fetten.
Das zentrale Problem von Wikis ist der Vandalismus ihrer Benutzer --
die Freiheit in einer kollaborativen Umgebung können Einzelne
ausnutzen, indem sie destruktive Änderungen vornehmen, was zu hohem
Moderationsaufwand führt.
Gerade im Bereich des freien Wissensmanagements (Stichwort
Wikipedia) hat sich
eine solche Form der technisch lockeren Zusammenarbeit jedoch
bewährt.
1.10 - AJAXAJAX
AJAX
Eine Technologiekomponente, die das Web 2.0 nachhaltig verändert hat,
wird unter dem Schlagwort AJAX (Asynchronous Javascript and XML)
geführt. Letztlich handelt es sich dabei
um eine einfache Form von JavaScript, die XML als Basis für Variablen
und Daten verwendet. Innerhalb des Browsers können in dieser Sprache geschriebene Skripte mit
Webservices kommunizieren und so Webseiten weiter dynamisieren. Setzte
früher jede Aktion auf einer Webseite das Ausfüllen und Absenden von Formularen
voraus, können nun auch Aktionen ausgeführt werden, ohne dass
der Benutzer merkt, dass neue Komponenten nachgeladen werden.
Dies bringt Web-Anwendungen den gewohnten Desktop-Anwendungen um einiges
näher, stellt jedoch auch höhere Anforderungen an Programmierer und
Clients und führt zu neuen Arten von Sicherheitslücken.
1.11 - Pod- und Vodcast
Pod- und Vodcast
PodcastVodcast
Dass Internet-Surfer über ständig höhere Bandbreiten verfügen, schafft den
wachsenden Bedarf an Multimedia-Inhalten. Webseiten (und damit auch Blogs)
lassen sich um Videos oder Audio-Dateien ergänzen, die im Browser
automatisch abgespielt werden. Da Videos und
Audio-Dateien auch in die RSS-Feeds der Blogs eingebunden werden können, die
MP3-Player wie Apples iPod automatisch importieren,
spricht man hier von Podcast (Audio) oder Vodcast (Video).
1.12 - Moblogging
Moblogging
Moblog
Das mobile Bloggen via Handy oder PDA bezeichnet man als Moblogging.
Auf Reisen hat man meist keinen Zugriff auf einen normalen Webbrowser. Um
dennoch Inhalte in einem Blog publizieren zu können, gibt es die
Möglichkeit, eine E-Mail an das eigene Blog zu schicken, die
automatisch als Beitrag veröffentlicht wird. Auch gibt es inzwischen
mobile XML-RPC-Anwendungen, die über eine GPRS/UMTS-Verbindung direkt auf
das Blog zugreifen.
Ein Hyperlink (Kurzform: Link), umgangssprachlich auch Verknüpfung oder
Verweis genannt, gibt die Fundstelle eines Dokuments im Internet an
und erlaubt es so, verschiedene Dateien miteinander zu vernetzen.
Das Konzept ähnelt Querverweisen oder
Fußnoten bei einem Buch: Zeigt Ihnen Ihr Browser einen speziell markierten
Begriff in einer HTML-Seite, können Sie
durch dessen Anwahl zur referenzierten Internetseite springen. Erst durch
diese Verweise werden die Dateien unterschiedlicher Webserver miteinander
in Verbindung gesetzt und stellen dadurch das
ursprüngliche Kernkonzept der HTML-Auszeichnungssprache dar.
Den Begriff Link benutzt man oft als Synonym für den Fachbegriff
URL (Uniform Resource Locator).
URL Was sich so kompliziert anhört, ist das, was Sie üblicherweise unter dem
Internetadresse|see{URL}URL
Namen Internetadresse bereits kennen. Diese beschreibt, auf welche
Art und Weise (das heißt: über welches Protokoll, siehe Seite
Protokolle) und von welchem Rechner sich das Dokument beziehen lässt
(http://www.ebay.de, http://www.example.com). Oft enthält sie
zudem Pfadangaben/Dateinamen wie in https://ophian.github.io/blog/index.html.
Außer den URLs gibt es noch die URIs (Uniform Resource)
URI Identificators
Deren Definition geht über die der URLs hinaus. Eine URI kann sogenannte
URL-Variablen
enthalten, die nicht Bestandteil einer URL sind. Sie werden
üblicherweise von einem ?-Zeichen eingeleitet und sind mittels
& voneinander getrennt. In vielen Fällen ist der Unterschied
zwischen URL und URI für Sie als Leser unerheblich, und oft wird von einer
URL gesprochen, wenn man fachlich eigentlich URI sagen
müsste. Als Merksatz gilt: Sobald an eine URL Variablen
angehängt sind, muss man von einer URI sprechen.
terminologie-permalinksPermalinksLinks!Perma-\textasciitilde|see{Permalinks}
Ein Permalink ist eine spezielle URL, die den Inhalt eigentlich dynamischer
Webseiten permanent "eingefroren" zugänglich macht.
Bei deren Aufruf erhält
ein Besucher immer dieselbe Seite, egal, wann er sie aufruft. Obwohl sich
Übersichtsseiten aufgrund des chronologischen Bezugs bei jedem neuen
Blogeintrag ändern, erlaubt es ein Permalink,
Artikel eindeutig zu identifizieren und immer wieder aufrufen zu können.
Permalinks können in Serendipity nach Benutzervorgabe formatiert werden
und unterschiedliche Prä-/Postfixe aufweisen (siehe Seite
Permalinks-Frontend).
1.14 - Suchmaschinenoptimierung
Suchmaschinenoptimierung
SEOSEO
Der Bereich der Suchmaschinenoptimierung (kurz SEO für Search Engine
Optimization) ist ein sehr weites Feld. Um Ihre Webseite möglichst weit oben in den
Suchergebnissen von Google und Co. erscheinen zu lassen (ihnen also ein
Ranking
hohes Ranking zu verschaffen), gibt es einige
Tricks und Kniffe und vor allem auch Konzeptionelles zu beachten.
Webseiten werden heutzutage fast automatisch von allen Suchrobotern
gefunden. Jeder Link, der auf Ihre Seite führt, gibt dieser mehr
Page Rank
Gewicht bei der Berechnung des Page Rank bei Google [*]
Andere
Suchmaschinen wie Yahoo benutzen vergleichbare Algorithmen, die ähnlich wie die
Rezeptur eines schwarzen Zuckergetränkes als Firmengeheimnis gelten und
Grund vieler Spekulationen sind.. Die Begriffe, die Sie auf
Ihren Unterseiten angeben, werden jeweils verschlagwortet und erscheinen in
Abhängigkeit von der Gewichtung
an oberer oder unterer Stelle in der Liste entsprechender Suchmaschinenergebnisse.
Serendipity kann Ihnen teilweise bei der Suchmaschinenoptimierung
helfen. Durch sprechende URLs (siehe Seite
mod-rewrite) lassen sich Artikeltitel mit in die URL aufnehmen,
was die Gewichtung erhöht. Die Verwendung korrekt
verschachtelter Überschriften innerhalb der HTML-Seite und eine gültige
HTLM-Syntax steigern die Effektivität eines Suchroboters. Weiterhin gibt
es Plugins, mit denen Sie Kreuzverkettungen zu ähnlichen Artikeln in Ihrem
Google Sitemap
Blog erstellen können (siehe Seite freetag) oder auch eine spezielle
Google-Sitemap-Datei (siehe Seite googlesitemap) anlegen.
Letzten Endes zählt aber auch die Strukturierung Ihrer Artikeltexte sehr
viel. Die Verteilung der (Schlüssel-)Wörter
ist ebenso wichtig wie die Benutzung von Wörtern, die Ihre Besucher
womöglich zu einem Thema erwarten. Nicht unwichtig kann der Aufbau
eines Partner-Netzwerks sein, da Verlinkungen auf Ihre Seite den
Page Rank erhöhen. Hier wird jedoch auch viel unseriöse
Geschäftemacherei betrieben. Hüten Sie sich also vor Tricks, die womöglich
ins Gegenteil umschlagen können.
Letztlich erhalten Sie gute Suchmaschinenergebnisse nur dann, wenn Sie
für Ihre Besucher interessante Texte oder Services anbieten. Alle
anderen technischen Kniffe nutzen Ihnen nichts, wenn die Besucher
herausfinden, dass Ihre Webseite nicht das hält, was sie durch eine
Suchmaschine verspricht.
1.15 - Protokolle: HTTP, FTP, SSHProtokolle
Protokolle: HTTP, FTP, SSH
Protokolle
Im Internet gibt es eine beinahe unendliche Zahl verschiedener Protokolle, die Regeln
definieren, nach denen Rechner, Anwendungen und Server miteinander kommunizieren.
Im Zusammenhang mit Serendipity sind folgende Protokolle von Belang:
HTTPHTTPShttps
HTTP, das Hypertext Transfer Protocol,
ist sicherlich das geläufigste, denn Sie
verwenden es bei jedem Abruf einer Internetseite. Erkennbar ist dies
daran, dass die meisten URLs, die Ihr Webbrowser anzeigt, ein vorgestelltes
http:// enthalten. Über dieses Protokoll überträgt der
Webserver ein Dokument an den eigenen Computer, wobei der Webbrowser als
Empfänger dient.
Die Sonderform https tritt auf, wenn ein Webserver eine sichere,
verschlüsselte Verbindung zur Datenübertragung nutzt. Dabei kommt das
Protokoll SSL (Secure Socket Layer) zum Einsatz, so dass die
übertragenen Daten durch den Einsatz von Zertifikaten ausschließlich vom Server
und vom Client entschlüsselt werden können. Bei http ist es grundsätzlich
möglich, dass auch andere Benutzer oder Proxies die Übertragung
belauschen können.
FTP
Obwohl auch HTTP als Protokoll zum Dateitransfer dient und mittlerweile oft
dafür eingesetzt wird, gibt es ein noch spezielleres (und älteres)
Protokoll für den
Dateiaustausch: das File Transfer Protocol FTP. Dieses Protokoll ermöglicht nicht nur den
Download
Empfang (Download), sondern auch ein Senden von Dateien
Upload
(Upload).
Im Gegensatz zu graphischen Betriebssystemen wie Windows kann Unix
komplett mit textbasierten Befehlen gesteuert werden, was sich
SSHSecure Shell|see{SSH}
gerade im Einsatz als Webserver als große Erleichterung herausgestellt
hat. Das geht auch ferngesteuert übers Netz, am besten über einen
abgesicherten SSH-Zugang.[*]
SSH steht für Secure Shell. Mit
Shell bezeichnet man ein Programm, das die interaktive Steuerung
über Textbefehle ermöglicht.
Diese Zugriffsmöglichkeit auf einen Server bezeichnen viele Leute irrtümlicherweise auch
root-Zugang
als root-Zugang. Den hat man aber nur, wenn man über das Login
(meist als User root) volle Zugriffsrechte für den Server bekommt.
SSH-Zugang ist aber auch mit reduzierten
Zugriffsrechten (als unprivilegierter Nutzer) möglich.
Web-Provider bieten selten SSH-Zugang an.
Häufig steht ausschließlich FTP und HTTP zum Zugriff auf
einen Server zur Verfügung. Die Bedienung einer SSH-Konsole setzt zudem
einiges an Fachkenntnissen voraus, die wir in diesem Buch nicht
vermitteln können. Dennoch wird an Stellen, wo SSH-Zugriff die Arbeit
erleichtert, auf diesen eingegangen.
1.16 - Frontend, Backend, Admin-Oberfläche
Frontend, Backend, Admin-Oberfläche
FrontendBackend
Bei vielen Web-Anwendungen unterscheidet man zwischen
Frontend und Backend. Vereinfacht ausgedrückt ist ein
Frontend all das, was der Besucher einer Webseite sieht. Als Backend oder
Admin-Oberfläche
bezeichnet man das, was ein Redakteur oder Administrator nach einem Login in
den geschützten Bereich sehen kann.
1.17 - Cookies und Sessions
Cookies und Sessions
sessioncookiesSessionSitzung|see{Session}
Da HTTP ein verbindungsloses Protokoll ist, "vergisst" der
Webserver nach jedem Zugriff, was der Benutzer beim vorigen Aufruf getan hat.
Das ist besonders bei dynamischen Web-Anwendungen ärgerlich, da man
sich normalerweise bei jeder Aktion erneut einloggen müsste. Als
rettenden Kniff gibt es das Konzept der Sessions oder Sitzungen.
CookiesCookie Webbrowser besitzen einen kleinen Datenspeicher. Dort kann ein Webserver
den Browser anweisen, eine kleine Datenmenge auf der eigenen Festplatte
zu speichern. Diesen kleinen Datensatz nennt man Cookie. Er
wird meistens dazu eingesetzt, einen Besucher eindeutig
zu identifizieren, so dass er autorisierte Aktionen
ausführen kann. Cookies haben einen schlechten Ruf erworben, da viele
Werbetreibende sie dazu benutz(t)en, ihre Werbe-Zielgruppe
eindeutig wiederzuerkennen und Statistiken über deren Nutzerverhalten zu
sammeln. Auch besteht oft die Angst, dass ein Webserver so auf die eigene
Festplatte zugreifen könnte.
Diese Furcht ist normalerweise unbegründet. Fast alle Browser ermöglichen
es Ihnen, Cookies nur von vertrauenswürdigen Quellen und nur im Bedarfsfall
anzunehmen oder abzuweisen. Serendipity benötigt solche Cookies ebenfalls
für das Frontend und das Backend, daher muss der Webbrowser so eingestellt
werden, dass er Cookies annimmt.
Um Nutzeraktionen als zusammengehörige Session zu
erkennen, speichert Serendipity eine einfache
Session-ID
Zufallskombination aus Buchstaben und Zahlen, die Session-ID, als
Cookie im Browser des Besuchers.
Bei jedem Folgeaufruf überträgt dieser die ID zurück an den Server, der
damit den Besucher identifizieren und zuvor gesetzte
Session-Daten@Sessiondaten
Variablen (die Sessiondaten) wiederherstellen kann. Sessiondaten werden
auf dem Server gespeichert und nicht in Cookies, so dass der Nutzer sie
nicht beliebig verändern kann.
Eine Sitzung ist zeitlich begrenzt. Das heißt, dass nach einem gewissen
Timeout die Sessiondaten auf dem Server (automatisch) gelöscht
werden und keinen unnötigen Speicherplatz beanspruchen.
1.18 - Parsen und Kompilieren
Parsen und Kompilieren
ParsingKompilieren
Der englische Begriff to parse beschreibt das maschinelle, automatisierte
Auslesen einer Datei. Bei diesem Vorgang interpretiert ein Parser etwaige Platzhalter und
Instruktionen (Schleifen, Bedingungen ...).
Die Smarty-Templatedateien enthalten allesamt Anweisungen, die erst nach diesem
Vorgang des Parsens gültige HTML-Ausgaben enthalten.
Alternativ bezeichnet man diesen Vorgang auch als Kompilierung (von englisch: to
compile). PHP selbst stellt eine interpretierende
Skriptsprache dar, die erst nach der Interpretation der
PHP-Funktionen und -Anweisungen einen maschinenausführbaren Code zurückliefert.
Kapitel 2: Einrichtung / Installation
Die folgenden Installationsanweisungen sind bewusst sehr ausführlich
gehalten, um auch Anfängern den Einstieg zu ermöglichen. Fortgeschrittene
Anwender finden eine Zusammenfassung
im Abschnitt Schnelle Installation auf Seite
Schnelle Installation.
2.1 - Wahl der Waffen
Wahl der Waffen
Serendipity!benötigte Programme|(FTP
Um Serendipity voll auszunutzen, benötigt man einiges an Zusatzsoftware, als erstes
ein Programm um Dateien (und auch Serendipity selbst) auf den eigenen Server hochzuladen.
Üblicherweise geschieht dies mittels eines FTP-Programmes, in manchen Fällen aber auch
per SSH bzw. SFTP [*]
siehe Abschnitt Protokolle auf Seite
Protokolle.
Sollten Sie FTP einsetzen, empfiehlt sich ein Programm, das mit Threads [*]
ThreadingThreading (FTP)
wird von FTP-Programmen benutzt, um mehrere gleichzeitige Verbindungen zu
einem Server aufzubauen.
umgehen kann, was den Upload vieler kleiner Dateien beschleunigt. Für Windows sind
SmartFTPFileZilla
SmartFTP oder FileZilla [*]
https://www.smartftp.com/https://filezilla-project.org/
für solche Zwecke empfehlenswert. Weiterhin sollte das FTP-Programm auch ermöglichen,
Dateirechte mit dem Befehl chmod zu ändern.
Zum Entpacken von Serendipity benötigen Sie ein Programm wie 7-Zip oder
Winzip oder entsprechende Kommandozeilen-Tools in einer Linux-Umgebung.
Um das Blogsystem zu bedienen, benötigen Sie selbstverständlich einen aktuellen
Webbrowser. Serendipity läuft mit allen gängigen Webbrowsern (Mozilla
Webbrowser!AnforderungenBrowser|see{Webbrowser}Browser|WebbrowserBrowser|Developer-Tools
Firefox, Google Chrome / Chromium, Edge, Vivaldi, Opera, Safari, und Weitere).
Um später leicht Änderungen an Ihrem Layout durchzuführen, empfiehlt der Autor
den Einsatz von Mozilla Firefox oder Chromium Variationen, um im Bedarfsfall
Designänderungen direkt in der Browser-Ansicht testen. Dies erleichtert die
Template-Erstellung ungemein.
Im Folgenden gehen wir davon aus, dass Sie entweder
selbständig einen Webserver mit PHP und Datenbanken eingerichtet haben
oder von einem Dienstleister einen entsprechend aufgesetzten Webserver
bereitgestellt bekommen.
Dort müssen Sie Serendipity unterhalb des
Document Rootexample.com
Document Root (siehe Seite DocRoot) ablegen.
Im Folgenden nennen wir dieses Verzeichnis exemplarisch
/var/www/example.com.
Alle Angaben, die diesen Pfad enthalten, müssen Sie auf Ihre
individuellen Gegebenheiten anpassen.
VerzeichnisbenennungFehler!Verzeichnisbenennung
Sie werden Serendipity in einem Unterverzeichnis dieses Stammpfads
installieren, so dass Sie das Blogsystem später über die URL
http://www.example.com/serendipity/ aufrufen können. Ob Sie dieses
Unterverzeichnis ebenfalls serendipity nennen, bleibt Ihnen
überlassen - es darf auch blog, tagebuch oä. heißen.
Sie sollten jedoch Sonderzeichen wie den Unterstrich (_) sowie Zahlen
am Anfang oder Ende des Verzeichnisnamens vermeiden, da dies zu Problemen mit
dynamisch generierten URLs führen kann.
Sie können Serendipity natürlich auch direkt ins Stammverzeichnis selbst
installieren. Beachten Sie jedoch dabei, dass dadurch die Installation anderer
Software, etwa eines Forums oder eines Statistikprogramms, schwieriger werden
könnte, wenn die URL-Umformung aktiviert wurde und Serendipity direkte Zugriffe
auf Unterverzeichnisse möglicherweise als eigene Seitenausgabe auffasst
(siehe Seite mod_rewrite ganz
unten und .htaccess im Allgemeinen).
2.2.1 - Upload der Dateien
Upload der Dateien
DownloadSerendipity!Download
Serendipity Styx sollten Sie natürlich direkt auf der GitHub-Projektseite.[*]
https://github.com/ophian/styx/releases
unter Releases herunterladen. Es ist ratsam mit den namentlich ausgezeichneten Downloads zu beginnen,
denn die Source code (zip) und Source code (tar.gz) Dateien sind reine Developer snapshots, während die
namentlichen Serendipity Archive über eine interne Bereinigung und mehrere Sicherheitsmaßnahmen
wie Berechtigungen etc. verfügen.
NightliesSnapshotsLite ReleaseTarball
Auf GitHub finden Sie sowohl die aktuellste Ausgabe als auch Beta- und
ältere Versionen und die täglichen Snapshots. Obwohl es sich bei
Letzteren um die tagesaktuellen Entwicklerversionen handelt, sind diese bei
Serendipity für gewöhnlich sehr stabil.
Außerdem können Sie die Pakete in mehreren Archivformaten
herunterladen: als zip-Datei, sowie als xz
(Dateinamensendung tar.xz) oder
gzip (Dateinamensendung tar.gz) gepackten
Tarball. Alle drei Varianten enthalten die gepackten
PHP-Dateien, die Sie auf Ihren Webserver hochladen müssen. Für
Windows-Benutzer ist das zip-Archiv am einfachsten zu handhaben,
unter Unix empfiehlt sich der Tarball. Am besten schauen Sie vorher kurz
einmal nach welches Format tatsächlich angeboten wird.
Falls Sie via ssh direkten Shellzugriff auf Ihren Webserver haben,
laden Sie das Paket mittels wget ohne Umwege direkt auf den Server
und entpacken es mit einem Kommandozeilen-Programm:
user@server:~# cd /var/www/example.com/
user@server:~# wget "https://github.com/ophian/styx/releases/download/3.2.0/serendipity-3.2.0.tar.xz"
[...]
user@server:~# tar -xvf serendipity-3.2.0.tar.xz
[...]
Anderenfalls laden Sie das Paket auf Ihren eigenen Rechner und
entpacken es dort mit einem geeigneten Programm in ein temporäres
Verzeichnis. Aus diesem Ordner heraus laden Sie alle Dateien und
Unterverzeichnisse des entpackten
serendipity-Unterverzeichnisses mit allen Dateien mittels
FTP-Programm auf Ihren Webserver.
Fehler!beim Upload
Achten Sie beim Aufspielen der Dateien unbedingt darauf,
dass der Transfer nicht an einer Stelle abbricht oder fehlschlägt.
Teilweise hochgeladene Dateien können Serendipity
unbenutzbar machen. Da insgesamt mehrere hundert kleine Dateien
hochgeladen werden, empfiehlt es sich, im FTP-Programm die Benutzung
sogenannter Threads zu aktivieren. Damit öffnet es mehrere
parallele FTP-Verbindungen und lädt die Dateien so schneller hoch.
In jedem Fall sollten Sie sorgfältig auf etwaige Fehlermeldungen achten.
2.2.2 - Abgesicherte Installation
Abgesicherte Installation
DownloadSerendipity!Download
Serendipity Styx wird über eine sogenannte abgesicherte
Installation geschützt, um zufällige andere Gäste aus dem Installationsprozess herauszuhalten.
Dazu dient eine temporäre install_token.php Datei, die man schnell per FTP
heraufladen und im Root Verzeichnis von Serendipity platzieren muss.
Um eine abgesicherte Installation auszuführen, müssen Sie diese Datei namens
install_token.php mit dem String (Beispiel Token)
in diesem Wurzelverzeichnis erstellen. Achten Sie darauf keine zusätzlichen Leerzeichen
oder Zeilen am Anfang oder Ende der Datei einzufügen. Dieser Token ist einzigartig
und fixiert die Autorisierungs-Beziehung zwischen Ihnen und dem Installer.
Sobald diese Datei existiert, müssen Sie die Installation innerhalb der nächsten
XX Minuten ausführen und dürfen ihren Browser währenddessen nicht schließen.
Sie müssen Cookies erlauben.
Fügen Sie also nun den Sicherheits Install Token ein, der Ihnen auf der Seite angegeben wird,
laden Sie die Datei hoch und reloaden Sie die Browserseite.
Sie sind nicht autorisiert die Installation auszuführen, wenn Ihr vorgegebener
Install-Token nicht demjenigen aus der hochgeladenen Datei install_token.php
entspricht. Stellen Sie sicher, dass Sie die Datei mit dem korrekten Inhalt erstellt haben.
Sie können einen neuen Token erstellen, in dem Sie die Datei löschen.
Ist ihr sicherer Install-Token gültig, können Sie Serendipity wie gehabt installieren.
Selbst wenn Sie vergessen sollten die Datei nach getanem Werk wieder zu löschen,
richtet diese keinen Schaden an.
2.2.3 - Einrichten der Verzeichnisse
Einrichten der Verzeichnisse
Nach dem Upload finden Sie auf Ihrem Webserver
im Verzeichnis serendipity
einige Dateien mit .php-Endung (index.php,
comment.php, serendipity_admin.php ...) sowie einige
Unterverzeichnisse (bundled-libs, docs,
include, lang, plugins, ...).
Um Zugriffsrechte auf einem Server zu verwalten, bedienen sich sowohl
Windows- als auch Linux-Systeme sogenannter Eigentümer- und Gruppenrechte.
Jeder Benutzer des Systems kann Dateieigentümer und jeder Eigentümer kann
Mitglied einer oder mehrerer Benutzergruppen sein.
SchreibrechteZugriffsrechteBenutzergruppen!RechteZugriffsrechte
Jede Datei (und jedes Verzeichnis) auf einem Server ist einem Eigentümer
und einer Gruppe zugewiesen. Für beide wird der Zugriff auf eine Datei
über ein Zugriffs- (oder Ausführbarkeits-), Lese- und Schreibrecht geregelt.
Meist hat ein Eigentümer die vollen Rechte an einer Datei: Er kann sie
ansehen, ändern und löschen. Die anderen Mitglieder derselben Benutzergruppe
können jedoch abweichende Rechte haben, so dass sie die Datei nur ansehen,
aber nicht verändern dürfen. Zudem muss noch geregelt werden, welche
Zugriffsrechte Benutzer haben, die weder Eigentümer noch Gruppenmitglieder
sind. Auch für diese "anderen Benutzer", also den "Rest der Welt", werden
Zugriffs-, Lese und Schreibrecht aufgeteilt.
Wenn Sie eine Datei mittels FTP auf einen Webserver laden, tun Sie dies
(zwangsläufig) mit dem Benutzeraccount, der für den FTP-Zugriff eingerichtet
wurde. Hochgeladene Dateien werden diesem Benutzeraccount und standardmäßig
einer Gruppe zugewiesen, der Ihrem Benutzerkonto angehört. Dieses Vorgehen
stellt sicher, dass andere Benutzer, die auf demselben Server tätig sind, nicht
einfach Ihre Dateien lesen oder verändern können. Optimalerweise haben diese
keine Möglichkeit, auf von Ihnen hochgeladene Dateien zuzugreifen.
Die Webserver-Software, die die von Ihnen hochgeladenen Dateien interpretiert
und als Webseite ausliefert, läuft ebenfalls mit den Rechten eines bestimmten
Benutzers. Dieser heißt häufig www-data, wwwrun oder auch
nobody. Damit dieser Systembenutzer Software wie Serendipity ausführen
kann, muss er bestimmte Rechte an den von Ihnen hochgeladenen Dateien haben. Das
müssen Sie sicherstellen. In üblichen Konfigurationen ist Ihr Benutzeraccount
Mitglied derselben Gruppe wie der Webserver-Nutzer, die Lesezugriff auf alle
hochgeladenen Dateien hat.
Beim Hochladen von Dateien mittels FTP können Sie in diese Rechte
eingreifen. Dazu bieten viele Programme bei Rechtsklick auf eine Datei
oder ein Verzeichnis ein Menü namens Permission oder CHMOD
an (Abbildung 2.1a).
Abbildung 2.1a: CHMOD-Maske des FTP-Programmes FileZillaAbbildung 2.1b: CHMOD-Über die Linux Konsole
Dort trägt man, Unix-Konventionen entsprechend, die Zugriffsrechte für
Eigentümer/Benutzer (Owner), Gruppe (Group) und Rest
(Other) ein: für jede dieser drei Nutzerkategorien eine Zahl.
Eine 0 bedeutet "kein Zugriff", eine 1 "Ausführen
möglich", eine 2 "Schreiben erlaubt" und eine 4
"Lesen erlaubt". Diese Zahlen lassen sich addieren, so dass
ein Lese- und Schreibzugriff durch die Zahl 6 angegeben wird. Für
Verzeichnisse gilt dabei, dass diese nur betreten werden
dürfen, wenn das Recht mit der Zahl 1 in der Summe enthalten ist, etwa beim
Vollzugriff mit 7.
Mit der Zugriffsmaske 777 erhält jeder Nutzer volle Zugriffsrechte auf
die betroffene Datei. Damit stellt man einfach sicher, dass sowohl der eigene
Benutzeraccount als auch der des Webservers volle Zugriffsrechte haben --
allerdings auch andere Benutzer auf demselben Server. Daher ist es besser, die
Zugriffsrechte von Dateien und Verzeichnissen so strikt wie möglich zu setzen.
Wie dies konkret bei Ihnen aussieht, klären Sie am besten mit Ihrem Provider.
Als Beispielhaft gelten also 775 für Verzeichnisse und 644 für Dateien.
Am besten konsultieren Sie die Serendipity Styx FAQ für mehr.
Damit der Webserver Serendipity ausführen kann, benötigt er Leserechte für
alle Dateien und Verzeichnisse. Um Serendipity zu installieren, braucht
er zudem anfangs Schreibzugriff auf das Stammverzeichnis, damit er die Dateien
serendipity_config_local.inc.php und .htaccess erstellen kann.
Darüber hinaus wird das Installationsprogramm die Unterverzeichnisse
templates_c, archives und uploads zu erstellen versuchen.
Sollte es diese schon geben, müssen Schreibrechte für den Webserver-Benutzer
dafür vergeben werden. Nach der Installation benötigt der Webserver nur noch
Schreibrechte auf die genannten drei Unterverzeichnisse und zwei Dateien, den
globalen Schreibzugriff auf das Stammverzeichnis können Sie also wieder
entfernen.
Wenn Sie darüber hinaus das Spartacus-Plugin zum Download von Templates
und Plugins nutzen wollen (siehe Kapitel Spartacus
ab Seite Spartacus),
müssen auch die Verzeichnisse plugins und templates
beschreibbar sein (und bleiben).
2.2.4 - Einrichten der Datenbank
Einrichten der Datenbank
DBeinrichtenDatenbank!einrichten|(
Nachdem nun also alle notwendigen Dateien hochgeladen wurden und Sie die
Zugriffsrechte konfiguriert haben, müssen Sie eine Datenbank für Serendipity einrichten.
Je nachdem, welche Datenbanksoftware auf Ihrem Webserver zur Verfügung steht,
kann dieser Vorgang unterschiedlich ausfallen.
Verwendet Ihr Webserver mindestens PHP5, ist die
SQLite!einrichten
Datenbank SQLite automatisch verfügbar. Dieses Datenbanksystem speichert alle
seine Datenbanken und Tabellen in einer einzigen Datei. Diese wird im
Serendipity-Verzeichnis abgelegt und während der Installation ohne Ihr Zutun
automatisch erstellt, es sind daher keine vorbereitenden Eingriffe notwendig.
Beim Einsatz von MySQL und PostgreSQL geht Serendipity davon aus, einen
Datenbankbenutzer und eine leere Datenbank vorzufinden. Üblicherweise erhält
man die Zugangsdaten von seinem Provider, da der Benutzeraccount bereits besteht.
Manche Provider gestehen Ihnen nur eine einzelne Datenbank zu, so dass Sie keine
neuen erstellen können. Das ist nicht weiter tragisch, da sich Serendipity
problemlos mit anderen Anwendungen innerhalb derselben Datenbank betreiben lässt.
Viele Provider bieten zudem eigene Oberflächen zur Erstellung einer Datenbank an.
Serendipity benötigt lediglich irgendeine Datenbank für seine Tabellen --
man kann also problemlos eine bereits bestehende Datenbank für die
Installation benutzen.
Für Styx und MariaDB/MySQL geben Sie der Datenbank am besten gleich
die korrekte utf8mb4_unicode_ci, bzw. noch besser die neuere und erweiterte
utf8mb4_unicode_520_ci Kollation mit auf den Weg.
Wie auch an anderer Stelle erwähnt, wird der Name MySQL hier als Synonym
für MariaDB/MySQL Datenbanken benutzt. Empfohlen ist auf MariaDB zu setzen,
ein Unternehmen das vom MySQL-Gründer Michael "Monty" Widenius betrieben wird,
und das in wesentliches Details gegenüber Oracles MySQL zu empfehlen ist.
Datenbank!RechtePrivileges
Sollte noch kein Datenbankbenutzeraccount bestehen, müssen Sie ihn anlegen.
Dabei ist wichtig, dass der Benutzer über alle Rechte verfügt, die Serendipity
später im Betrieb benötigt. Konkret heißt das, dass er Tabellen anlegen
(CREATE), aktualisieren (ALTER) und indizieren
(INDEX) sowie Datensätze anlegen (INSERT),
aktualisieren (UPDATE), lesen (SELECT) und löschen
(DELETE) darf.
Um für MySQL einen solchen Benutzer anzulegen, benutzt man (in einem Programm
wie phpMyAdmin, welches die meisten
MySQL!einrichtenphpMyAdmin!Nutzer anlegen
Provider anbieten) folgende SQL-Syntax:
CREATE DATABASE serendipity;
GRANT SELECT, CREATE, INSERT, UPDATE, DELETE, ALTER, INDEX ON serendipity
TO 'serendipity'@'%' IDENTIFIED BY PASSWORD 'passwort';
Diese beiden Befehle erstellen die leere Datenbank namens serendipity
und den gleichnamigen Benutzer, der die notwendigen Zugriffsrechte
erhält und sich über das Passwort passwort ausweisen muss.
Bei PostgreSQL benutzt man folgende Syntax:
PostgreSQL!einrichten
CREATE USER serendipity WITH PASSWORD 'passwort';
CREATE DATABASE serendipity WITH OWNER = serendipity;
GRANT SELECT, CREATE, INSERT, UPDATE, DELETE, ALTER ON DATABASE
serendipity TO 'serendipity'
Um die Serendipity-Installation erfolgreich durchzuführen, benötigen Sie den
Benutzernamen des Datenbanknutzers (hier serendipity), dessen
Passwort, den Namen einer leeren Datenbank und den
Namen (oder die IP-Adresse) des Datenbankservers.
Datenbank!einrichten|)
Nach diesen Vorarbeiten rufen
Sie die URL Ihrer Serendipity-Installation im Browser auf, hier also http://www.example.com/serendipity/.
Versuchen Sie nicht, eine Datei Ihrer lokalen Festplatte aufzurufen oder
eine Datei mittels FTP-Zugriff zu öffnen (zB. via Doppelklick). Dies
würde Ihnen lediglich den Quellcode der PHP-Anwendung anzeigen.
Stattdessen müssen Sie den Webbrowser einsetzen, damit Ihr Webserver die
PHP-Anwendung ausführt.
Bei korrekter Einrichtung des Webservers sehen Sie nun eine Kurzübersicht
wie in Abbildung 2.2, die aufführt, welche Voraussetzungen der Server erfüllen muss, ehe Sie
fortfahren können. Sollte sich diese entgegen Ihren Wünschen in englischer Sprache präsentieren,
konfigurieren Sie Ihren Browser so um, dass Deutsch die bevorzugte Sprache darstellt.
Fehler!bei der Installation
Weist Sie die Übersicht auf einen Fehler bei den Schreibrechten oder den
Server-Einstellungen hin, beheben Sie ihn und rufen Sie
die Installationsoberfläche erneut auf. Warnungen werden mit
roter Schriftfarbe dargestellt, eingeschränkte Funktionen oder Hinweise
in Gelb; korrekte Einstellungen sind grün hervorgehoben.
Hinweise der Installationsoberfläche zeigen dabei einen Unterschied
zwischen dem von Serendipity empfohlenen Wert und der Einstellung auf Ihrem
Webserver an. Im Gegensatz zu Fehlern können Sie Serendipity bei solchen Hinweisen aber
trotzdem betreiben, jedoch entweder mit Einbußen bei der Performance oder
Funktionalität.
Stimmen die systemseitigen Voraussetzungen, was gerade bei den Rechten oft schon die Regel ist, starten Sie die
Installationsoberfläche über einen der beiden Links am Ende der Seite: Einfache Installation
oder Fortgeschrittene Installation.
Die Einfache Installation verlangt von Ihnen nur die absolut
notwendigen Angaben. Dagegen bietet die Fortgeschrittene Installation
sämtliche Konfigurationsoptionen an, die sich auch später im laufenden Betrieb ändern lassen.
Da wir in Kapitel Konfiguration ab Seite Konfiguration
detailliert auf alle Optionen eingehen, klicken Sie an dieser Stelle am besten auf
Einfache Installation.
Die Folgeseite (Abbildung 2.3) stellt alle
Installationsoptionen in Gruppen unterteilt dar.
Der Abschnitt: Datenbankeinstellungen
DatenbankeinstellungenDatenbank!Einstellungen|(
In diesem Bereich stellen Sie die Zugangsdaten für die gewünschte
Datenbank ein. Im Feld Datenbanktyp können Sie zwischen allen im
PHP-Kern verfügbaren Datenbanktypen wählen.
Den Servernamen (meist localhost oder ein Name wie
db1231231.puretec.de) tragen Sie genauso wie den Namen und das
Passwort des Datenbankbenutzers in die zugehörigen Felder ein. Beim
Datenbanktyp SQLite spielen diese Einstellungen
keine Rolle und dürfen leer bleiben.
Als Datenbankname tragen Sie den Namen der, entsprechend der Beschreibung auf
Seite DBeinrichten,
erstellten Datenbank ein. Darin erstellt Serendipity Tabellen, deren Namen es das
Präfix serendipity_ oder styx_ voranstellt.
Diese Vorsilbe ermöglicht die Installation in eine Datenbank, in der bereits andere Tabellen liegen.
Wählen Sie in der Fortgeschrittenen Installation ein anderes Präfix,
können Sie auch mehrere Serendipity-Instanzen auf einem Server installieren.
Der Abschnitt: Generelle Einstellungen
Datenbank!Einstellungen|)Generelle Einstellungen
Die Optionen im Abschnitt Generelle Einstellungen legen den
Standard-Benutzer für das zu installierende Blog fest. Tragen Sie als
Nutzer!Admin-~ festlegenUser|see{Nutzer}Adminnutzer!festlegenPasswort!des Adminnutzers setzenAdmin-Benutzername also den Namen ein, den Sie später beim Login
verwenden wollen. Er sollte möglichst keine Sonderzeichen
oder Umlaute enthalten, da dies zu Problemen bei unterschiedlichen
Zeichensätzen führen kann. Das Gleiche gilt für das Admin-Passwort;
lediglich im Feld Voller Name können Sie auch auf
Sonderzeichen zurückgreifen.
E-Mail-Adresse!des Adminnutzers setzen
Die Angabe der Admin-E-Mail-Adresse benötigt Serendipity beim
Verschicken von
Hinweisen über neu eingegangene Kommentare und Trackbacks.
Blog!Titel festlegenTitel!des Blogs festlegenBlog!Beschreibung festlegenBeschreibung!des Blogs festlegen
Den Blog-Titel und die Blog-Beschreibung zeigt das Frontend
im Kopfbereich an und verwendet beides auch für die Titelzeile im Browser.
Sprache!konfigurieren
Die Sprache des Blogs gibt die Standardsprache vor, in der
Serendipity Nachrichten und Meldungen darstellt. Später lässt sich
für Besucher der Webseite und für jeden Redakteur individuell eine Sprache
einstellen (siehe Seite eigeneeinstellungen-sprache).
Der Abschnitt: Design und Optionen
Design und Optionen
Der letzte Einstellungsblock legt bei der einfachen Installation lediglich
fest, ob der Standard-Redakteur den WYSIWYG-Editor zur Erstellung von
Einträgen benutzen möchte.
Abschluss der Installation
Sind alle Optionen eingetragen (keine Angst, Sie können sie später
allesamt wieder verändern), schließen Sie den Installationsvorgang durch
einen Klick auf Vollständige Installation ab.
Die letzte Seite der Installationsroutine (Abbildung 2.4) informiert Sie
über die von Serendipity durchgeführten Aktionen. Dazu gehört das Anlegen
der notwendigen Tabellen und des Standardbenutzers und die Einrichtung der
Standard-Plugins. Sollten Sie an dieser Stelle noch nicht über eine
passende Datenbank verfügen oder andere Fehler auftreten, informiert Sie
Serendipity auch darüber. Dann heißt es zurück zu Abschnitt
DBeinrichten ab Seite
DBeinrichten.
Bei fehlerfreier Installation können Sie über die URL http://www.example.com/serendipity/ das
Frontend aufrufen und unter
http://www.example.com/serendipity/serendipity_admin.php mit den
gewählten Login-Daten auf das Backend zugreifen.
2.2.6 - Die Konfigurationsdatei serendipity_config_local.inc.php
Die Konfigurationsdatei serendipity_config_local.inc.php
Alle grundlegenden Konfigurationsvariablen wie die Daten für den Datenbankzugang
und die aktuelle Versionsnummer speichert Serendipity in der Datei
serendipity_config_local.inc.php im Stammverzeichnis.
Diese Datei sieht ungefähr wie folgt aus:
<?php
/*
Serendipity configuration file
Written on Thu, 14 Apr 2022 11:22:27 +0200
*/
// End of Serendipity configuration file
// You can place your own special variables after here:
?>
Ähnlich wie bei der .htaccess-Datei (siehe Seite
htaccess) können Sie in dieser Datei später auch eigene
Konfigurationsparameter nachtragen. Fügen Sie diese nach
der Zeile You can place your own special variables after here: ein,
so dass Serendipity sie bei einer Konfigurationsänderung nicht
versehentlich überschreibt. Je nach Konfiguration des Webservers kann es
sein, dass Sie keine Schreibrechte für diese Datei besitzen. Dies
fixperm.php
lässt sich mit dem fixperm.php-Skript (siehe Seite
fixperm) ändern.
2.2.7 - Fehler bei der Installation
Fehler bei der Installation
installationsfehlerInstallationsfehler|see{Fehler}Fehler!bei der Installation
Die zahlreichen Konfigurationsmöglichkeiten von Webservern geben
Spielraum für hinterlistige Fehler.
Nur eine leere Seite erscheint
Nur eine leere Seite erscheintdisplay_errorsleere Seiteweiße Seite|see{leere Seite}Fehler!leere oder weiße SeiteFatal Error (PHP-Fehlermeldung)
Wenn an einer Stelle der Installation lediglich eine weiße Seite
erscheint, liegt dies meist an sogenannten PHP Fatal Errors.
Normalerweise sieht man diese direkt auf der Webseite, aber einige
Webserver sind so eingestellt, dass sie PHP-Fehlermeldungen unterdrücken.
Wenn das Installationsskript endet, ohne vollständig
ausgeführt worden zu sein, führt dies dann zu den weißen/leeren
Seiten.
Um die Fehlermeldung dennoch zu sehen, versuchen Sie, in den
PHP-Fehlerlogfiles Ihres Webservers nachzuschauen. Diese liegen meist in
einem logs-Unterverzeichnis. Den genauen Speicherort solcher
Dateien teilt Ihnen der Provider mit.
Man kann aber auch versuchen, im
[email protected]
Serendipity-Stammverzeichnis eine Datei namens .htaccess
anzulegen und mit folgender Zeile zu füllen:
php_value display_errors on
Beim Speichern der Datei achten Sie bitte unbedingt
darauf, dass PHP dafür Schreibrechte erhalten muss, da es diese
Datei während der Installation automatisch verändert.
Versteckte Dateien
Achten Sie auch darauf, dass einige FTP-Programme Dateien, die mit
einem Punkt anfangen, verstecken, so dass Sie diese erst nach Umkonfiguration
des Programms sehen.
Die Fehlermeldungen geben
meist Aufschluss über die Ursache. Oft sind dies fehlende oder defekte
Dateien. Enthält eine Datei Parse Errors [*]
PHP meldet einen
Parse Error, wenn eine Datei
Parse Error (PHP-Fehlermeldung)
fehlerhafte Zeichen oder eine ungültige Syntax enthält., ist dies meist auf
fehlerhafte FTP-Uploads zurückzuführen. Auch fehlende Leserechte kommen als Ursache in Frage.
Am häufigsten kann der Ordner
Template-Sc@templates_ctemplates_c nicht beschrieben werden. Dieser ist für
von Smarty kompilierte Dateien gedacht, die für die Darstellung des
Frontends verwendet werden.
Serendipity setzt einige Standardoptionen über die Datei
.htaccess. Von einigen Webservern wird dieser Mechanismus jedoch
nicht unterstützt und kann gar zu einem Abbruch des Skripts führen.
Sollte sich Serendipity nach der Installation nicht aufrufen
lassen, löschen Sie die .htaccess-Datei einfach. Sie ist für den
Betrieb nicht zwingend notwendig. Ohne diese Datei können Sie jedoch
keine URL-Umformung benutzen, die für Serendipity "sprechende URLs"
ermöglicht (siehe Seite urlformung).
Seiten werden nicht gefunden
Seiten werden nicht gefundenmod_rewriteUnterseiten funktionieren nichtFehler!Unterseiten funktionieren nicht
Um "sprechende URLs" wie
http://www.example.com/serendipity/archives/1-Mein-erster-Artikel.html
zu unterstützen, kann Serendipity zwei Arten der URL-Umformung
unterstützen. Da Pfade und Dateien wie oben genannt nur virtuell erstellt
werden und nicht wirklich auf dem Server liegen, muss Serendipity über
Umleitungen auf seine zentrale Datei index.php geleitet werden.
URL-Umformung
Diese Umleitung konfiguriert Serendipity anhand der Datei
.htaccess. Dort gibt es zwei Varianten der URL-Umformung:
mod_rewrite und Apache Errorhandling.
mod_rewrite ist die komfortabelste Variante der Umformung,
benötigt aber ein zusätzliches Webserver-Modul, welches nicht immer
verfügbar ist. Apache Errorhandling setzt einen Trick ein, der
eigentlich nicht gefundene Seiten (HTTP/404 Not Found) virtuell
auf eine zentrale Seite umleitet, die dann den eigentlichen Inhalt
ausgibt.
Serendipity versucht bei der Installation die beste Art für Sie
automatisch zu erkennen. Auf manchen Servern gelingt dies jedoch nicht,
und es kann sein, dass Serendipity die URL-Umformung fälschlicherweise
aktiviert. Wenn diese Umformung nicht klappt, gehen alle Links von
Serendipity somit "ins Leere". Dazu zählen auch Links zum Stylesheet
des Frontends, die das Layout beeinflussen.
Löschen Sie die .htaccess, um dieses Problem zu lösen.
Danach suchen Sie die Serendipity-Administrationsoberfläche via
http://www.example.com/serendipity/serendipity_admin.php auf,
loggen sich ein und gehen über den Menüpunkt Konfiguration zu der
Unterebene Design und Optionen. Dort findet sich die Option
URL-Formung. Diese Option stellen Sie auf None und
speichern die Konfiguration. Daraufhin wird die .htaccess-Datei
neu erstellt.
Nun sollten Sie Serendipity-Unterseiten wieder problemlos öffnen können.
Installation erneut ausführen
Installation erneut ausführenErneute Installationserendipity-configlocalincphp@serendipity_config_local.inc.phpfixperm.phpFehler!Installation erneut ausführen
Wenn die Installation aus irgendwelchen Gründen fehlgeschlagen ist,
möchten Sie Serendipity vielleicht von Grund auf neu installieren. Dazu
muss Serendipity in den Ursprungszustand zurückversetzt werden. Löschen
Sie dafür die Datei serendipity_config_local.inc.php. Diese Datei
enthält die Basis-Konfigurationsparameter des Blogs, und sobald diese
Datei nicht mehr vorhanden ist, erkennt Serendipity nicht mehr, dass es
installiert ist.
Auch die Datei .htaccess sollte vor einer neuen Installation
gelöscht werden. Bei beiden Dateien ist zu beachten, dass sie von PHP
erstellt wurden und von Serendipity mit minimalen Rechten versehen werden,
um diese Daten zu schützen. Daher kann es unter Umständen sein, dass Sie
mit Ihrem FTP-Zugang keinen Zugriff mehr auf diese Datei haben!
Um dies zu beheben, bedienen Sie sich eines kleinen PHP-Skripts.
Speichern Sie eine Datei namens fixperm.php im
Serendipity-Stammverzeichnis mit folgendem Inhalt:
fixpermfixperm.php
<?php
$ziel = '/var/www/example.com/serendipity/serendipity_config_local.inc.php';
if (chmod($ziel, 0777)) {
echo "Rechte geändert.";
} else {
echo "Fehler: Rechte dürften nicht verändert werden.";
echo "Sie müssen den Provider kontaktieren.";
}
?>
Rufen Sie danach die Datei mittels
http://www.example.com/serendipity/fixperm.php im Browser auf. Nach
dem Aufruf sollten Sie die Ausgabe "Rechte geändert" sehen, und die
Dateirechte sollten nun so verändert worden sein, dass Sie wieder vollen
Zugriff auf die Datei haben.
Übrigens können Sie dieses kleine Skript auch später benutzen, um andere
Dateien im Serendipity-Verzeichnis wieder mit Zugriffsrechten für Sie
auszustatten. Dabei müssen Sie lediglich die Code-Zeile verändern, die
den Namen der zu ändernden Datei enthält.
Zuletzt müssen Sie noch die von Serendipity angelegten Datenbanktabellen
wieder löschen. Wenn diese Tabellen nicht gelöscht werden, würde
Serendipity diese bei einer Neuinstallation schützen wollen. Nur wenn
alle Tabellen von Serendipity vorher mittels phpMyAdmin oder Ähnlichem
gelöscht werden, wird eine vollständige Neuinstallation möglich sein.
Fehler beim Login
Fehler beim LoginSession-FehlerFehler!SessionFehler!Login
Wenn Sie Fehlermeldungen am Anfang der Seite erhalten, die aussehen wie
diese:
dann bedeutet dies, dass Ihr Webserver keinen gültigen Speicherpfad für
die PHP-Sessiondateien eingetragen hat. Entweder können Sie den Fehler
beheben, indem Sie korrekte Schreibrechte zu dem in der Fehlermeldung
genannten Pfad einrichten. Oder Sie müssen einen gültigen Pfad in der
Datei php.ini in der Variable session.save_path eintragen.
Ein weiteres Problem, das bei falsch eingerichteten PHP-Sessions
auftreten kann, ist, wenn Sie sich nach jedem Klick im Serendipity-Backend
erneut einloggen müssen. Dies bedeutet, dass der Webserver Ihre
Logindaten nicht in einer Session speichern und Sie somit nicht
eindeutig wiedererkennen kann.
Ein ähnliches Problem kann auch dann auftreten, wenn Ihr Browser keine
Cookies annimmt, weil sie zB. von einem Werbefilter oder
Anti-Virus-Programm gefiltert werden. Auch kann es passieren, dass, wenn
Sie die Serendipity-Oberfläche mit einer URL wie
http://localhost/serendipity/ aufrufen, die Cookies für eine solche
URL nicht angenommen werden. In einem solchen Fall müssten Sie
Serendipity über die IP-Adresse wie http://127.0.0.1/serendipity/
aufrufen.
Weiterleitung auf verschiedene URLs
WeiterleitungWeiterleitung
Wenn Sie Serendipity installieren, möchten Sie Ihr Blog möglicherweise
unter mehreren URLs aufrufen können.
Ein klassischer Fall dieser unterschiedlichen URLs ist, wenn Ihr Blog
sowohl unter http://example.com/serendipity/ als auch
http://www.example.com/serendipity/ verfügbar sein soll.
Damit Serendipity die jeweils genutzte URL als Standard für Folgeseiten
übernimmt, müssen Sie lediglich in der Konfiguration desselben die
Option HTTP-Hostname (siehe Kapitel HTTP-Hostname ab Seite
HTTP-Hostname) aktivieren.
Diese Funktion hilft Ihnen jedoch nur dann, wenn der benutzte Pfad (in
diesem Fall /serendipity/) in allen Fällen gleich bleibt. Sollten
Sie Ihr Blog aber sowohl unter der URL
http://example.com/serendipity/ als auch
http://serendipity.example.com/ darstellen wollen, dann würden Sie
diese Vorbedingung nicht erfüllen können. Serendipity kann mit einer
derartigen Einstellung nicht umgehen.
Der Grund dafür ist, dass bei einer abweichenden Pfadkomponente die
relativen Links nicht mehr korrekt funktionieren. Bei der einen URL
müsste Serendipity für den HTTP-Pfad immer /serendipity/ nutzen,
während bei der anderen URL immer / genutzt werden müsste. Die
Links würden daher nicht übereinstimmen und zu zahlreichen Problemen bei
der Darstellung von Grafiken und Verweisen führen.
Das bessere Vorgehen in diesem Fall wäre also die Einrichtung einer
Weiterleitung. Dabei sollten Sie sich eine endgültige URL aussuchen und
alle weiteren optionalen URLs zu dieser Zielseite weiterleiten.
Weiterleitungen können Sie auf unterschiedliche Weisen realisieren. In
unserem Beispiel gehen wir davon aus, dass
http://serendipity.example.com/ die Zielseite und
http://example.com/serendipity/ die Quellseite darstellt.
Bei vielen Standardinstallationen für mehrere verfügbare URLs würden beide
URLs bereits auf dasselbe Verzeichnis verweisen.
http://serendipity.example.com/index.php als auch
http://example.com/serendipity/index.php würden physikalisch auf
dieselbe Datei zeigen, man spricht daher von einem Alias. Sollte
dies bei Ihnen der Fall sein, haben Sie zwei Möglichkeiten der Weiterleitung:
mod_rewriteWeiterleitung via .htaccess bei identischen Serendipity-Verzeichnissen
Wenn auf Ihrem Server mod_rewrite zur Verfügung steht, können Sie an den Anfang Ihrer
.htaccess-Datei des Serendipity-Verzeichnisses vor dem Blog #Begin s9y
folgende Zeilen einfügen:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^example.com [NC]
RewriteRule ^serendipity/(.*)$ http://serendipity.example.com/$1 [QSA]
Diese Regel weist den Webserver an, dass sämtliche Zugriffe zu http://example.com/
auf die Zielseite http://serendipity.example.com/ weitergeleitet werden.
Sie müssen also jeweils den Quellservernamen, das Quellverzeichnis auf dem Quellserver
und den Zielserver in den obigen Zeilen an Ihre Gegebenheiten anpassen.
Weiterleitung mittels PHP bei identischen Serendipity-Verzeichnissen
Ohne mod_rewrite müssen Sie die Weiterleitung innerhalb der Datei
serendipity_config_local.inc.php einprogrammieren.
Öffnen Sie diese Datei in einem Editor (bei fehlendem Schreibzugriff schauen Sie sich bitte
fixperm.php auf Seite fixperm an) und fügen Sie
in die Zeile vor dem letzten ?> Folgendes ein:
// Ist der ausführende Server der Quellserver?
if ($_SERVER['HTTP_HOST'] == 'example.com') {
// Ersetze böse Sonderzeichen
$ziel = str_replace(
array("\n", "\r"),
array('', ''),
$_SERVER['REQUEST_URI']
);
// Entferne Quell-Pfad zur Weiterleitung
$ziel = preg_replace('@^/serendipity/@i', '/', $ziel);
// Leite zu Ziel-Server weiter
header('Location: http://serendipity.example.com' .$ziel);
exit;
}
Dieser Code sorgt dafür, dass, wenn Serendipity auf dem Quellserver aufgerufen wird,
der Besucher automatisch auf die Zielseite weitergeleitet wird.
Sollten durch die Art der Einrichtung jedoch beide URLs
(Weiterleitungsquelle und Weiterleitungsziel) auf unterschiedliche
Verzeichnisse Ihrer Domain zugreifen, dann können Sie die einfachste
Form der Weiterleitung nutzen:
Weiterleitung mittels index.html bei unterschiedlichen Serendipity-Verzeichnissen
Erstellen Sie die Datei index.html in dem Verzeichnis der Quell-URL (in unserem Beispiel /serendipity/):
<html>
<head>
<meta http-equiv="refresh" content="0;url=http://serendipity.example.com/">
</head>
<body>
</body>
</html>
Beim Aufruf der Quell-URL wird dann unkompliziert auf die Ziel-URL weitergeleitet.
Weiterleitung mittels index.php bei unterschiedlichen Serendipity-Verzeichnissen
Etwas schneller geht die Weiterleitung mittels PHP, da die Weiterleitung dann
intern im Browser ausgeführt wird und Sie nicht vorher kurz eine weiße Seite im Browser
aufflackern sehen. Speichern Sie im Quellverzeichnis folgende index.php-Datei:
<?php
header('Location: http://serendipity.example.com/');
?>
Einen Sonderfall dieser Weiterleitung stellt das Beispiel dar, wenn Sie
Serendipity zwar in einem Unterverzeichnis Ihres Webservers installiert
haben (http://example.com/blog/), aber gerne möchten, dass
Serendipity beim Aufruf der Haupt-Domain (http://example.com/)
direkt aufgerufen wird. Die einfachste Variante hier wäre natürlich,
dass Sie Serendipity in das Stammverzeichnis Ihrer Webseite
installieren, da dies problemlos möglich ist. Sollten Sie dies aus
irgendwelchen Gründen nicht bevorzugen, können Sie ebenfalls die
oben genannte Methode der Weiterleitung mittels index.php oder
index.html nutzen.
Falsche Anzeige von Datumsangaben oder Sonderzeichen
Falsche Anzeige von Datumsangaben oder SonderzeichenLocalesDatumsangabenISO-8859-1UTF-8Fehler!SonderzeichenFehler!UmlauteFehler!Datumsanzeige
Serendipity benutzt zur Darstellung von Datumsangaben für Artikel und im
Kalender ein serverseitiges System namens locales. Diese locales sind,
grob gesagt, eine Sammlung von nationalen Sprachbesonderheiten und geben an,
wie in beinahe allen gesprochenen Sprachen die Währungs- und Datumsangaben
formatiert und geschrieben werden. Damit Serendipity auf möglichst vielen
Sprachumgebungen ohne viel Aufwand lauffähig ist, verlässt es sich auf diesen
De-facto-Standard.
Ebenfalls zur weitreichenden Unterstützung verschiedener Sprachen
unterstützt Serendipity mehrere Zeichensätze. Ein Zeichensatz regelt, mit
welchem Binärsystem Buchstaben für den Computer abgespeichert werden --
denn je nach Zeichensatz ist für einen Computer "ä" nicht gleich "ä".
Für die deutsche Sprache ist der standardisierte ISO-8859-1-Zeichensatz
üblich. Um jedoch auch mit anderen Sprachen benutzbar zu
sein, hat sich der Zeichensatz UTF-8 etabliert, da dieser beinahe
alle Sonderzeichen jeder Sprache enthält. Ein arabischer Artikel könnte
so also direkt neben einem deutschen Artikel stehen, ohne dass
Sonderzeichen falsch dargestellt würden.
Sobald die Zeichensätze vermischt werden, kann es zu Fehldarstellungen im
Browser kommen - Mozilla Firefox zeigt statt des korrekten Zeichens dann
ein Karo-Symbol mit einem Fragezeichen an. Wenn Sie dies einmal in Ihren
Artikeln beobachten, liegt ein solcher Zeichensatzkonflikt vor.
In der Serendipity-Konfiguration können Sie einstellen, ob Serendipity
mit nationalem Zeichensatz oder UTF-8 betrieben wird. Standardmäßig wird
dies bei der Installation für größtmögliche Kompatibilität direkt auf
UTF-8 gesetzt. Sie sollten daher bei einer frischen Installation
keinerlei Probleme mit Zeichensätzen erwarten - erst bei späteren
Änderungen am System könnten möglicherweise einmal Probleme auftreten.
Die Behandlung von Sonderzeichen zur Speicherung in Datenbanken ist recht
komplex und kann mehrere Fehlerursachen haben.
Die erste Fehlerursache kann Ihr Browser sein. Stellen Sie sicher, dass
dieser den UTF-8-Zeichensatz darstellen kann. Wenn Sie beim Besuch der
Seite http://www.columbia.edu/kermit/utf8.html falsche
Sonderzeichen sehen, ist dies ein Indiz für eine fehlerhafte
Browserkonfiguration, die Sie mithilfe der Dokumentation Ihres Webbrowser
lösen müssen.
Die zweite Fehlerursache kann der Webserver sein, der Zeichensätze
selbständig verändert. Apache bietet eine Option an, ein sogenanntes
DefaultCharset zu setzen, das die Ausgabe von Sonderzeichen
eventuell verändern könnte. Wenn der Webserver nicht die von Serendipity
bestimmten Content-Type-HTTP-Kopfzeilen an den Browser sendet,
kann es sein, dass der Webserver durch seine Standardeinstellung die
Umbelegung durch Serendipity verhindert. Sprechen Sie daher mit ihrem
Provider und bitten Sie ihn, diese HTTP-Kopfzeilen zu überprüfen.
Zu guter Letzt gibt es nun noch die Datenbank, die Artikel mit
unterschiedlicher Kodierung speichern kann. Gerade zwischen MySQL 4.0
und 4.1 gab es weitreichende Änderungen in der Behandlung von
Zeichensätzen, die sich bei einem MySQL-Update darin äußern konnten,
dass Serendipity die Sonderzeichen falsch anzeigte. Um dies zu
korrigieren, müssen Sie sicherstellen, dass alle MySQL-Tabellen und
-Spalten als Collation den übereinstimmenden Zeichensatz
benutzen (also de_latin beim ISO-Zeichensatz und utf8 für
UTF-8). Sobald dies korrekt übereinstimmt, kann in der
Serendipity-Konfiguration die Option
Datenbank-Zeichensatzkonvertierung aktivieren
gewählt werden, was dann wieder zu einer korrekten Darstellung der
Sonderzeichen führen sollte.
In einigen Fällen ist es möglicherweise notwendig, einen vollständigen
SQL-Export der Datenbank vorzunehmen und die Datei mittels eines Editors
vom ISO-8859-1- ins UTF-8-Format zu überführen, neu zu importieren und
danach Serendipity zentral auf UTF-8-Zeichensätze umzustellen. Alternativ
können Sie das mit folgendem PHP-Skript erreichen, das einen Datenbankdump
namens dump-iso.sql in dump-utf8.sql vom ISO-8859-1-Zeichensatz
in den UTF-8-Zeichensatz verwandelt. Etwaige SQL-Befehle (COLLATION), die
MySQL-Zeichensätze bestimmen, müssen Sie jedoch manuell in der Datei
umwandeln, um sie später als vollständiges UTF-8 importieren zu können:
Zurück aber zu dem Problem mit falsch angezeigten Datumsangaben. Damit
der Wochentag "Freitag" nicht als "Friday" oder Ähnliches ausgegeben
wird, muss eine deutsche Sprachdatei für das locales-System auf dem
Server hinterlegt werden. Locales sind auf allen Betriebssystemen
verfügbar und in fast allen Fällen vorinstalliert. Je nach System können
sie auch nachinstalliert werden (bei Linux zB. mittels
locale-genlocale-gen). Für jede Sprache gibt es abhängig vom Zeichensatz eine
Sprachdatei. Für Deutsch ist es üblicherweise de_DE.UTF8
(UTF-8-Zeichensatz) oder de_DE.ISO88591 (nationaler Zeichensatz).
Manchmal ist auf Servern nur das ISO-Locale installiert, und deshalb wird
der Monat "März" mit einem falschen Sonderzeichen dargestellt. Abhilfe
schafft hier die Installation der passenden UTF8-Locale-Datei. UTF8 ist grundsätzlich immer vorzuziehen.
Die Installation der Locales kann nur vom Serverbetreiber vorgenommen
werden, im Problemfall müssen Sie sich also an diesen wenden. Die
Locales, die Serendipity anwendet, finden Sie im Übrigen in der Datei
lang/serendipity_lang_de.inc.php bzw.
lang/UTF-8/serendipity_lang_de.inc.php in einer Zeile wie:
Die definitive Nutzung der korrekten locales wird sich in Zukunft noch verschärfen,
da PHP spätestens mit Version 9 aus Sicherheitsgründen auf diesen besteht. Ansonsten werden Ihrem
Zeit und Datumsangaben nur im englischen Format zur Vefügung stehen.
2.3 - Schnelle InstallationSchnelle Installation
Schnelle Installation
Serendipity-Release-Paket von der Homepage herunterladen und via FTP auf den Webserver hochladen.
Zugriffsrechte überprüfen: Stammverzeichnis und Unterverzeichnis archives, templates_c, uploads
müssen Schreibrechte für PHP besitzen, alle anderen Dateien und Verzeichnisse Leserechte.
Eine leere Datenbank erstellen, falls noch nicht vorhanden. Sicherstellen, dass der Datenbankbenutzer die Rechte
CREATE, INSERT, UPDATE, DELETE, ALTER, INDEX,
SELECT besitzt. Im Falle von Styx und MariaDB/MySQL geben Sie der Datenbank am besten gleich eine
utf8mb4_unicode_ci, bzw. noch besser die neuere utf8mb4_unicode_520_ci Kollation mit auf den Weg.
Via HTTP die Installationsroutine aufrufen: http://www.example.com/serendipity/
Der Installationsroutine folgen und die Anfangskonfiguration vornehmen.
Einrichtung
Kapitel 3: Frontend / Übersicht
Nach der Installation können Sie unter
http://www.example.com/serendipity/ das Frontend aufrufen.
Hier spielt sich alles ab, was jeder Besucher sehen kann:
Man kann Einträge lesen und kommentieren, in älteren
Archiven stöbern, eine Suche durchführen und auch etliche
Plugin-Funktionalitäten (Umfrage, Flickr-Fotos ...) ansehen.
Im Folgenden gehen wir von dem standardmäßig genutzten Theme (siehe
Seite theme) Pure aus. Die
meisten anderen Themes richten sich in der Darstellung der Seitenelemente nach
demselben Schema, können aber in Details davon abweichen. Wie man die
Darstellung anpassen kann, werden Sie in späteren Kapiteln ab Seite
Anpassungen lernen.
3.1 - Übersicht
Übersicht
Frontend!Startseite
Die Startseite eines Serendipity-Blogs zeigt üblicherweise die
chronologisch letzten 15 Artikel in allen Kategorien untereinander an,
wobei der erste Artikel der aktuellste ist. Je nach Template ist dieser
Inhaltsbereich von ein bis zwei sogenannten Seitenleisten umgeben. In den
Seitenleisten können sich Seitenleisten-Plugins ansiedeln, die beliebige
Inhalte darstellen können. Ebenfalls abhängig vom Template sehen Sie
meist eine zentrale Seitenüberschrift (Kopf- oder auch Banner-Bereich
genannt) und eine weitere Überschrift vor der Artikelübersicht.
Die Standard-Installation von Serendipity richtet eine rechte
Seitenleiste ein, in der folgende Elemente dargestellt werden:
Frontend!vorinstallierte Seitenleisten-Plugins
KalenderFrühere Serendipity Versionen installierten
hier zuallererst den Kalender. Inzwischen ist die Meinung gewachsen auf
diese Art der Navigation und Darstellung per default verzichten zu können.
Der Kalender stellt den aktuellen Monat in einer graphischen Übersicht dar.
Der aktuelle Tag wird hervorgehoben, und jeder Tag, an dem ein Artikel
verfasst wurde, ist ebenfalls hervorgehoben. Bei einem Klick auf einen Tag
oder auf die Navigationspfeile in der Kopfzeile des Kalenders kann man
sich die Artikel anzeigen lassen, die im gewählten Zeitraum verfasst
wurden.
Suche
In die Eingabebox der Schnellsuche kann man einen Suchbegriff eingeben und den
Suchvorgang mittels (Enter)-Taste ausführen. Die Suche umfasst dabei
sowohl Artikelüberschrift als auch den Artikelinhalt und zeigt in der
Ergebnisseite die gefundenen Artikel genauso an wie in einer normalen
Artikelübersicht eines Zeitraumes.
Details zur Suche sind am Ende des Kapitels (Seite Suche)
erwähnt.
Archive
Die Links dieses Plugins zeigen unterschiedliche chronologische
Abschnitte der Blogeinträge an. Standardmäßig werden die letzten drei Monate
mit Link angezeigt, und ein Klick darauf ruft die übliche Artikelansicht
auf, bei der jedoch nur der gewünschte Zeitraum berücksichtigt wird.
Der Link Das neueste führt zur üblichen Startseite und der Link
Älteres zu einer besonderen Übersichtsseite (siehe Abschnitt
Archive auf Seite Permalinks-Frontend).
Kategorien
In dem Seitenleisten-Block Kategorien wird eine Liste aller
eingerichteten Kategorien des Blogs dargestellt. Ein Klick auf eine
Kategorie wird daraufhin ausschließlich Artikel anzeigen, die dieser
Kategorie zugeordnet sind. Neben jedem Kategorienamen befindet sich zudem
ein kleines Symbol, das auf den RSS-Feed dieser Kategorie zeigt.
Außerdem besteht für den Besucher die Möglichkeit, mehrere Kategorien
zur Ansicht zu kombinieren. So könnte man sich alle Beiträge mehrerer
Kategorien anzeigen lassen, indem man die Auswahlboxen neben mehreren
Kategorien ankreuzt und danach auf den Button Los! darunter klickt.
Alle Kategorien führt zurück auf die Übersichtsseite des
Blogs, in der wieder alle Beiträge aller Kategorien gezeigt werden.
Blog abonnierenAlle Feed-Formate (siehe Terminologie, Seite RSS), die das Blog
anbietet, werden in dieser Box dargestellt. Die
unterstützten Formate sind RSS 0.91, RSS 2.0, Atom 0.3 und Atom
1.0. Zusätzlich gibt es noch einen speziellen RSS 2.0-Feed, der alle
Kommentare zu den Beiträgen enthält. Mit diesem Feed können Besucher des Blogs
auch auf dem Laufenden über neue Kommentare bleiben.
Verwaltung des BlogsDamit ein Redakteur sich leicht in das Backend des Blogs einloggen kann, wird
ein Link dorthin angeboten. Je nachdem, ob der Benutzer bereits eingeloggt ist,
steht hier entweder Zum Login oder Administrationsbereich.
Powered byWerbung!für SerendipityZuletzt befindet sich in diesem Block eine kleine Werbung für Serendipity.
Besucher Ihres Blogs finden die Technik dahinter womöglich faszinierend,
so dass sie dieser Hinweis über das eingesetzte System interessiert.
Da ein Open-Source-System von seinen Benutzern und seiner Verbreitung lebt,
freuen sich die Entwickler immer sehr, wenn dieser Hinweis nicht entfernt wird.
Fast alle der genannten Plugins lassen sich in ihrer Pluginkonfiguration
genauer auf Ihre Wünsche einstellen.
3.2 - Beiträge
Beiträge
Frontend!Beiträge
Da nach der Installation noch keine Einträge verfasst wurden, wird im
Inhaltsbereich nur die Meldung "Keine Einträge vorhanden" angezeigt.
FußbereichFrontend!Fußbereich
Unterhalb des Inhaltsbereichs befindet sich der Fußbereich, in dem man
je nach dargestellter Seite vor- und zurückblättern kann. Viele
Archivansichten können so chronologisch von vorne nach hinten
durchblättert werden.
Sobald sich in dem Blog ein Artikel befindet, wird dessen Titel und der
einfache Eintragstext angezeigt. Zusätzlich werden Meta-Angaben über
einen Artikel eingeblendet: die Erstellungszeit, die Kategorie, in der
sich ein Artikel befindet, der Name des Autors und die Anzahl der
Kommentare zu diesem Artikel.
DetailseiteErweiterter Eintrag
Jeder Beitrag kann zudem einen sogenannten Erweiterten Eintrag
aufweisen. Dieser Zusatztext wird in der Übersichtsseite nicht angezeigt,
sondern erst bei der Detailansicht eines Artikels. Sobald ein Artikel
solchen Zusatztext enthält, führt der Link "Artikeltitel"
vollständig lesen oder ein Klick auf den Titel des Beitrags zu dieser
Detailseite.
Auf dieser Detailseite befinden sich außerdem alle Kommentare und
Trackbacks zu einem Artikel. Auch in der Seitenüberschrift verändert sich
der Kopfbereich und stellt durch die Aufnahme des Artikeltitels dar, dass
man sich auf einer einzelnen Artikelseite befindet.
Sollte man sich bereits in das Backend eingeloggt haben, erscheint bei
den Meta-Angaben zu einem Artikel auch ein Link Eintrag bearbeiten,
mittels dessen man den entsprechenden Artikel direkt bearbeiten kann.
3.3 - ArchivePermalinks-Frontend
Archive
Frontend!ArchivePermalinks!Archive
Wie bereits erwähnt, verfügt Serendipity über einige besondere
chronologische Artikelübersichten, abhängig von der gewählten Kategorie,
dem Zeitraum (nach Jahr, Monat, Woche oder Tag), einem Autor und einer
Seitenzahl.
Diese Seiten sind alle vom Inhalt her gleich aufgebaut, da alle Ansichten
die Artikel gleichartig auflisten. Lediglich die dargestellten Inhalte
sind nach dem gewünschten Kriterium gefiltert, und der Kopfbereich sowie
der Fußbereich geben die Art der Übersichtsseite an.
Alle Seiten haben zudem einen Stamm-Permalink (siehe Kapitel Terminologie
auf Seite terminologie-permalinks) gemeinsam:
http://www.example.com/serendipity/archives/XXX. Alle
Archivseiten sind so einem virtuellen Verzeichnis zugeordnet, die
Darstellung richtet sich nach dem dahinterstehenden XXX.
Unterschiedliche Pfadkomponenten legen dabei fest, was genau
angezeigt wird:
/archives/2007.htmlstellt alle Artikel des Jahres 2007 dar.
/archives/2007/12.htmlstellt alle Artikel aus Dezember 2007 dar.
/archives/2007/12/01.htmlstellt alle Artikel vom ersten Dezember 2007 dar.
/archives/1-Beispiel.htmlstellt eine einzelne Artikelseite dar.
/archives/C1.htmlstellt alle Artikel der Kategorie mit der Nummer 1 dar.
Die Pfadkomponente C (für Category) wird dabei gefolgt von einer Zahl.
/archives/P2.htmlstellt die zweite Seite einer Übersicht dar.
Die Pfadkomponente P (für Page) wird gefolgt von einer Seitennummer.
/archives/A1.htmlstellt alle Artikel des Autors mit der Nummer 1 dar.
Die Pfadkomponente A (für Author) wird gefolgt von einer Zahl, die den Autor angibt.
/archives/W52.htmlstellt alle Artikel der Kalenderwoche 52 dar.
Die Pfadkomponente W (für Week) wird gefolgt von der Wochennummer.
/archives/summary.htmllegt fest, dass die Artikelübersicht ausschließlich
Datum und Artikeltitel (also ohne jeglichen Inhalt) darstellt. Diese Ansicht - wie
fast alle weiteren summary Seiten - hat eine fest eingestellte, optionslose und spezifische Limitierung
von 25 Artikeln pro Seite (bzw. 24, wenn die normale fetchLimit Selektion schon auf
diese Zahl eingestellt ist), kann aber über eine manuell gesetzte
$serendipity['summaryFetchLimit'] Variable zB. in der
serendipity_config_local.inc von Hand überschrieben werden.
Wichtig ist dabei, dass die Pfadkomponenten (bis auf die für eine
einzelne Artikelseite) hierbei beliebig miteinander kombinierbar sind.
Dabei ist nur zu beachten, dass die Angabe des Datums (Jahr, Monat, Tag)
immer direkt am Anfang des Permalinks stehen muss. Hier einige
Beispiele für die Kombinationsmöglichkeiten:
/archives/2007/C1/A2.htmlstellt alle Artikel des Jahres 2007 dar, die in Kategorie 1 vom Autor 2 geschrieben wurden.
/archives/2007/12/summary.htmlstellt die Seite der Artikelübersicht (nur Datum und Titel) aller Artikel im Dezember 2007 dar.
/archives/summary/P2.htmlstellt die zweite Seite der zusammenfassenden Artikelübersicht (nur Datum und Titel) aller Artikel dar.
/archives/2020/summary.htmlstellt die Artikelübersicht (nur Datum und Titel) aller Artikel im Jahr 2020 dar.
/archives/2020/summary/P2.htmlstellt die zweite Seite der Artikelübersicht (nur Datum und Titel) aller Artikel im Jahr 2020 dar.
/archives/2007/12/P2.htmlstellt die zweite Seite der offenen Artikelübersicht aller Artikel im Dezember 2007 dar.
/archives/W52/A1.htmlstellt alle Artikel des ersten Autors der 52. Kalenderwoche des aktuellen Jahres dar.
/archives/2018/W52.htmlstellt alle Artikel der 52. Kalenderwoche im Jahr 2018 dar.
Die URL muss immer auf .html enden, die letzte
Pfadkomponente darf somit keinen abschließenden / enthalten.
Da für die Ansicht der Artikel nach Autoren oder nach Kategorie
eigenständige Permalinks wünschenswert sind, bietet Serendipity dieselben
Artikelübersichten auch bei Aufruf folgender URLs (ohne .html) an:
Permalinks!Autoren
/authors/1-AutorNamestellt die
Artikelübersicht nach Autor dar, wobei in diesem Fall der Name des
Autors zu Suchmaschinenzwecken in
der URL stehen kann. Mehrere Autoren können hierbei mittels ; nach
der Nummer des Autors kombiniert werden:
authors/1;2;3-AutorName. Der Parameter P für die
gewünschte Seite kann angehängt werden.
Permalinks-KategorienPermalinks!Kategorien/categories/1-KategorieNamestellt die
Artikelübersicht nach Kategorie dar, wobei in diesem Fall der Name der
Kategorie zu Suchmaschinenzwecken in der URL stehen kann. Mehrere
Kategorien können hierbei mittels ; nach der Nummer der
Kategorie kombiniert werden:
categories/1;2;3-KategorieName. Die Parameter
P für die gewünschte Seite sowie A für die
Einschränkung nach Autoren können zusätzlich angehängt werden.
Über http://www.example.com/serendipity/archive/ gelangt
man zu einer Übersichtsseite mit einer speziellen chronologischen Übersicht.
Dort werden für alle Jahre, in denen Artikel verfasst wurden, die Monate
dargestellt. Die Links im Standard Theme Pure Monat
(ganz anzeigen) und Anzahl der Einträge
(Überschriften anzeigen) führen hierbei wieder zu den eingangs erwähnten
Archiv-Übersichtsseiten.
Auch die URL für die spezielle chronologische Übersicht kann mit
speziellen Pfadkomponenten eingeschränkt werden - eine Einschränkung
nach Zeitraum erfolgt dabei jedoch nicht, da die Übersicht immer den
ganzen Zeitraum berücksichtigt. (Das .html ist hier optional.)
/archive/C1.htmlstellt die Übersicht aller Artikel der Kategorie mit der Nummer 1 dar.
Die Pfadkomponente C (für Category) wird dabei gefolgt von einer Zahl.
/archive/A1.htmlstellt die Übersicht aller Artikel des Autors mit der Nummer 1 dar.
Die Pfadkomponente A (für Author) wird gefolgt von einer Zahl, die den Autor angibt.
Artikel des Blogs können von Besuchern kommentiert oder referenziert
werden. Diese Kommentare werden von Serendipity auf unterschiedliche
Weise im Frontend eingebunden und können in weiteren Übersichtsseiten
speziell gefiltert werden.
3.4.1 - Kommentare zu einzelnen Artikeln
Kommentare zu einzelnen Artikeln
Die Ansicht der Kommentare (und Trackbacks) zu einem Beitrag erreicht man
entweder durch einen Klick auf die Detailseite eines Beitrags oder
indem man auf den Link Kommentare (x) klickt. Je nach Einstellung
des Blogs (siehe Seite config-popups) öffnet sich dann ebenfalls die
Detailseite des Beitrags oder ein Popup-Fenster mit den Kommentaren.
Trackbacks zu einem Artikel werden unterhalb eines Beitrags vor den
Kommentaren chronologisch geordnet angezeigt. Ein Trackback ist ein
Artikel eines fremden Blogs, der sich auf Ihren geschriebenen Beitrag
bezieht. Dabei führt der Link des Trackbacks zu diesem fremden Beitrag,
und zur Orientierung werden die ersten Absätze des fremden Beitrags mit
angezeigt. Damit ein fremdes Blog sich auf Ihren Artikel beziehen konnte,
war der Link Trackback für spezifische URI dieses Eintrags
vorgesehen. Ein Klick darauf, oder das Überfahren mit der Maus verriet,
dass dieser Link nicht für die Ansicht im Browser gedacht war, sondern für
fremde Blogsysteme übernommen werden sollte. Besucher mussten diesen Link verwenden,
um ein Trackback zu Ihnen zu senden. Heutzutage ist dies aber viel einfacher gelöst,
denn sollte ihr Theme bereits über einen "link rel" tag im Seitenkopf verfügen
<link rel="trackback" type="application/x-www-form-urlencoded"
href="https://ihrBlog.de/styx/comment.php?type=trackback&entry_id=28">
(als beispielhaften Eintrag), was heutzutage die Regel ist, ist die genannte URL
für alte Systeme obsolet, denn ihr System "lauscht" bereits automatisch
auf eventuell gesetzte Trackbacks, wenn jemand die eigentliche URL ihres
Artikels https://ihrBlog.de/styx/archives/28-titel.html im
eigenen Blog verlinkt.
Nach den Trackbacks folgt die Auflistung der Kommentare. Standardmäßig
werden diese thread-basiert aufgelistet. Dabei startet die
Auflistung mit dem chronologisch ersten Kommentar, und mögliche andere
Kommentare, die sich auf diesen beziehen, werden eingerückt darunter
dargestellt. Daher nennt sich diese Ansicht Verschachtelt. Falls
Sie eine chronologisch sortierte Ansicht bevorzugen, kann man diese über
den Link Linear aufrufen.
Kommentare!sperrenTrackbacks!sperren
Als Redakteur des Blogs sehen Sie zudem noch den Link Kommentare
für diesen Eintrag nicht mehr zulassen, mit dem Sie die
Kommentarfunktionalität eines Beitrags (auch übergangsweise) sperren
können. An derselben Stelle erscheint danach auch wieder ein Link zum
Entsperren.
Zu jedem Kommentar wird der Name des Kommentatoren dargestellt, sowie
(falls von ihm angegeben) seine E-Mail-Adresse und Homepage.
Nach der Auflistung der vorhandenen Kommentare kann ein eigener, neuer
Kommentar eingefügt werden. In das Eingabeformular trägt man dazu seine
Daten (Name, E-Mail, Homepage, Bezug) sowie den gewünschten Kommentartext
ein. Unterhalb der Eingabebox befindet sich ein Hinweis, welche
Textformatierungsmöglichkeiten es gibt, um gewisse Dinge hervorzuheben.
Die Auswahlbox Daten merken? kann genutzt werden, damit der
eingetragene Name in Zukunft vom Browser vorausgefüllt wird. Die Box
Bei Aktualisierung dieser Kommentare benachrichtigen bestimmt, ob
man bei einem neuen Kommentar zu dem Beitrag per E-Mail informiert
werden soll.
Um einen Kommentar vor Übermittlung zu überprüfen, kann man den Button
Vorschau benutzen. Die Folgeseite zeigt den eigenen Kommentar dann
so innerhalb der Webseite, wie er danach für alle Besucher erscheinen
sollte. Gerade wenn Sie Sonderzeichen oder HTML-Code in Ihrem
Kommentartext benutzen, dient die Vorschau der Kontrolle, ob später auch
wirklich alles angezeigt werden kann.
Nach Abschicken eines Kommentars kann es je nach Einstellung des
Artikels zu einer Moderation kommen - in diesem Fall muss ein Redakteur
einen Kommentar erst autorisieren, bevor er angezeigt wird (siehe Seite
Kommentare).
3.4.2 - Kommentarübersichten
Kommentarübersichten
KommentarübersichtFrontend!Kommentarübersicht
Neben der gezielten Ansicht von Kommentaren zu einem Artikel gibt es auch
eine Übersichtsseite, auf der alle Kommentare unabhängig vom Artikel
dargestellt werden.
Dies eignet sich besonders, um zu sehen, zu welchen Einträgen bestimmte
Personen kommentiert haben. Die Seite zeigt dabei wie üblich seitenweise
blätterbar die Überschrift eines Artikels an, und darunter die getätigten
Kommentare.
Diese /comments/ Ansichten haben eine fest eingestellte, optionslose und
spezifische Limitierung von 10 Kommentaren pro Seite, können aber über die
manuell gesetzte $serendipity['CBAfetchLimit'] Variable
zB. in der serendipity_config_local.inc von Hand überschrieben werden. Als ein gutes
Maß haben sich 20 Kommentare per Seite herausgestellt, deshalb ist es zu empfehlen
diese Variable zu setzen, wenn Sie solcherlei Übersichten anbieten. Ab Styx 4.1 wird
dies zu einer normalen Konfigurationsoption.
Diese Übersichtsseite ist bisher in wenigen Templates eingebaut und wird
daher von Besuchern auch seltener genutzt.
Das Permalink-Schema sieht dabei wie folgt aus:
Permalinks!Kommentare
/comments/kommentator/stellt die Übersicht aller Kommentare dar, die vom Benutzer kommentator stammen.
Die Kommentatoren werden dabei in der Datenbank nach exakter Übereinstimmung mit dem Namen in der URL herausgesucht.
Ohne Angabe eines solchen Wertes werden die Kommentare aller Benutzer angezeigt. Sollten Sie nach Namen mit Leerzeichen
suchen, müssen Sie ein + anstelle des Leerzeichens einfügen, zB. /comments/John+Doe/.
/comments/last_5/stellt die Übersicht der Kommentare der letzten fünf Tage zu allen Artikeln des aktuellen Monats ab Uhrzeit dar.
Ohne Angabe eines solchen Wertes werden alle Kommentare angezeigt.
/comments/from_2007-12-01/stellt alle Kommentare seit dem 01.12.2007 dar. Das Datum muss hierbei der
GNU DATE-Syntax entsprechen, siehe
https://www.gnu.org/software/coreutils/manual/html_node/Examples-of-date.html.
Ohne Angabe dieses Wertes wird keine minimale Zeitbeschränkung gesetzt.
/comments/to_2007-12-31/stellt alle Kommentare dar,
die bis zum 31.12.2007 gemacht wurden. Das Datum muss ebenfalls der
GNU DATE-Syntax entsprechen. Ohne Angabe dieses Wertes wird
keine maximale Zeitbeschränkung gesetzt.
/comments/trackbacks/stellt anstelle einer Übersicht zu Kommentaren die Übersicht der Trackbacks dar.
/comments/comments_and_trackbacks/stellt sowohl Kommentare als auch Trackbacks dar.
/comments/comments/stellt nur Kommentare dar. Da die Variable dem Standard entspricht, kann man sie üblicherweise weglassen.
/comments/P2.htmlstellt die zweite Seite einer Übersicht dar.
Die Pfadkomponente P (für Page) wird gefolgt von einer Seitennummer.
Auch bei diesem Schema lassen sich die Pfadkomponenten miteinander
kombinieren, um besondere Ansichten zu erhalten:
/comments/garvin/last_5stellt die Übersicht der Kommentare der letzten fünf Tage des Benutzers garvin dar.
/comments/from_2007-01-01/to_2007-12-31/stellt die Übersicht aller Kommentare vom 01.01. bis zu 31.12.2007 dar.
/comments/comments_and_trackbacks/from_2007-01-01/P2/stellt die zweite Übersichtsseite aller Kommentare und Trackbacks seit dem 01.01.2007 dar.
3.5 - Seite nicht gefunden (404)Seite nicht gefunden
Seite nicht gefunden (404)
Fehler!Seite nicht gefunden
Immer wenn man eine URL des Serendipity-Blogs aufruft, die zu einer
ungültigen Seite führt, wird statt einer Fehlerseite die Standard-Übersicht
angezeigt. Selbstverständlich wird für Suchroboter und Ähnliches dennoch eine
HTTP-404-Statusmeldung ausgegeben, um die Ungültigkeit der angeforderten Seite
herauszustellen.
Die Standard-Übersicht wird dargestellt, damit Besucher des Blogs dazu
motiviert werden, sich über die restlichen Inhalte des Blogs schnell
einen Überblick zu verschaffen, anstatt nur eine leere, nichtssagende
Fehlermeldung zu sehen.
Neuere Versionen zeigen zusätzlich aber wieder eine Fehlermeldung,
da das fehlerlose Fallback sich als zu verwirrend für manche User herausstellte.
Damit die Meldung in bestimmten Situationen unterdrückt wird,
muss in den Template Dateien auf die {if $view == '404'} Variable zurückgegriffen werden,
um eine bestimmte Reaktion auszulösen.
3.6 - RSS-Feeds
RSS-Feeds
Frontend!RSS-Feeds
Streng genommen zählen RSS-Feeds nicht zum eigentlichen Frontend, da ein
RSS-Feed außerhalb von Serendipity angezeigt wird. Ein RSS-Feed enthält,
wie eingangs im Zusammenhang der Terminologie erwähnt (siehe Seite RSS),
einige XML-Elemente, die die aktuellsten Einträge des Blogs mit einigen
zusätzlichen Metadaten aufführen. RSS steht für Really Simple Syndication.
Folgende RSS-Versionen sind verfügbar:
Permalinks!RSS-Feeds
/feeds/index.rss2 Aktuelle Beiträge in RSS-Version 2.0.
Diese Version wird aufgrund ihrer Vollständigheit bevorzugt, da sie die meisten Möglichkeiten bietet und den höchsten Verbreitungsgrad besitzt.
/feeds/index.rss Aktuelle Beiträge in RSS-Version 0.91 (veraltet).
/feeds/index.rss1 Aktuelle Beiträge in RSS-Version 1.0 (veraltet).
/feeds/atom03.xml Aktuelle Beiträge in Atom-Version 0.3 (veraltet).
/feeds/atom10.xml Aktuelle Beiträge in Atom-Version 1.0.
Diese Version liegt in ihren Möglichkeiten ungefähr gleichauf mit RSS 2.0 und wird in Zukunft
sicherlich noch an Bedeutung gewinnen, da dieser Atom-Standard vom
W3C
W3C-Gremium [*]
Das W3C-Gremium entscheidet in einer großen Arbeitsgruppe
über die Standardisierung von Internet-Formaten wie HTML und andere. empfohlen wird.
Diese Aussage hat sich aber bis zum laufenden Jahr noch immer nicht wirklich bewahrheitet [*]
https://meiert.com/de/publications/translations/intertwingly.net/rss-2.0-and-atom-1.0/.
/feeds/index.opml Aktuelle Beiträge im OPML-Format.
Dies beinhaltet nur Artikelübersichten und dient mehr der Übersicht als einem tatsächlichen Feed-Format.
Es gilt zu beachten, dass die URLs für die RSS-Feeds von Besuchern immer
aufgerufen werden können, selbst wenn Sie das Seitenleisten-Plugin nicht
aktiviert haben. Daher ist es auch grundsätzlich irrelevant, welche
Versionen Sie persönlich bevorzugen, da Ihre Besucher die notwendige
Version eigenständig beziehen können.
Neben den Einträgen können auch aktuelle Kommentare und
Trackbacks zu einem Blog bezogen werden:
/feeds/comments.rss2 Kommentare im RSS-2.0-Format.
/feeds/trackbacks.rss2 Trackbacks im RSS-2.0-Format.
/feeds/comments_and_trackbacks.rss2 Kommentare und Trackbacks im RSS-2.0-Format.
Diese Feeds können auch durch Änderung der Dateiendung in einem anderen
Format ausgegeben werden: .rss2 für RSS 2.0, .rss1 für RSS
1.0, .rss für RSS 0.91 und .atom für Atom 1.0.
Um nur einen Feed von einer speziellen Kategorie oder einem Autor
abzurufen, sind folgende URLs möglich (jeweils auch mit oben genannten
Dateiendungen):
/feeds/categories/Kategoriename.rss2 Aktuelle Beiträge der Kategorie Kategoriename.
/feeds/authors/Autorname.rss2 Aktuelle Beiträge des Autors Autorname.
[email protected]
RSS-Feeds liegen von Serendipity in mehreren Versionen vor und werden allesamt
auf die Ausgabedatei rss.php umgeleitet. Diese Datei stellt den Feed dar
und kann einige optionale Parameter aufnehmen. Ein kleiner Teil dieser Optionen
wird durch Einstellungen des Seitenleisten-Plugins "Blog abonnieren"
beeinflusst, die ab Seite syndication aufgeführt sind.
Die rss.php Datei kann somit auch direkt von einem Browser
aufgerufen werden, da sie übersichtlichere Paramter ermöglicht. Diese
Parameter können jeweils miteinander verbunden werden. Um mehrere
Parameter anzugeben, ruft man die URL mittels
rss.php?parameter1=wert1¶meter2=parameter3&... auf. Bitte
beachten Sie, dass Sie aus technischen Gründen die folgenden Parameter
ausschließlich beim Aufruf der rss.php-Datei anhängen können, nicht
aber beim Aufruf der sprechenden Feed-URLs wie /feeds/index.rss2.
rss.php?version=version wobei version
folgende Werte haben kann: 0.91, 1.0, 2.0,
atom0.3, atom1.0 und opml1.0. Individuelle Feeds,
die von Ihnen erstellt werden können (siehe Seite customfeeds),
werden ebenfalls einer eindeutigen Version zugeteilt und können durch diesen Parameter später
aufgerufen werden. Ohne Angabe der Version wird das RSS-2.0-Format gewählt.
rss.php?category=1 wobei die Zahl der
jeweiligen Nummer einer Kategorie des Blogs entspricht. Um einen RSS-Feed für Einträge
mehrerer Kategorien zu bündeln, können die Kategorie-Nummern mittels Semikolon (;)
hintereinander aufgeführt werden. Ohne Angabe werden Artikel aller Kategorien dargestellt.
rss.php?viewAuthor=1 wobei die Zahl der
jeweiligen Nummer eines Autors des Blogs entspricht. Um einen RSS-Feed für Einträge mehrerer
Autoren zu bündeln, können die Autor-Nummern mittels Semikolon (;) hintereinander
aufgeführt werden. Ohne Angabe werden Artikel aller Autoren dargestellt.
rss.php?type=typ Anstelle von typ kann
comments (Kommentare), content (Beiträge), trackbacks (Trackbacks)
und comments_and_trackbacks (Kommentare und Trackbacks) eingetragen werden, was dafür sorgt,
dass nur Artikel des gewünschten Typs im RSS-Feed eingebunden werden. Ohne Angabe werden nur Artikel angezeigt.
syndication-nocacheConditional GET
rss.php?nocache=true Diese Variable sorgt
dafür, dass Conditional GET für RSS-Feeds deaktiviert wird (siehe
Caching von RSS-Feeds auf Seite Caching von RSS-Feeds).
rss.php?cid=Artikel-ID Falls als Inhaltstyp eines
RSS-Feeds ein anderer als content gewählt wurde, kann man die Anzeige
der Kommentare und Trackbacks auf einen bestimmten Artikel einschränken. Die Nummer
(ID) dieses Artikels wird als Wert des Parameters angegeben. Solche RSS-Feeds
werden oft verwendet, damit Besucher die Kommentare zu einem Artikel verfolgen können,
an dessen Diskussion sie teilgenommen haben.
rss.php?all=true Falls dieser Parameter gesetzt wird,
enthält der RSS-Feed nicht nur die letzten 15 aktuellen Artikel, sondern alle verfügbaren.
Der RSS-Feed kann dadurch sehr groß werden, daher ist die Verwendung dieses Parameters nur
für den Export der Artikeldatenbank gedacht.
FullFeedFullFeed
rss.php?fullFeed=true Falls dieser Parameter gesetzt ist,
enthält der RSS-Feed den vollständigen Artikel (anstelle nur des Teasers). Diese Option muss
vom Betreiber des Blogs jedoch gezielt aktiviert werden, da durch die Aktivierung der "Diebstahl"
von Artikeln stark vereinfacht wird (siehe Seite syndication-fullfeed).
rss.php?forceLocal=true Das Plugin "Blog abonnieren"
unterstützt die Möglichkeit, dass RSS-Feeds zu einem Dienstleister namens Feedburner
weitergeleitet werden. In so einem Fall würde der Aufruf der eigenen RSS-URLs immer direkt zu der Seite
des Dienstleisters führen und man hätte keine Möglichkeit mehr, den echten RSS-Feed aufzurufen.
Sollte diese Umleitungsoption also gesetzt sein, können Sie mittels des Parameters forceLocal dafür
sorgen, dass Sie nicht umgeleitet werden. Der Parameter zeigt jedoch nur Wirkung, wenn Sie als
Redakteur am Blog angemeldet sind.
3.6.1 - Caching von RSS-Feeds
Caching von RSS-Feeds
Caching von RSS-FeedsCachingConditional GETFehler!RSS-Feeds
Da RSS-Feeds von den RSS-Readern Ihrer Besucher relativ häufig aufgerufen
werden (meist halbstündlich), ist es wichtig, dort so wenig wie möglich
Redundanz für die Datenübertragung zu verursachen.
Bei 200 Abonnenten Ihres RSS-Feeds und einem größeren Artikelbestand
kommt es durchaus vor, dass die XML-Datei des Feeds 100kb und größer ist.
Bei dieser Benutzerzahl würden Sie pro Stunde 4MB (das sind im Monat gut
3GB!) an Daten übertragen. Wenn Sie durchschnittlich nur alle drei Tage
einen neuen Artikel schreiben, wäre ein Großteil dieser Datenmenge
unnötig übertragen worden.
Um dieses Problem zu lösen, wurde im HTTP-Standard ein Caching [*]
Ein
Cache ist ein Zwischenspeicher oder Puffer, der einmal erstellte Daten erneut
ausgeben kann, anstatt sie neu zusammenzustellen. -Mechanismus vorgesehen.
Dabei überträgt der RSS-Reader (und auch jeder Webbrowser) den Zeitpunkt des
letzten Abrufs an den Server. Der Server vergleicht, ob sich seit diesem
Zeitpunkt etwas am RSS-Feed geändert hat. Falls das nicht der Fall ist, wird
eine leere Antwort an die Software zurückgeschickt, und es werden keine Daten übertragen.
Wenn sich etwas verändert hat, kann der Server lediglich die seit dem
letzten Aufruf erne