Meine Optimierungen im WordPress

WordPress ist erwachsen geworden und benötigt so damit wie jedes andere CMS auch eine individuelle Pflege. Diese ist abhängig von den eigenen Anforderungen und natürlich von der Umgebung auf dem das WordPress gehostet wird. Während man den eigenen Server an WordPress und dem zukünftigen Einsatzgebiet anpassen kann, muss man das WordPress im Shared-Webhosting an den Server anpassen. Klingt schwer – ist es jedoch nicht.

Nach einer frischen Installation bearbeite ich als erstes die “wp-config.php” und “.htaccess” . Danach installiere 4 Addons, welche die Pflege vereinfachen.  Da man nicht pauschal für alle Webhoster die Einstellungen posten kann beschränke ich mich hier auf das Power-Hosting der STRATO AG. Warum speziell für einen/diesen Hoster?

Teil zwei der Frage ist leicht zu beantworten – dort kenne ich mich aus.
Und Teil eins?
Die größte Informationsquelle für Optimierungen ist gleichzeitig auch der größte Stolperstein. Das Internet. Hier gibt wahnsinnig viele Seiten mit super Tipps, Statistiken, Grafiken und und und. Aber welche davon passen auf den eigenen Webhoster?  Meiner Erfahrung nach sinken die möglichen Einstellungen mit der Größe des Webhosters. Dies ist sicher der Massenkompatibilität geschuldet und der Performance.

Beispiel: mod_gezip

Hier werden Dateien serverseitig komprimiert. Dabei werden Serverressourcen benötigt. Je größer diese Webhostingplattform ist desto mehr Kunden finden darauf Platz. Nutzen nun alle mod_gzip hält dies zwar eine große Plattform besser aus als ein einzelner Server, aber auch hier werden einfach irgendwann Grenzen erreicht. Nun muss der Betreiber sich also überlegen: Macht es Sinn mod_gzip:

  • uneingeschränkt zur Verfügung zu stellen
  • abzuschalten um die Performance der Plattform zu sichern
  • einschränken und damit einen Mittelweg finden bzw alternativen zu schaffen

 

Unterschied Dateigröße mit und ohne mod_gzip_on

Unterschied Dateigröße mit und ohne mod_gzip_on

Hier liegen fast alle meine WordPress-Installationen, welche folgende Einstellungen nach der Installation erhalten haben:

wp-config.php

/** meine Anpassungen START **/
define('WP_MEMORY_LIMIT', '64M');
define('WP_POST_REVISIONS', '4');
define('EMPTY_TRASH_DAYS', '1' );
define('COMPRESS_CSS', true);
define('COMPRESS_SCRIPTS', true);
define('ENFORCE_GZIP', true);
@ini_set('display_errors', 0);
define('COOKIE_DOMAIN', 'www.wunschdomain.de');
define('WP_SITEURL', 'http://www.wunschdomain.de');
define('WP_HOME', 'http://www.wunschdomain.de');
/** meine Anpassungen ENDE **/

.htaccess

mod_gzip_on Yes
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 1 month 1 days"
ExpiresByType text/xml "access plus 1 seconds"
ExpiresByType text/css "access plus 1 month 1 days"
ExpiresByType image/png "access plus 1 month 1 days"
ExpiresByType image/gif "access plus 1 month 1 days"
ExpiresByType text/html "access plus 1 month 1 days"
ExpiresByType image/jpeg "access plus 1 month 1 days"
ExpiresByType text/javascript "access plus 1 month 1 week"
ExpiresByType application/javascript "access plus 1 month 1 days"
ExpiresByType application/x-javascript "access plus 1 month 1 days"
</IfModule>

<FilesMatch "(\.htaccess|\.htpasswd|wp-config\.php|liesmich\.html|readme\.html)">
order deny,allow
deny from all
</FilesMatch>

<IfModule mod_headers.c>
Header merge Cache-Control "public"
Header set Vary Accept-Encoding
</IfModule>

FileETag All
Options -Indexes

Addons

gzip Testen

wget --header="Accept-Encoding: gzip" http://www.wunschdomain.de

herunter gelandene Datei umbenennen:

mv index.html index.html.gz

Datei ansehen:

vi index.html

Es sollte nun der Quelltext der Webseite zu sehen sein.

Quellen

Amavis Fehlermeldung in der mail.info

Diese Fehlermeldung fiel mir heute in meinen Logfiles auf:

$ /var/log/mail.info
Aug 18 17:25:49 xxxxxx amavis[12234]: (12234-11) NOTICE: reconnecting in response to: err=2006, HY000, DBD::mysql::st execute failed: MySQL server has gone away at (eval 103) line 166, line 5.

Diese Meldung erscheint immer dann im Logfile, wenn eine eMail eingeht.

Eine kleine Anpassung und der Fehler ist behoben:

$ vi /etc/amavis/conf.d/50-user
$virus_admin = undef;
$spam_admin = undef;

Ändern in:

$ vi /etc/amavis/conf.d/50-user
$virus_admin = undef;
$spam_admin = undef;
$pax = 'pax';

Nach mehreren Tests kann ich sagen, der Fehler ist behoben.

Hinweis gefunden auf:
- www.howtoforge.com

ISPConfig3 – cron_daily.php

Fehlermeldung im: ISPConfig Cron – Protokoll

PHP Notice: Undefined offset: 1 in /usr/local/ispconfig/server/cron_daily.php on line 95
PHP Notice: Undefined variable: append in /usr/local/ispconfig/server/cron_daily.php on line 107

Kleine Änderung in der cron_daily.php

Zeile 95 ändern in:
@list($key, $value) = preg_split('/[\t= ]+/', $line, 2);

Zeile 107 ändern in:
if(!empty($append) AND $append == 1) $out .= $varName.' '.$varValue."\n";

Simples Teamspeak3 Menü für die Shell

Heute gibt es mal ein kleines Menü für die Shell um die 4 Optionen des TS3 Startscript komfortabel zu nutzen und schnell mal in die letzten Zeilen des Logfiles reinzusehen.
Normalerweise hat startet man den Server auf der Shell mit diesem Script:

$ ./ts3server_startscript.sh {start|stop|restart|status}

Die Logfiles lassen sich bequem via tail aufrufen:

$ tail logs/ts3server_2011-[...]-.log

Starten wir und erstellen im TS3 Verzeichnis die Datei ts-menu.mnu

$ vi ts-menu.mnu

In diese legen wir folgenden Inhalt:


#!/bin/sh
# ts-menue.mnu
# A simple TS3 menu script under Unix
# Autor blue-matrix
# Twitter: @bluematrix
showMenu (){
clear
echo -e "\t---------------------"
echo -e "\t| Teamspeak 3 |"
echo -e "\t---------------------"
echo -e "\t| Optionen: |"
echo -e "\t| 1 - TS3 Start |"
echo -e "\t| 2 - TS3 Stop |"
echo -e "\t| 3 - TS3 Restart |"
echo -e "\t| 4 - TS3 Status |"
echo -e "\t| 5 - TS3 Logs |"
echo -e "\t| |"
echo -e "\t| x - Exit |"
echo -e "\t---------------------"
}
choice1 (){ ./ts3server_startscript.sh start ; echo -e "\nPress Enter" ; read DUMMY ; }
choice2 (){ ./ts3server_startscript.sh stop ; echo -e "\nPress Enter" ; read DUMMY ; }
choice3 (){ ./ts3server_startscript.sh restart ; echo -e "\nPress Enter" ; read DUMMY ; }
choice4 (){ ./ts3server_startscript.sh status ; echo -e "\nPress Enter" ; read DUMMY ; }
choice5 (){
clear ; ls logs/ ;
echo -e "\nWelches Logfile soll angezeigt werden?" ;
read log ;
echo -e "\n" ;
tail logs/$log ;
echo -e "\nPress Enter" ;
read DUMMY ;
}
while true
do
showMenu
read answer
case $answer in
1) choice1;;
2) choice2;;
3) choice3;;
4) choice4;;
5) choice5;;
x) exit 1;;
*) echo Eingabe ungueltig ; echo "\nPress Enter" ; read DUMMY ;;
esac
done

Nach dem die Datei gespeichert wurde diese noch ausführbar machen:

$ chmode +x ts-menu.mnu

Das Menü wird dann aufgerufen mit:

$ ./ts-menu.mnu

TS3 Menü für die Shell

TS3 Menü für die Shell

HINWEIS: Wenn beim Aufruf des Menüs am Zeilenanfang -e angezeigt wird kann im Script selbst die Option -e nach echo entfernt werden.

Nach oben