Google+ Comments Plugin bringt Google+ Kommentare ins Blog

Seit es Google+ gibt, finden viele interessante Diskussionen zu den Artikeln nicht mehr im Blog statt, sondern werden auf Google+ vollzogen. Schon lange hat man sich gewünscht diese Kommentare wieder ins Blog zu lenken, leider gibt es hier keine Verpflechtung. Nun bringt das WordPress Plugin „Google+ Comments for WordPress“ zumindest die Option die verschiedenen Möglichkeiten unter den Artikeln einblenden zu lassen.

Google+ Comments for WordPress

Das Plugin für WordPress ermöglicht es unterschiedliche „Netzwerke“ in form von Reitern unter dem Artikel anzeigen zu lassen. Die Kommentare aus den unterschiedlichen Netzwerken, Google+ und Facebook als klassische soziale Netzwerke werden unterstütz, darüber hinaus dann Disqus und die WordPress eigene Kommentarfunktion sowie Trackbacks, werden angezeigt, jedoch nicht einer gemeinsamen Ansicht. Man blendet für die genutzten Möglichkeiten einzelne Reiter ein und bekommt dann die Kommentare angezeigt, bzw. kann direkt einen Kommentar hinterlassen.

Google+ Comments Plugin Reiter

Ich habe das Plugin einmal aktiviert und Google+ als Standard eingestellt, auch wenn hier ein Google Benutzerkonto notwendig ist, aber das haben die meisten Leser hier wahrscheinlich ohnehin. Ohne Konto oder Registrierung kann wie gewohnt über Disqus kommentiert werden.

Wie steht ihr zu Kommentaren im Blog und Google+ als Diskussionsmedium? Lasst mal hören!

Randnotizen: Ein bunter Strauß Neues

Weil es doch ein paar nette Neuerungen sind, die wir still und heimlich umgesetzt haben, erachten wir es als angebracht, diese zumindest vorzustellen.

Mit der Umstellung auf das neue Design haben wir bereits verkündet, dass an dieser Stelle noch lange nicht Schluss ist und wir noch Einiges vorhaben. Es gibt einen alten Bekannten zurück, Hand in Hand mit dem neuen „Freund“. Die Sidebar zeigt ab sofort wieder die Top 5 Artikel der Woche an, hier befinden sich die meistgelesenen Artikel der letzten sieben Tage, Huckepack zum Google+ Banner. Man kann, sofern mit einem Google Account eingeloggt, direkt unsere Google+ Seite in die eigenen Kreise aufnehmen. Mehr als konsequent, denn Google+ zeigt sich für uns als ideale Plattform um die Beiträge zu veröffentlichen und muntere, aber vor allem konstruktive, Diskussionen mit euch zu führen. Natürlich wäre es uns lieber diese im jeweiligen Beitrag auf dem Blog zu sehen, aber eventuell kommt hierzu irgendwann mal eine Schnittstelle.

Google+ und Top Artikel:

NEU: Google+ Badge und Topbeiträge der Woche
NEU: Google+ Badge und Topbeiträge der Woche

Weiter geht es mit den Fokuskategorien des Blogs: Android, Games und Ubuntu. Alle drei haben eigene Headerlogos bekommen und sammeln ausschliesslich die Artikel der jeweiligen Kategorie, schnell und einfach über das Menü erreichbar.

Nodch.de Android-Seite:

Nodch.de Android Kategorie
Nodch.de Android Kategorie

Die Android Kategorie fasst alle Artikel zusammen die sich rund um das Thema Android drehen – Testberichte zu Hardware oder Software, Newsartikel, Anleitungen und Vieles mehr. Jede Kategorie besitzt nun einen eigenen Slider, der erwähnenswerte Artikel hervorhebt, hier allerdings nur Artikel, die zur entsprechenden Kategorie passen. Die Nodch.de Androidseite ist über das Seitenmenü erreichbar, oder direkt über https://www.nodch.de/android

Nodch.de Games-Seite: 

Nodch.de Games Kategorie
Nodch.de Games Kategorie

Die Games Kategorie beschäftigt sich mit allen Dingen rund um Games, hier stellen wir mobile Hardware, die für’s Gaming lohnt vor, beleuchten interessante Spiele, testen diese und so weiter. Was schon bei der Android Kategorie galt, gilt auch hier: eigener Slider, eigener Header und in Zukunft mehr Inhalte rund ums Gaming. Die Nodch.de Games Seite ist über das Seitenmenü erreichbar oder direkt unter https://www.nodch.de/games

Nodch.de Ubuntu-Seite:

Nodch.de Ubuntu Kategorie
Nodch.de Ubuntu Kategorie

 

Auf Nodch.de darf Ubuntu nicht fehlen, mit vielen Tipps, Anleitungen und Vorstellungen rund um das Debian basierte Betriebssystem. Aller guten Dinge sind drei: eigener Slider, eigener Header! Über das Seitenmenü hat man direkten Zugriff auf alle Ubuntu-relevanten Themen und kann sich durch die mittlerweile recht umfangreiche Artikelsammlung zum Thema wühlen. Alternativ kann die Seite unter https://www.nodch.de/ubuntu direkt angesurft werden.

Weniger ist mehr – Autorenbox:

Redesign Autorenbox
Redesign Autorenbox

Die Autorenbox soll einen schnellen Blick darauf eröffnen, wer den entsprechenden Beitrag geschrieben hat. Kurze Rede: die Box war zu umfangreich und lenkte vom Artikel ab! Nun ist sie optisch angepasst, zeigt den Autor, eine kurze „Biografie“, die Social Media Links des entsprechenden Schreiberlings – ist dabei aber fast nur noch halb so gross.

Bis hierhin und noch weiter:

Ich hoffe die Änderungen gefallen euch, wir haben noch ein paar kleine Anpassungen direkt im System versteckt, wie bessere Ergebnisse bei der „ähnliche Artikel“ Empfehlung, aber nichts was sich so schön in Bildern zeigen lässt.

Falls ihr Ideen oder Wünsche habt, seid so nett uns lasst sie uns wissen, wir sind für konstruktive Kritik immer zu haben und wollen die Seite immer weiter verbessern. Wie man es allerdings kennt…der Schuster hat die schlechtesten Schuhe, häufig fehlt vielleicht der Blick aus Lesersicht, hier zählen wir auf euch!

Die Kommentare stehen euch immer offen, nicht schüchtern sein. 😉

 

EmbedPlus: YouTube Videos mit Sonderfunktionen einbinden

Gerade als Blogger stösst man häufig auf Videos, die man den Lesern zeigen möchte. YouTube bietet eine schnelle und einfach Möglichkeit diese in die eigene Webseite einzubinden. Was aber, wenn man mehr möchte? EmbedPlus bietet einige Funktionen, die man sich sicherlich schon häufiger gewünscht hat.

EmbedPlus ist ein Onlinedienst, der dank einer einfachen Benutzerführung und zusätzlicher Funktionen, YouTube Videos in die eigene Webseite einbinden kann. Mit EmbedPlus „bearbeitete“ Videos kann man dank generiertem Code direkt in die Webseite einbinden, nutzt man WordPress braucht man noch das Plugin, oder per Shortlink weitergeben.

Zwar kann man einige der Funktionen auch mit YouTube eigenen Mitteln bewerkstelligen, EmbedPlus bietet hier jedoch den Vorteil der simplen Erstellung, ohne etwas manuell ändern zu müssen.

Alles startet mit der Eingabe der URL des YouTube Videos, diese könnt ihr einfach der Adresszeile eures Browsers entnehmen, während ihr das Video auf YouTube geöffnet habt:

EmbedPlus URL des Videos eingebenIm zweiten Schritt geht es an die zusätzlichen Funktionen:

EmbedPlus zusätzliche Funktionen Teil 1Man kann die Grösse bestimmen und auf die eigene Webseite anpassen und vorgeben dass das Video immer in der höchstmöglichen HD Version abgespielt werden soll. Start und Stop-Zeit sind sehr nützliche Funktionen, denn häufig möchte man in einem Video einen bestimmten Bereich zeigen, weil hier z.B. eine interessante Funktion, oder ein Detail gezeigt wird. Im Startbereich setzt man die Zeit, ab der das Video beginnen soll. Nun kann man es ab dieser Stelle bis zu Ende durchlaufen oder automatisch Stoppen lassen, wenn man eine Stop-Zeit eingegeben hat.

Szenenmarker ersetzen das klassische DVD Menü, man kann verschiedene Marker setzen und die Betrachter direkt an die entsprechenden Stellen springen lassen, gerade bei sehr umfangreichen, bzw. langen Videos eine schöne Funktion.

EmbedPlus zusätzliche Funktionen Teil 2Hinter dem Real-time Reaction Button verstecken sich aktuelle Reaktionen zum Video, seien dies Kommentare auf YouTube oder Erwähnungen bei Twitter, mit einem Klick auf den Button, kann der Betrachter sich diese anzeigen lassen.

Abschliessend können eigene Anmerkungen zum Video erstellt und eingeblendet werden. Dies ist immer dann hilfreich, wenn man weitergehende Informationen zum Video hat, Korrekturen vermerken will, oder einfach nur ein anderssprachiges Video mit sinnvollen Anmerkungen ergänzen möchte.

Ein Klick auf „Get code“ zeigt uns die entsprechenden Codes an, damit diese auf der eigenen Webseite eingebunden werden können. Alternativ kann man einfach den generierten Bit.ly Link nutzen und ihn weiterverteilen.

EmbedPlus bietet eigentlich nichts, was man nicht über manuelle Anpassungen auf YouTube auch erreichen könnte, der Vorteil liegt in der einfachen Nutzbarkeit. Einziges Manko: ein bereits „bearbeitet“ Video kann nicht im Nachhinein nochmal angepasst werden, weil man eine zusätzliche Anmerkung machen will, oder einen weiteren Marker setzen möchte.

Nginx konfigurieren und PHP als FastCGI bereitstellen

Teil 3 unserer kleinen HowTo-Reihe. Wir zeigen euch, wie man eine WordPress Webseite mit Nginx auf Ubuntu Server beschleunigen kann. Nachdem wir Nginx bereits installiert haben und PHP und MySQL, wird nun erklärt, wie man ein reibungsloses Zusammenspiel konfiguriert. [sws_divider_top]Bevor ich nun erkläre wie man PHP in Nginx einbindet, müssen wir ersteinmal wissen, wie die Nginx Konfiguration funktioniert. Die Konfiguration hat eine feste, logische Struktur:

# Hier werden nur Einstellungen vorgenommen die ganz global sind # wie z.b. der User, womit nginx ausgeführt werden soll
befehl;
befehl;

events {
  # hier kann einstellt werden wie nginx mit Verbindungen umgeht
  befehl;
}

http {
  # Einstellungen für den http Server
  befehl;
  befehl;
  include conf/mime.types; # Einstellungen aus anderer Datei dazuholen 

  server {
    # Einstellungen für einen Host
    listen nodch.de; # dieser Serverbereich gilt für die domain nodch.de
    befehl;
    befehl;

    location / {
      # Einstellungen für das Root Verzeichnis 
      befehl;
    }

    location /download/ {
      # Einstellungen für /downloads
      befehl;
    }

    location ~* ^.+\.(jpg|jpeg|gif)$ {
      # Einstellungen für alle URLs die auf .jpg, .jpeg oder .gif enden
      befehl;
    }
  }
}

Der server und der location Bereich kann beliebig oft vorkommen, solange er an der richtigen Sstelle ist. Einige Befehle können nur in definierten Bereichen stehen. Ich werde euch hier die wichtigsten Funktionen für jeden Bereich erklären.

Globale Einstellungen

user             www www;             # nginx wird als User www in der Gruppe www ausgeführt 
worker_processes 2;                   # nginx wird 2 Verarbeiter Prozesse starten
pid              /var/run/nginx.pid;  # pid file wird dort gespeichert

Außerdem kann noch der error_log definiert werden, jedoch separiere ich diese immer in die einzelnen Server.  Wird sie oben angegeben, sieht man im log auch globale Fehler. Eine komplette Auflistung aller globalen Einstellungen findet man im Nginx Wiki#NginxHttpMainModule. Mit worker_processes und dem event Bereich könnt ihr die Performance des Servers beeinflussen. Der event Bereich lässt verschiedene Einstellungen zu, der Wichtigste ist aber:

worker_connections 1024;

Wenn ihr worker_proesses * worker_connections rechnet, erhaltet ihr die maximale Anzahl gleichzeitiger Clients, im Beispiel also maximal 2048. Auch hier findet ihr wieder alle möglichen Einstellungen im Nginx Wiki#NginxHttpEventsModule.

Die richtige Wahl der worker_processes ist wichtig! Wollt ihr eine Webseite haben, die sehr Last intensiv ist, also mit SSL und GZIP, so sollte die Zahl der Worker Prozesse nicht die Anzahl der CPU Cores übersteigen. Verwendet ihr den Server aber als Host für statischen Content, kann die Zahl erhöht werden, um einen schnellstmöglichen Dateizugriff zu haben.

HTTP Server Einstellungen

Alle hier getätigten Einstellungen wirken sich direkt auf die eingetragenen server Bereiche aus. Im http Bereich werden in der Regel Einstellungen gemacht, die für alle server Bereiche gleich sind, wie beispielsweise das access log format, oder gzip. Diese Befehle können problemlos im server Bereich überschieben werden. Hier seht ihr wie der http Bereich bei nodch.de aussieht:

include /etc/nginx/mime.types;

log_not_found off; # kein Status 404 logen
                   # Log format soll Apache ähnlich sein
log_format main	'$remote_addr - $remote_user [$time_local] "$request"'
 ' $status $body_bytes_sent "$http_referer" "$http_user_agent"';

sendfile           on;  # Erlaubt sendfile(). Infos hier
tcp_nodelay        on;  # Für sendfile()
keepalive_timeout  6;   # Verbindungen früh wieder schließen
server_tokens      off; # Versionsnummer nicht auf der Fehlerseite zeigen

gzip               on;    # GZip Anschalten
gzip_http_version  1.0;
gzip_comp_level    2;     # Kompressionslevel. Performancesache
gzip_proxied       any;   # Proxy Verhalten
gzip_min_length	   1100;  # erst ab 1100 byte größe kompremieren
gzip_buffers       16 8k;
# Folgende Dateitypen kompremieren
gzip_types         text/plain text/html text/css application/x-javascript
                   application/xml application/xml+rss text/javascript;
gzip_disable       "MSIE [1-6].(?!.*SV1)"; # GZip für den IE6 auschalten
gzip_vary          on;  # Vary Header senden

# server und zusatzconfigs einbinden
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;

Dies ist eine vergleichsweise simple Konfiguration, wir definieren, das wir immer GZip benutzen wollen, jedoch nicht für den IE6. Außerdem setzen wir das keepalive_timeout stark runter, um erhöhtes Trafficaufkommen problemlos zu verarbeiten. Außerdem ändern wir das Log Format in das von Apache, um Analyse Tools zu benutzen. Eine Auflistung aller Core Befehle gibt es auch wieder im Nginx Wiki#NginxHttpCoreModule sowie eine Übersicht über alle anderen Module. Viel wichtiger als der http Bereich, ist für uns aber der server Bereich.

Der server Bereich ist ähnlich dem VirtualHost Eintrag im Apache. Hier ein Beispiel:

server {
  server_name  nodch.de; # Dieser Bereich ist nur für die Domain nodch.de   # nodch.de wird auf www.nodch.de umgeschrieben
  rewrite ^(.*)	https://www.nodch.de$1 permanent;
}

server {
  listen        80; # Port 80 benutzen   # Dieser Bereich gilt für diese beiden Domains
  server_name   www.nodch.de photo.nodch.de; 

  root          /var/www/nodch.de/httpdocs; # Hier liegen die Dateien
  # Log hier schreiben und dabei das "main"-Format benutzen
  access_log    /var/www/nodch.de/logs/access.log  main;
  # Die Fehler landen in dieser Datei
  error_log     /var/www/nodch.de/logs/error.log;

  # die index Datei ist index.php wenn nicht da index.html ... usw.
  index         index.php index.html index.htm;
}

Wenn nun eine [sws_highlight hlcolor=“fbfac7″]index.html[/sws_highlight] Datei in [sws_highlight hlcolor=“fbfac7″]/var/www/nodch.de/httpdocs[/sws_highlight]  liegt und euer Server ist gestartet, dann könnt ihr mit eurem Webbrowser darauf zugreifen und ihr werdet den Inhalt der index.html dargestellt bekommen. Nur wird es ohne weiteres nicht klappen nodch.de aufzurufen und eure Datei zu sehen 🙂 Ihr müsst es entweder auf localhost ändern oder eure eigene Domain eintragen. Aber insoweit ist Nginx konfiguriert um statischen Content zu hosten, welcher brav komprimiert wird. Im server Bereich könnt ihr eigene location Bereiche anlegen, in denen Befehle hinterlegt werden können, die eben nur an dieser location gültig sind. Hierzu ein Beispiel:

# Gilt für die Hauptseite
location / {
  # URLs probieren ob es sie gibt, letzter Eintrag ist immer Default
  try_files $uri $uri/ /index.php;
}
 # Die Datei piwik.js, egal wo sie liegt bekommt eine Cachezeit von 90 Tagen.
location ~ piwik.js$ {
  expires 90d;
}

# Das favicon interessiert uns nicht. Log aus.
location = /favicon.ico {
  access_log off;
}

# Adressen die mit wp-content, js oder css anfangen
location ~ ^/(wp-content|js|css)/  {
  expires 30d; # Cachzeit 30 Tage
  root    /var/www/nodch.de/static; # Dateien aus anderen Ordner beziehen
}

Der location Bereich kann ziemlich frei, mithilfe von Regex bestimmt werden. Mithilfe von Steuerzeichen kann außerdem bestimmt werden, wie wichtig ein location Bereich ist.

  • =   Bedeutet, dass diese location fest ist, kein Regex
  • ~   Regex ist case sensitiv
  • *~ Regex ist case insensitiv
  • ^~ Sucht ein Regex, hört an dieser location auf wenn gefunden

Genauere Infos erhaltet ihr natürlich wieder im Nginx Wiki#location, auch sind die default Konfigurationen gut kommentiert, sodass man damit auch gleich loslegen kann.[sws_divider_top]

PHP einbinden

Mit dem vorherigen Artikel habt ihr schon PHP installiert und als FastCGI Anwendung auf 127.0.0.1:9000 gespawnt. Um diese nun mit nginx anzusteuern, müssen zwei kleine Modifikationen vorgenommen werden. Öffnet zuerst die Datei [sws_highlight hlcolor=“fbfac7″]/etc/nginx/fastcgi_params[/sws_highlight] . Der Inhalt sollte so aussehen:

fastcgi_param	QUERY_STRING		$query_string;
fastcgi_param	REQUEST_METHOD		$request_method;
fastcgi_param	CONTENT_TYPE		$content_type;
fastcgi_param	CONTENT_LENGTH		$content_length;

fastcgi_param	SCRIPT_FILENAME		$document_root$fastcgi_script_name;
fastcgi_param	SCRIPT_NAME		$fastcgi_script_name;
fastcgi_param	REQUEST_URI		$request_uri;
fastcgi_param	DOCUMENT_URI		$document_uri;
fastcgi_param	DOCUMENT_ROOT		$document_root;
fastcgi_param	SERVER_PROTOCOL		$server_protocol;

fastcgi_param	GATEWAY_INTERFACE	CGI/1.1;
fastcgi_param	SERVER_SOFTWARE		nginx/$nginx_version;

fastcgi_param	REMOTE_ADDR		$remote_addr;
fastcgi_param	REMOTE_PORT		$remote_port;
fastcgi_param	SERVER_ADDR		$server_addr;
fastcgi_param	SERVER_PORT		$server_port;
fastcgi_param	SERVER_NAME		$server_name;

Es ist wichtig, dass in SCRIPT_FILENAME der absolute Pfad verwendet wird, denn dieser wird an die PHP Worker gegeben. Würde ein vermeindlich relativer Dateipfad übergeben werden, wie z.B. [sws_highlight hlcolor=“fbfac7″]/wordpress/index.php[/sws_highlight], werdet ihr die Fehlermeldung No input file specified bekommen. Er muss also absolut sein: [sws_highlight hlcolor=“fbfac7″]/var/www/prad/zu/index.php[/sws_highlight].

Ist diese Anpassung gemacht, öffnet bitte die Datei, in der ein server Bereich vorhanden ist. Fügt eine neue location hinzu:

location ~ \.php$ {
  include                  fastcgi_params; # Parameter einbinden
  fastcgi_pass             127.0.0.1:9000; # Anfrage an Worker weitergeben
  fastcgi_index	           index.php; # Standard Dateiname
  fastcgi_split_path_info  ^(.+\.php)(/.+)$; # Parameter abtrennen
  fastcgi_intercept_errors on; # Fehler ausgeben
}

Diese location bezieht sich auf alle PHP Dateien und reicht die Verarbeitung an unsere PHP Worker weiter. Die Parameter werden von der URL abgetrennt, was bewirkt, das auch URL Parameter an PHP gegeben werden und normal benutzt werden können. Alternativ zu 127.0.0.1:900 kann auch ein Unix-Socket verwendet werden. Dazu im Startscript einfach nicht die Adresse 127.0.0.1:9000 sondern eine Datei wie [sws_highlight hlcolor=“fbfac7″]/var/socket/php.socket[/sws_highlight]  binden. Danach muss der Parameter fastcgi_pass angepasst werden:

fastcgi_pass unix:/var/socket/php.socket;

Das wars auch schon. Ihr könnt jetzt folgendes testen:

$ echo "<?php phpinfo(); ?>" > /var/www/eure/httpdocs/info.php

Dann einfach die info.php im Browser aufrufen und ihr werdet die PHP Konfigurationswebseite sehen!

Viel Spaß beim testen! Im nächsten Teil dieser Serie werde ich euch dann zeigen, wie ihr WordPress auf einer Nginx Umgebung benutzt und es mit Hilfe von W3TotalCache, sowie anderen Optimierungsmethoden spürbar schneller machen könnt.

[sws_divider_top] Teil 0: Einführung
Teil I: Installation der aktuellen Nginx-Version auf Ubuntu
Teil II: Installation von MySQL und PHP
Teil III: Nginx konfigurieren und PHP als FastCGI bereitstellen
– Alternativ: PHP-FPM Installieren und bereitstellen (folgt !)
Teil IV: Nginx für WordPress optimieren

HowTo: Installation von MySQL und PHP auf Ubuntu Server

In einer kleinen HowTo-Reihe zeigen wir euch, wie man eine WordPress Webseite mit Nginx auf Ubuntu Server beschleunigen kann. Die Installation von MySQL und PHP ist Teil 2 der Reihe.  MySQL und PHP sind ebenso einfach Installiert wie Nginx selbst.

MySQL-logo

[sws_divider_top]Fangen wir mit dem Einfacheren an: MySQL.

Ein einziger Befehl reicht aus im MySQL vollständig zu installieren:

$ sudo apt-get install mysql-server mysql-client

Theoretisch kann der MySQL Server jetzt schon gestartet werden. Ich möchte euch jedoch noch etwas über dessen Konfiguration erzählen. Ihr findet die Konfigurationsdatei unter [sws_highlight hlcolor=“fbfac7″]/etc/mysql/my.conf[/sws_highlight]. Diese kann mittels Dateieditor einfach geöffnet und editiert werden. Wie schon erwähnt, ist diese Konfiguration normalerweise ausreichend. Jedoch sollte man über folgende Einstellungen bescheid wissen:

datadir        = /var/lib/mysql

Im datadir werden die Datenbanken im Filesystem gespeichert. Sollte der Fall eintreten, dass der MySQL Server nicht mehr gestartet werden kann, könnt ihr hier die Daten retten. Dies geht leider nur wenn als Datenbankengine MyISAM gewählt wurde (Ist bei WordPress der Fall). Wurde eine andere Engine wie InnoDB gewählt, erfordert es Glück oder einen großen Aufwand diese Daten noch zu retten.

bind-address        = 127.0.0.1

Über die bind-address wird geregelt über welche IP Adresse der Server erreichbar ist. Standardmäßig steht diese Einstellung auf 127.0.0.1, sprich der Server ist nur von localhost erreichbar. Wählt ihr eure öffentliche Server IP so könnt ihr, wenn ihr euch das Recht eingeräumt habt, auch von extern zugreifen.

key_buffer = 16M
max_allowed_packet = 16M
thread_stack = 192K
thread_cache_size = 8
#max_connections = 100
#table_cache = 64
#thread_concurrency = 10
query_cache_limit = 2M
query_cache_size = 32M

Mit diesen Einstellungen kann die meiste Performance aus dem Server geholt werden, oder auch vernichtet werden. Ihr könnt alle Cachegrößen und Verbindungen definieren. Ich werde jetzt nicht auf die Optimierung von MySQL eingehen, diese Einstellungen reichen aus, um einen korrekt arbeitenden MySQL Server zu betreiben. Wer möchte kann aber gern in der offiziellen Dokumentation nachschauen: Kapitel 7: Optimierung

[sws_divider_top]PHP-logoDie PHP Installation ist auch nicht viel schwerer. Da wir jedoch die aktuellste PHP Version benutzen wollen, müssen wir vorher noch neue Repositories eintragen, denn in den offiziellen Apt-Quellen ist noch eine ältere Version enthalten.

$ sudo echo "deb http://ppa.launchpad.net/nginx/php5/ubuntu lucid main" >> /etc/apt/sources.list
$ sudo echo "deb-src http://ppa.launchpad.net/nginx/php5/ubuntu lucid main" >> /etc/apt/sources.list

Wenn wir das erledigt haben starten wir auch schon die Installation:

$ sudo apt-get install php5 php-pear php5-dev php5-suhosin php5-mysql libpcre3-dev php5-cgi

Dieser Befehl installiert die neue Version von PHP, zusätzlich wird noch PEAR installiert. Mit PEAR können offizielle PHP Pakete wie apc oder memcache nachinstalliert werden. Für eine Nachinstallation muss PHP kompiliert werden, dafür installieren wir das PHP Dev Paket gleich mit. Dazu kommen dann noch der Suhosin Patch, MySQL Unterstützung, Abhängigkeiten und der CGI Modus…

Die Installation wird etwas länger dauern als bei Nginx und MySQL.

Da wir PHP über FastCGI anbinden wollen, müssen wir die PHP Worker noch spawnen, die geschieht über den Befehl:

$ php-cgi -b 127.0.0.1:9000

Alle PHP Worker lauschen nun auf Port 9000, damit man das nicht jedes mal neu eingeben muss, gibt es im Nginx Wiki ein simples Linux-Style-Start-Script:

#!/bin/bash
BIND=127.0.0.1:9000 # Eure Worker werden hier lauschen
USER=www-data # Bitte den selben Nutzer angeben wie in Nginx, default ist www-data
PHP_FCGI_CHILDREN=15
PHP_FCGI_MAX_REQUESTS=1000

PHP_CGI=/usr/bin/php-cgi
PHP_CGI_NAME=`basename $PHP_CGI`
PHP_CGI_ARGS="- USER=$USER PATH=/usr/bin PHP_FCGI_CHILDREN=$PHP_FCGI_CHILDREN PHP_FCGI_MAX_REQUESTS=$PHP_FCGI_MAX_REQUESTS $PHP_CGI -b $BIND"
RETVAL=0

start() {
 echo -n "Starting PHP FastCGI: "
 start-stop-daemon --quiet --start --background --chuid "$USER" --exec /usr/bin/env -- $PHP_CGI_ARGS
 RETVAL=$?
 echo "$PHP_CGI_NAME."
}
stop() {
 echo -n "Stopping PHP FastCGI: "
 killall -q -w -u $USER $PHP_CGI
 RETVAL=$?
 echo "$PHP_CGI_NAME."
}

case "$1" in
 start)
   start
 ;;
 stop)
   stop
 ;;
 restart)
   stop
   start
 ;;
 *)
   echo "Usage: php-fastcgi {start|stop|restart}"
   exit 1
 ;;
esac
exit $RETVAL

Speichert Script am besten unter [sws_highlight hlcolor=“fbfac7″]/etc/init.d/[/sws_highlight] mit dem Namen [sws_highlight hlcolor=“fbfac7″]php-fcgi[/sws_highlight], dann könnt ihr ganz einfach einen Autostart einrichten:

$ sudo update-rc.d php-fcgi defaults

Nun fehlen nur noch apc und memcache:

$ sudo pecl install memcache
$ sudo pecl install apc

Die Installation sollte eigentlich korrekt ablaufen, es kann aber passieren, dass PEAR eure php.ini nicht findet, wenn das der Fall ist, einfach diese Zeilen in die Datei [sws_highlight hlcolor=“fbfac7″]/etc/php/cgi/php.ini[/sws_highlight]eintragen:

extension=memcache.so
extension=apc.so

Da sind wir auch schon fertig!  Im nächsten Kapitel werde ich euch zeigen wie ihr alles zusammenklebt, PHP als FastCGI Anwendung im Nginx bereitstellt und wie man Nginx richtig konfiguriert.

[sws_divider_top] Teil 0: Einführung
Teil I: Installation der aktuellen Nginx-Version auf Ubuntu
Teil II: Installation von MySQL und PHP
Teil III: Nginx konfigurieren und PHP als FastCGI bereitstellen
– Alternativ: PHP-FPM Installieren und bereitstellen (folgt !)
Teil IV: Nginx für WordPress optimieren

WordPress Webseite mit Nginx auf Ubuntu Server beschleunigen

Das Internet wird jeden Tag größer und schneller, und jede Webseite oder jedes Blog, das eine hohe Reichweite hat kennt das Problem: Der Traffic zwingt irgendwann den Server in die Knie. Nun steht man vor der Wahl: Hat man die finanziellen Mittel, besorgt man sich neue Hardware, denn je besser ein WebServer ist, umso mehr Anfragen kann er gleichzeitig bearbeiten. Zusätzlich kann man auch die WebSeite optimieren, also CSS Dateien zusammen fassen, Bilder in Sprites packen und wenn möglich sogar Javascript zusammentun, beziehungsweise auslagern und statischer Content kann mit einer Cache-Zeit von über 30 Tagen ausgestattet werden. Nur was ist, wenn all das absolut nicht mehr klappt?

Dies ist uns passiert, die Besucherzahlen liefen stabil nach oben und Google hat uns sehr gut platziert. Um genau zu sein auf Platz 1 der Newskategorie „Technik/Wissenschaft“, direkt in der Schlagzeilenübersicht auf der news.google.de Startseite,  was zwar wirklich toll war, nur lieferte uns Google in diesem Moment mehr als 250 Anfragen … pro Sekunde. Unser sowieso schon angeschlagener Apache2 brach gnadenlos zusammen, ohne das wir was tun konnten. Der ganze Spaß wiederholte sich noch 2 mal und wir versuchten herauszufinden warum. Ich muss dazu sagen, dass unser Server mit 2 CPUs ausgestattet ist und über 8 GB RAM verfügt und außer nodch.de nichts anderes auf der Hardware lief. Wir kamen relativ schnell zu dem Entschluss, dass Apache schuld ist. Der Server stand permanent unter Dauerlast, der Arbeitsspeicher jedoch fühlte sich unnütz. Man sollte sich also genau fragen wo Flaschenhälse sind: Hardware, Software oder die Serversoftware.

Wir haben uns dazu entschieden Apache abzusetzen und durch Nginx (gesprochen: „Engine X“) zu ersetzen. Nginx bezeichnet sich selbst als „high performance web server“ der effektiver als Apache arbeitet und dabei sogar weniger Speicher verbraucht. Installation, Einrichtung und Gebrauch sind ebenso einfach wie bei Apache.

Gängige Apache Konfigurationen sehen in der Regel immer gleich aus:

Es läuft ein Apache2 Server in mehreren Instanzen, PHP und MySQL Modul sind einkompiliert und werden als Extension geladen. Es werden vhosts definiert und größtenteils werden per .htaccess Datei spezifische Einstellungen vorgenommen.

Genau da liegt das Problem: Ist beispielsweise PHP mit einkompiliert, wird PHP bei jedem Request an den Server geladen, was unter dem Strich enorm Ressourcen nutzt. Apache wertet außerdem .htaccess Daten mit jedem Request neu aus. Jeder kann sich selbst zusammenreimen was passiert wenn da mehr als 100 Anfragen pro Sekunde reinkommen und die Hardware eher normal ist. 🙂

Nginx ist im Vergleich zu Apache jetzt nicht das Torschlagargument, aber die Unterschiede sind schon deutlich. Grade wenn es um statischen Content geht, ist Nginx um einiges schneller als Apache. PHP wird in Nginx per FastCGI angebunden, was den Vorteil hat, dass die PHP Worker gespawnt im System liegen und nur auf Arbeit warten. Nginx kann so konfiguriert werden, dass PHP nur ausgeführt werden soll, wenn es denn auch nötig ist. Apache mit FastCGI zu verwende ist zwar auch möglich, nur nutzen das leider die Wenigsten.

Ich möchte euch in einer kleinen HowTo-Reihe die Einrichtung von Nginx auf Ubuntu zeigen und erklären wie die verborgene Performance der Hardware optimal genutzt werden kann. Dabei beziehe ich mich auf eine WordPress Installation. Ich persönlich bin Begeistert vom enormen Performancesprung von nodch.de, den wir mit dieser Konfiguration erreichen konnten.

Wie das alles im Detail funktioniert, installiert und eingerichtet wird, wollen wir euch natürlich nicht vorenthalten!

[sws_divider_top]

Teil 0: Einführung
Teil I: Installation der aktuellen Nginx-Version auf Ubuntu
Teil II: Installation von MySQL und PHP
Teil III: Nginx konfigurieren und PHP als FastCGI bereitstellen
– Alternativ: PHP-FPM Installieren und bereitstellen (folgt !)
Teil IV: Nginx für WordPress optimieren

Ich versuche übrigens jeden Tag mindestens einen Artikel zu Reihe zu veröffentlichen.

Nodch.de ist tot, lang lebe nodch.de!

Kilmainham Jail DublinDes Zitates musste ich mich einfach bedienen, so gross ist die Freude, dass die Seite wieder online ist und zu funktionieren scheint.

Warum ihr heute lange nichts und dann nur einen kleinen Hinweis sehen konntet, dass wir bald wieder da sind und daran arbeiten (daher das Artikelbild, übrigens Kilmainham Jail in Dublin – völlige Leere und ein verschlossener Zugang mit Schild), will ich aber trotzdem erklären.

Das Blog wächst und wächst, an Artikeln und Besuchern, das freut sehr, muss aber auch entsprechende Rahmenbedingungen haben. Allen voran natürlich ein entsprechend sauber konfigurierter Server…

Was man vom bisher laufenden Apache nicht wirklich behaupten konnte, dieser machte trotz genügend Ressourcen (2 CPUs, 8GB RAM und so) schon länger Probleme. Über die Jahre habe ich an der Config viel gedreht und wahrscheinlich auch viel „verdreht“, so dass man immer, wenn es Trafficspitzen gab, zunehmend knappe Luft rund um den „Indianer“ feststellen musste. Nachdem uns in den letzten Tagen zunehmend mehr Besucher erreichten, war der Gedanke gereift, da sich der Apache nicht mehr in den Griff bekommen lies, auf nginx als Server zu wechseln.

Wir haben also angefangen parallel, auf dem Server selbst, vorzubereiten. Heute Vormittag erreichte uns wieder schöner Traffic, zuviel für den kleinen Apachen. Ein Serverneustart sollte helfen, aber da haben wir wohl zu viel im Hintergrund schon verändert und wahrscheinlich auch verpfuscht gehabt, als dass er sich noch zum erfolgreichen Starten hätte bemühen lassen.

Hier also das Ende vom Lied: Den ganzen Tag lang, neben der Arbeit (gerade der @Jukkales), Daten von der alten Installation heruntergesichert, den Server einmal vollständig platt gemacht und Ubuntu blank installiert. Zur erfolgreichen Einrichtung von nginx, php, mysql, apc, memcache und was auch alles dabei war, vor allem in erfolgreicher Kombination mit WordPress, gibt es wohl bald einen Artikel.

Fazit: Aktuell rennt die Seite wunderbar, die Serverressourcen könnten wir vierteln und hätten immernoch viel Luft nach oben, das sollte uns gut in die Zukunft bringen und euch mit kurzen Ladezeiten und einer schnell antwortenden Seite belohnen.

Was ist neu bei Nodch.de – Vorstellung der Funktionen

Nodch.de ist wieder online und bringt einige Änderungen mit sich. Was sich alles verändert hat und was wir damit erreichen wollen werde ich kurz erläutern.

Dem bald anstehenden 7. Geburtstag widmen wir ein neues Design, auch wenn das Alte ebenfalls zu gefallen wusste, haben wir in Zukunft noch ein paar Dinge mehr vor, die das alte Design nicht zulässt.

Es sollte übersichtlicher, schlichter und funktionsreicher werden. Das fängt beim neuen Header an:

Nodch.de neuer Header und neues LogoAuffällig sicher zuerst das neue Logo, begleitet von den wichtigsten Social Media Buttons und der bloginternen Suche. Das Menü wurde auf die wichtigsten Kategorien reduziert und sollte die Navigation übersichtlicher gestalten.

Direkt unter dem Header gibt es den Slider, der einige Artikel besonders hervorheben soll:

Nodch.de Featured SliderAlle Artikel werden nun mit einer Dreierkombination beendet – direkten Buttons um die Beiträge zu teilen, eine Autorenbox, die den zuständigen Schreiberling vorstellt (gerade bei Gastartikeln eine Funktion, die schon lange fehlte) und Artikeln, die dem gelesenen Beitrag potenziell ähnlich sind und sicherlich einen Blick wert wären:

Nodch.de Share und AutorenBesonders erwähnenswert ist die Android Market Verknüpfung. Alle Artikel, die sich um Android Apps drehen, bekommen in der Sidebar eine direkt Verknüpfung zum Android Market, hier kann man schon die wichtigsten Informationen zu den Apps ersehen, ohne den Market am Smartphone oder im Browser ansurfen zu müssen. Möchte man die vorgestellte App installieren, kann man entweder mit der Maus über den QR-Code fahren und diesen, nun vergrössert, mit dem Smartphone einscannen, oder man klickt und landet im Webmarket:

Nodch.de Android Market VerknüpfungIch hoffe die Änderungen gefallen euch und die neue Seite kommt gut an, denn es steckt viel Arbeit drin. Ein besonderer Dank geht in diesem Zusammenhang an @IrealiTY für das schlichte neue Design und an @Jukkales, der die Marketverknüpfung und viele Spielereien mehr programmiert hat.

Ihr dürft gespannt sein, wir planen noch viel mehr, wollten euch aber das bisher Erreichte nicht länger vorenthalten.

Nun aber ran, lasst uns wissen was ihr von den Neuerungen haltet und lasst euch in den Kommentaren aus!

Flatrate Schmeicheleien auf nodch.de

Flattr Social Micropayment
Flattr Social Micropayment

Flattr, gemischt aus „Flatrate“ und „to flatter“, wie das gleichnamige Unternehmen aus Schweden mitteilt, ist ein Social Micropayment Anbieter für die veröffentlichende Zunft, Blogger im Speziellen.

Der Sinn hinter Flattr ist schnell erklärt: Man lädt sein Konto mit Guthaben auf, bestimmt einen monatlichen Betrag (ab 2 Euro/Monat) den man verteilen möchte und tut dies dann.

Ab sofort kann man, nach Aufladung des eigenen Kontos, teile seiner gewählten monatlichen Summe an andere Flattr Teilnehmer verteilen. Im Einführungsvideo wird das anschaulich anhand eines Kuchens erklärt, definiert man beispielsweise monatlich einen Betrag von 10 Euro, der verteilt werden soll und man klickt zwei Beiträge an, dann bekommen die Inhaber dieser jeweiligen Flattr-Konten jeweils 5 Euro, klickt man 20 Beiträge an, sind es immerhin noch 50 Cent für jeden und so weiter. Maximal vergibt man seinen monatlichen Zahlbetrag, egal wie häufig man auf Flattr Buttons drückt, lediglich die Auszahlung an den Einzelnen Empfänger wird geringer, mit zunehmender Anzahl von Buttonklicks.

Die Idee dahinter ist nicht neu, aber immer wieder unterstützenswert, zu verlieren hat man dabei nichts, kann man doch andere Blogger ein bisschen motivieren, indem man ihnen vom Kuchen ein Stück zukommen lässt, eventuell fällt für einen selbst sogar etwas ab.

So sind nun ab sofort auch auf nodch.de die Beiträge mit der Möglichkeiten der dezenten Schmeichelei versehen (siehe Screenshot), die Startseite, Archive, Übersichten und so weiter bleiben Flattr-frei, lediglich die vollständige Artikelanzeige bekommt den Button eingeblendet, ausserdem ist er in Java fähigen RSS Readern zu sehen.

Flattr Button auf nodch.de
Flattr Button auf nodch.de

Noch befindet sich Flattr in einer geschlossenen Betaphase, jedoch kann man sich auf der Webseite anmelden und erhält recht schnell eine Einladung, bzw. man ruft hier mal in die Runde, eventuell fällt noch die ein oder andere ab.

Wie steht ihr zum Sinn hinter Flattr, seht ihr eine Chance für den Dienst, oder ist es ein besser getarnter Spenden-Button? Lass es uns wissen!

WordPress App für Android bekommt Video Upload Funktion

Wordpress Android App Media Upload
Wordpress Android App Media Upload

Die offizielle WordPress App für Android steht ab sofort in Version 1.2 zur Verfügung und bringt im Update zwei neue Funktionen mit sich.

Somit wächst der erst vor kurzem von Automattic übernommene Android Client im Funktionsumfang und erfreut sich einer regen Entwicklung.

Zum einen erhält die App die Unterstützung von Gelokationsdaten, die dem Blogeintrag hinzugefügt werden können. Hierzu muss zunächst ein Plugin installiert: Geolocation Plugin für WordPress, sowie die Funktion in den Blog-Settings im Android Client aktiviert werden. Ist dies geschehen, können Beiträge mit Geodaten versehen und veröffentlicht werden.

Darüber hinaus wurde die Funktion Videos ins WordPress Blog hochzuladen in die App integriert. Videos können von der Speicherkarte aus zum Blog übertragen, bzw. direkt in der Artikelerstellung aufgenommen und dann hinzugefügt werden.

Das Videoupload funktioniert sowohl bei selbst gehosteten WordPress Blogs, als auch WordPress.com Blogs, im WordPress Blogeintrag wird, im Falle von WordPress.com Blogs, das Zusammenspiel mit VideoPress lobend erwähnt.