Die perfekte WordPress Installation

Ja, das wäre wirklich schön ‚Die Perfekte WordPress Installation‘. Es ist ungewiss, ob es so etwas überhaupt gibt, denn neben den vielen Fragen des Geschmacks sind da noch persönliche Vorlieben und Gewohnheiten die noch in Betracht gezogen werden müssten. Auf jeden Fall sind nach der Standardinstallation von WordPress ziemlich viele Einstellungen sehr individuell den eigenen Ideen entsprechend vorzunehmen. Bestimmt hat einiges davon Zeit und muss nicht sofort erledigt werden. Doch andere Punkte können wichtiger sein und sollten in der Planung vorgeschoben werden. Die Nachfolgende Liste ist gewissermaßen eine Mitschrift bei der Installation und Konfiguration dieser Blog-Site und soll helfen den Aufwand zum Beispiel bei Neuinstallationen zu verringern.

Plugin- und Theme-Editor abschalten

Selbstverständlich dürfen die JS-Skripte die durch HTTP-Request gesteuert werden keine Änderungen auf dem Filesystem (wie zum Beispiel in anderen php-Skripten) durchführen. Warum wohl? Es muss deshalb als erstes in der wp-config.php der Eintrag angehängt werden, der die Möglichkeit abschaltet per HTTP-Requests toxische Dateien zu schreiben oder zu ändern:

define('DISALLOW_FILE_EDIT', 'true');
Virtual Host mit eigenem User

Einer der späteren Schritte (konkret: Update WordPress direkt ohne FTP)  macht es erforderlich, dass die WordPress-Prozesse im Webserver mit einer eigenen Benutzerkennung laufen. Um das einzurichten muss das Paket libapache2-mpm-itk installiert und aktiviert sein. Das erfolgt unter Ubuntu 18.04 mit einem apt-install-Kommando:

sudo apt-get install libapache2-mpm-itk

Dann muss noch der Owner in der vhosts-Konfiguration des Servers eingetragen werden:

<VirtualHost *:443>
    DocumentRoot /somewhere/wp/ServerName blogs.server.name

    <Directory "/somewhere/wp">
        Options FollowSymLinks
        AllowOverride all
        Require all granted
    </Directory>

    Include /certs/ssl-apache.conf
    SSLCertificateFile /certs/blogs/chain.pem
    SSLCertificateKeyFile /certs/blogs/privatekey.pem

    <ifmodule mpm_itk_module>
        AssignUserID blog sinan
    </ifmodule>
</VirtualHost>

Natürlich muss der User existieren. Der Sicherheit wegen sollte es einer ohne Loginshell sein

useradd blog --shell=/bin/false --no-create-home

Falls die Installation bereits erfolgt ist, haben die aktuell installierten Dateien noch den falschen Besitzer (möglicherweise www-data:www-data). Damit die Prozesse auf die Dateien zugreifen können muss das geändert werden:

chown -R blog:sinan /somewhere-in-the-filesystem/wp

Leider kann man an der Prozessliste nicht sehen, dass die Konfiguration funktioniert. Aber es lässt sich leicht mit einem kleinen Upload eines Bildes testen. Läd man ein beliebiges Bild wie zum Beispiel

Kleines Demo-Bildchen

auf den Server hoch, sollte es mit dem korrekten Besitzer im Dateisystem auftauchen:

Der Pfad ist ein Fake 🙂

Update WordPress direkt ohne FTP

Nachdem der Server also unter einer eigenen Benutzer-Kennung läuft, kann ich WordPress so umstellen, dass Plugins und Themes direkt installiert werden. direkt an dieser Stelle ist WordPress-Terminologie und bedeutet nicht über den in WordPress eingebauten FTP-Mechanismus sondern über PHP. Für FTP müsste ich auf meinem Server einen FTP-Zugang einrichten und die Credentials in ein Formular eingeben. Das ist mir irgendwie unsympathisch. Ich bevorzuge es, wenn die Pakete ohne Umwege installiert werden. Dazu ist eine weitere Option in wp-config.php notwendig

define('FS_METHOD', 'direct');

Server-Signatur des Webservers abschalten

Die Server-Signatur ist ein Feature, mit dem sich per HTTP-Anfragen erweiterte, technische Informationen wie Versionen oder andere Betriebssystem-Details abfragen lassen. Das ist für Hacker ein sehr nützliches Feature, aber für meine Installation ungewünscht. Um die Server-Signatur abzuschalten ist einerseits ein Eintrag in In /etc/apache2/conf-available/security.conf der Apache-Installation notwendig:

ServerTokens Prod ServerSignature Off 

Falls das nicht genügt, kann (bzw. muss) in der WordPress .htaccess nur eine Zeile hinzugefügt werden:

ServerSignature Off

WordPress Themes und Plugins Auswahl

  1. Das Theme Magazin ist wie für mich gemacht – zumindest ist das nach vielen Tests mit anderen Themes mein persönlicher Favorit. Ich werde wohl demnächst auf die Pro-Version umsteigen.
  2. Ebenso finde ich das Plugin Yoast SEO extrem nützlich. Es hilft dabei die Qualität der Beiträge zu verbessern indem es die Texte analysiert und direkt umsetzbare Vorschläge erstellt. Das integrierte Breadcrumb-Tool widersetzt sich noch meinen Versuchen es anzuwenden doch es gibt noch Hoffnung den Dreh herauszufinden.
  3. Das Plugin WP-dTree verwende ich um durch meine hierarchisch angeordneten Kategorien navigieren zu können. Es ist vielleicht nicht das beste Plugin für diesen Zweck auf dem Markt, doch in sehr kurzer Zeit ließen sich mit sehr wenig Aufwand dennoch beeindruckende Ergebnisse erzielen.
  4. Als unermüdlicher Entwickler benötige ich natürlich auch noch ein Plugin um Code in den Blogs einzubetten. Das macht bei mir jetzt der SyntaxHighlighter Evolved. Auch hier bin ich über den Funktionsumfang noch etwas enttäuscht, aber das kann auch an meiner Unkenntnis liegen.

Datenschutzerklärung im Suchmaschinen-Index

Das Thema Datenschutz ist ein endloses, in sich widersprüchliches Thema, dass man als Einzelunternehmer wohl niemals endgültig als Erledigt abhaken kann. Es gibt immer wieder Gesetzesänderungen, die berücksichtigt werden müssen. Die Datenschutzerklärung muss immer wieder an neue Gesetzesvorgaben angepasst werden. Anderenfalls läuft man Gefahr zum Opfer von Abmahnern zu werden. Auf jeden Fall ist es Ratsam zu verhindern, dass die Datenschutzerklärung in den Suchmaschinen indiziert wird.

Im WordPress geht man dazu in den Editor der Seite, Scrollt komplett nach unten in den SEO-Bereich. Im Block Erweitert findet man die erforderlichen Einstellungen.

Broken Links

Habe gerade im Zuge meiner Erkundungen von WordPress in den Settings die Einstellung für Permalinks von „Custom Structure“ auf „Post name“ umgestellt. Danach hat kein Link mehr funktioniert. Selbst dann, wenn ich wieder auf „Custom Structure“ zurück gestellt habe.

Das Zurückstellen hat deshalb nicht mehr funktioniert, weil die Custom-Einstellung durch die erste Änderung überschrieben wurde und deshalb nicht wieder hergestellt werden kann. Das war ärgerlich! Zum Glück hatte ich noch auf einem zweiten Server eine weitere Installation in der ich nachschauen konnte wie der ursprüngliche Text in der „Custom Structure“ ausgesehen hatte:

/index.php/%year%/%monthnum%/%day%/%postname%/

Nachdem ich das wieder eingetragen habe, waren zumindest die Seiten wieder sichtbar aber die Umsetzung meines ursprünglichen Vorhabens, Verknüpfungen auf „Post name“ umzustellen, stand immer noch aus.

Blind Fischen half auch nicht:

  • Alle Plugins löschen
  • Theme neu installieren
  • Web-Url ändern – das hat dazu geführt, dass die ganze Site nichtmehr erreibar war! Das ließ sich nur durch SQL-Updates in der Datenbank reparieren.

Was dann letztlich geholfen hat, war die Apache-Konfiguration anzupassen. Aus Sicherheitsgründen hatte ich im Hauptverzeichnis des Webservers das Überschreiben der Serveroptionen durch die Anweisung „AllowOverride None“ abgeschaltet. Da WordPress aber mit Redirection-Anweisungen in der .htaccess-Datei Arbeitet musste das weniger strikt eingestellt werden. Seit es auf „AllowOverride all“ umgestellt ist, sehen die Urls richtig hübsch aus.

Yoast SEO Breadcrumbs Konfigurieren

Herauszufinden wie das Feature letztlich aktiviert wird hat etwas länger gedauert als erwartet, doch im nachhinein betrachtet ist es eine Sache von Minuten.

Am Ende der Datei header.php muss ein kurzer php-Aufruf eingebaut werden:

<?php
if ( function_exists('yoast_breadcrumb') ) {
   yoast_breadcrumb( '<p id="breadcrumbs">','</p>' );
}
?>

Es wird zwar noch die single.php und/oder page.php als mögliche Orte für diesen Aufruf erwähnt, doch haben meine Versuche gezeigt, dass die besten Resultate nur mit der header.php zu erzielen waren.

Damit die kompletten Pfade in den Breadcrumps angezeigt werden, muss in den SEO Settings noch die Taxonomie, die in den Breadcrumbs für Inhaltstypen angezeigt wird eingestellt werden. (So heisst der Menüpunkt auf der Settings-Seite, siehe Abbildung

Und schließlich ist es so wie es sein soll:

Fazit

Diese Liste entsteht quasi während meiner Einarbeitungszeit in WordPress und wird wohl noch einige Zeit weiter geschrieben werden, da es immer wieder zu neuen Problemen kommt. Sicherlich ist vieles bereits 100-fach oder noch öfter im Internet erörtert worden, doch sehr verteilt und nicht in dem Format wie ich es gerne hätte: kompakt!