Neuer Server neues Glück – Blog Umzug ist vollzogen

Nachdem es lange Zeit "sehr" still rund um meinen Blog war, möchte ich den gerade vollzogenen Umzug meines Blog auf einen neuen Server auch dazu nutzen wieder regelmäßig zu bloggen.

Mit dem Umzug auf den neuen Server habe ich auch gleich das Zertifikat Thema aktualisiert.

Ab sofort setze ich hier im Blog ein Zertifikat von Letsencrypt ein.

WordPress Blog auf Windows Server – Plugins und Themes Aktualisierungen schlagen fehl

Von Heute auf Morgen hat die Aktualisierung von Plugins und Themes auf meinem WordPress Blog, welcher auf einem Windows Server W2K8 betrieben wird, nicht mehr funktioniert.

Dieses Problem hatte ich nun schon weit über 1 Jahr und konnte keine echte Lösung dafür finden.

Ich hatte zwar eine Interimslösung ermittelt, aber die war wirklich nicht sehr komforrabel.

Als Interimslösung war mir folgendes eingefallen:
Nachdem die Aktualisierung eines Plugins fehlgeschlagen war, musste ich den IIS neu starten und konnte dann das Plugin neu installieren.

Ich sagte ja, nicht wirklich komfortabel

Letzte Woche war ich mit @Sascha unterwegs zu einer Community Veranstaltung in Köln.
Während der Fahrt erzählt er mir von genau dem gleichen Phänomen auf seinem Blog.
Ich sagte ihm, dass ich das gleiche Problem schon seit längerer Zeit auf meinem Blog habe und bisher keine Lösung dafür gefunden hätte.

Ein paar Tage später, während eines Telefonats erzählt mir Sascha das er eine Lösung für sein Problem gefunden hat.
Voller freudiger erwartung habe ich versucht die gleiche Lösung bei mir zu verwenden, musste jedoch feststellen dass bei meiner verwendeten Infrastruktur das Problem mit „seiner“ lösung nicht behoben werden konnte.

Aber …..
Es lag nahe, dass mein Problem im selben Bereich zu suchen war wie Saschas Problem, und es lediglich an den unterschiedlichen Plattformen und Versionen liegt dass nicht exakt die gleiche Lösug bei uns beiden funktioniert.

Hier geht es übrigens zur (Azure) Lösung von Sascha

Ich vermutetet also, dass mein Problem, wie bei Saschas Beitrag beschrieben, auch etwas mit dem Caching von PHP Seiten auf dem IIS zu tun haben könnnte.

Eine Suche in den Diensten meines Windows Server hat gezeigt, dass es tatsächlich einen extra Dienst, den „Window Cache Extension Service“ gibt, der genau für diese Aufgabe zuständig ist.

Ich habe dann einfach diesen Dienst deinstalliert und bingo – mein Problem war nun auch gelöst.

PHP Debugging für .NET Dummies (IIS – WordPress – PhpStorm – Xdebug)

Vor einigen Tagen stand ich vor der Aufgabe im Zuge eines kleinen Projektes eine Verbindung zwischen der .NET und der PHP Welt herstellen zu müssen.

Als .NET Entwickler bin ich es eigentlich gewohnt mit Visual Studio zu arbeiten. Auch wenn man nicht immer mit VS super zufrieden ist, kann man damit aber doch ganz ordentlich Entwickeln. daher war es mir  wichtig auch für diesen PHP Ausflug zuerst einmal eine “gescheite” Entwicklungsumgebung für dieses Projekt aufzubauen.

Da ich neben ReSharper (Visual Studio Plugin) bereits WebStorm (beides Erstklassige Produkte von JetBrains) einsetze war für mich sehr schnell klar, dass als PHP IDE PhpStorm vom gleichen Hersteller zum Einsatz kommen soll.

Unter einer “gescheiten” Entwicklungsumgebung verstehe ich ab er als minimale Anforderung:

  • Einen guten Editor (IDE) (Am besten Syntax highlighting)
  • Einen ordentlichen Debugger (Am besten in der IDE integriert)

Mit PhpStorm habe ich die “gute”  IDE bereits ausgewählt.

Das Problem des integrierten Debugger kann ich aber weder mir PhpStorm noch mit einer anderen mir bekannten Entwicklungsumgebung für PHP direkt und einfach lösen.

Um PHP zu debuggen gibt es eine Extension mit der Bezeichnung “Xdebug”,  die direkt zusammen mit PHP arbeitet und in der PHP.INI konfiguriert werden muss.

Und genau diese Konfiguration und Einrichtung ist mir als .NET Entwickler irgendwie nicht wirklich einfach von der Hand gegangen.

Die Konfiguration von Xdebug in PHP war noch recht einfach und auch ganz ordentlich dokumentiert. Wie man jedoch aus der IDE (PhpStorm) Breakpoints setzen und den Debugger nutzen kann, dass blieb zuerst ein Buch mit vielen Siegeln.

Über die Konfiguration von PHP und Xdebug auf einem IIS unter Verwendung von PhpStorm, gab es eigentlich keine oder nur unvollständige Anleitungen (oder ich habe sie einfach nicht gefunden).

Nun aber genug der Vorreden, ab hier geht es nun um die Beschreibung (Schritt für Schritt Anleitung) wie man auf einem Windows Rechner eine komplette Entwicklungsumgebung für PHP einrichten kann, mit der sogar ein .NET Entwickler etwas anfangen kann 🙂 .

Systemumgebung, Programme, Voraussetzungen:

  • Windows 2008 R2 Server (Windows 7 mit installiertem IIS würde auch funktionieren)
  • WordPress (Oder jede andere PHP Anwendung wie z.B. Joomla)
  • imagePhpStorm 3.X
  • Xdebug (Debugger Tool für PHP)

Installation / Überprüfung IIS

Benötigt wird ein IIS 7 oder 7.5 (kein IIS Express).

Unter dem W2K8 geht das einfach indem man die Serverrolle Webserver (IIS) auswählt und installiert.

image

Es werden keine speziellen Rollendienste benötigt, also einfach nur auf Weiter und Installieren klicken bis die Installation abgeschlossen ist.

image

WordPress (und alle benötigten Komponenten installieren)

Der einfachste Weg um ein Produkt wie WordPress auf einem Windows Rechner zu installieren ist sicherlich die Verwendung des Web Plattform Installer (Der übrigens auch in WebMatrix integriert ist).

Der Web Plattform Installer stellt selbst fest welche Komponenten auf dem Rechner vorhanden sind und welche installiert werden müssen um das ausgewählte Produkt verwenden zu können.

Hier kann man dem Web Plattform Installer herunterladen

Also Web Plattform Installer herunterladen und aufrufen (installieren).

Nach der Initialisierung geben wir im Suchfeld “WordPress” ein und bestätigen die Eingabe mit der Enter Taste.

Nun wählen wir WordPress in der gewünschten Sprache aus und betätigen den Button hinzufügen.

image

Wenn man nun auf Installieren klickt werden die folgenden Tools und Produkte installiert.

image

Während der Installation müssen wir noch folgende Angaben machen:

image

Da ich eine Entwicklungsumgebung aufbauen möchte, werde ich MySQL auf dem lokalen Rechner installieren lassen. (Weiter klicken)

Nun bekommt man noch mal alle zu installierenden Produkte angezeigt und wird aufgefordert den Lizenzbedingungen zuzustimmen.

image

Jetzt muss noch ein root Passwort für die MySQL Installation angeben werden:

Beim Weiter Klicken, geht die Installation schon los.

Die Installation kann je nach Internet Geschwindigkeit unterschiedlich lange dauern, da während der Installation die aktuellen Pakete heruntergeladen und installiert werden.

Bei DSL 16000 und einem Rechner mit I7 Prozessor dauert die Gesamte Installation 3 – 5 Minuten.

Nächster Stop Webseite für WP konfigurieren:

image

Da ich WordPress nur in der Entwicklungsumgebung aufrufen und nicht von extern zugänglich machen möchte, lasse ich die Einstellungen wie vorgegeben. Das führt nach der Installation dazu, dass die Seite unter localhost/wordpress erreichbar sein wird.

Noch ein Stop Datenbank erstellen

image

Datenbank auswählen / erstellen und Root Passwort

image

Da wir MySQL gerade erst installiert haben, müssen wir natürlich eine Neue Datenbank erstellen.

Im Eingabefeld (roter Pfeil(, müssen wir das Root Passwort eingeben, dass wir während der Installation von MySQL vergeben haben.

Datenbankbenutzer / Passwort eingeben

image

Die Einträge mit den grünen Pfeilen müssen wir nicht anpassen.

In den Feldern mit den roten Pfeilen muss nun noch ein Kennwort für den Datenbank Benutzer eingegeben werden. Das muss nicht, kann aber das gleiche wie das Root Passwort sein (aber bitte nur auf lokalen Entwicklungssystemen, sonst sollten die Datenbank Passwort nicht dem Root Passwort entsprechen)

In allen weiteren Felder müssen keine Eingaben gemacht werden.

image

image

Damit sind nun WordPress und alle benötigten Tools und Programme installiert.

WordPress sollte nun schon funktionieren, also testen wir es mal.

Browser öffnen und localhost/wordpress eingeben.

image

Am besten geben wir gleich die notwendigen Daten für WP ein, so dass wir später direkt auf die Homepage von WordPress und nicht mehr auf die Admin Setup Seite geleitetet werden.

Beim nächsten Aufruf sollte das so aussehen:

image

Xdebug installieren

Nun müssen wir die Xdebug Extension installieren.

Wie wir weiter oben sehen wurde PHP in der Version 5.2 installiert, also müssen wir nun auch die Xdebug Version für PHP 5.2 herunterladen und installieren.

Aber Achtung es gibt 2 verschiedene Varianten:

Eine Thread sichere und eine Nicht Thread Sichere (nts), für die Installtion auf dem IIS muss die nts Variante verwendet werden.

Hier geht es direkt zum Download xdebug version 2.1.2 für PHP 5.2 Not Thread Safe

Die Extension besteht lediglich aus einer DLL Datei mit dem Namen:

php_xdebug-2.1.2-5.2-vc6-nts.dll

Nachdem man die Datei heruntergeladen hat muss diese in das Ext Verzeichnis von PHP kopiert werden.

Bei einer Standardinstallation auf einem W2K8 Server (64 BIT) findet man das Ext Verzeichnis unter folgendem Pfad:

C:\Program Files (x86)\PHP\v5.2\ext

Als nächstes muss die PHP.INI angepasst werden um die Debugger Extension verwenden zu können

Die PHP.INI befindet sich im Verzeichnis:

C:\Program Files (x86)\PHP\v5.2

Also öffnen wir die PHP.INI mit einem Texteditor und fügen folgende Einträge hinzu:

[xdebug]
zend_extension = "C:\Program Files (x86)\PHP\v5.2\ext\php_xdebug-2.1.2-5.2-vc6-nts.dll"
xdebug.remote_enable = On
xdebug.remote_host = "localhost"
xdebug.remote_port = 9000
xdebug.remote_handler = "dbgp"

Eigentlich ist es gleich an welcher Stelle diese Einträge hinzugefügt werden, aber wer sich gerne strikt an Vorgaben hält, kann die Einträge direkt unter dem folgenden Eintrag einfügen, dann funktioniert es auf jeden Fall.

image

Nun speichern wird die PHP.INI und müssen noch den IIS Neu starten:

Entweder über die Konsole “Internetinformationsdienste (IIS)-Manager

oder über die Kommandozeile:

net stop WAS (zum stoppen des IIS)

und dann

net start W3SVC (um den IIS wieder zu starten.)

Später (nachdem wir PhpStorm installiert haben und damit auch einen brauchbaren Editor  zur Verfügung haben)  prüfen wir auch noch ob die Extension richtig eingerichtet wurde.

PhpStorm installieren

PhpStorm gibt es in einer 30 Tage Trial Version, wer also keine Lizenz besitzt kann sich  erst einmal 30 Tage lang anschauen ob im PhpStorm das Geld, was es kostet, wert ist (Ich denke dass ist es auf jeden Fall, ein tolles Produkt wie eigentlich alle Produkte von JetBrains. Nein ich bekomme keine Prozente 🙂 )

Den Download gibt es hier: http://www.jetbrains.com/phpstorm/download/

Nachdem herunterladen installieren wir PhpStorm einfach mit allen Standardeinstellungen.

WordPress Projekt in PhpStorm einrichten

Nun öffnen wir PhpStorm und wählen die nachfolgende Option aus:

Create New Project from Existing Files

image

Das Szenario: Lokaler Web Server und Source Code unterhalb des Web Root passt genau für unser vorhaben.

image

Nun wählen wir das Root Verzeichnis (Nicht das WordPress Verzeichnis auswählen) des Default WEB unseres localhost aus.

image

Jetzt geben wir dem Projekt Server noch einen Namen (z.B. MyLocalServer)

image

In nächsten Schritt (Siehe Abbildung oben) geben wir nun die Projekt URL unserer WordPress Installation an.

Und haben damit das Projekt eingerichtet (Wie man auch in der folgenden Abbildung sehen kann).

Xdebug überprüfen

Wir öffnen die Datei index.php aus dem Root Verzeichnis unserer WordPress Installation im PhpStorm Editor.

Dort fügen wir die Funktion phpInfo() direkt nach dem Kommentar ein und speichern die Datei ab.

image

Nun öffnen wir den Browser und geben localhost/wordpress ein. Wenn anstelle der normalen WordPress Startseite diese PHP Info Seite angezeigt wird, haben wir bis hierhin schon mal alles richtig gemacht.

image

Um die Prüfung von Xdebug durchführen zu können, benötigen wir den Source Code der im Browse dargestellten phpinfo Seite.

Dazu lassen wir uns den Quelltext der Seite anzeigen, markieren den gesammten Quelltext, kopieren diesen in die Zwischenablage, und öffnen anschließend folgende Webseite:

http://xdebug.org/find-binary.php

image

Dort wo der rote Pfeil hinzeigt fügen wir dann den in der Zwischenablage befindlichen Quelltext ein und betätigen anschließend den “Analyse my phpinfo() output” Button.

Wenn Xdebug richtig installiert ist, sollte das Ergebnis wie folgt aussehen:

image

Wenn Xdebug nicht richtig installier ist, sollte man überprüfen, ob die Pfadangabe und der Dateiname der Xebug DLL in der PHP.INI richtig angegeben sind.

PhpStorm für das Debugging konfigurieren

image

Wir öffnen den Dialog “Edit Configurations”

image

Nun fügen wir eine neue Konfiguration hinzu:

image

Eine PHP Web Application Konfiguration

image

Im Feld unnamed geben wir unserer Konfiguration einen Namen. Zum Beispiel IIS.

Dann müssen wir einen Server auswählen (da wir aber noch keinen Konfiguriert haben, müssen wir zuerst einmal einen neu anlegen).

Hier Dialog zum einrichten eines neuen Server öffnen:

image

Dann im Dialog auf das + um einen neuen Server anzulegen:

image

Hier der bereits ausgefüllte Dialog:

image

Eingabe bestätigen und anschließend folgende Eingaben noch ergänzen, siehe Beschreibung unterhalb der Abbildung.

image

Der Konfiguration einen Namen geben (z.B. LocalIISWordPress)

Und die StartUrl um WordPress ergänzen, so dass der korrekte Link (http://localhost/wordpress) unter der Start URL angezeigt wird.

Das sollte dann so aussehen:

image

Dann bestätigen wir auch diesen Dialog

Und wenn wir nun auf den RUN Button drücken ….

image

Sollte sich der Default Browser mit der WordPress Seite automatisch öffnen.

Eigentlich sollte das setzen von Breakpoint nun auch schon funktionieren, probieren wir das doch mal indem wir einen Breakpoint auf die Zeile phpinfo() setzen die wir in der index.php eingefügt haben.

image

Einen Breakpoint kann man übrigens ganz einfach dadurch setzen, indem man mit der Maus an die Stelle klickt auf die der Rote Pfeil zeigt.

Und wenn wir nun anstelle des RUN Button, den DEBUG Button drücken …..

image

Richtig, der Programmablauf bleibt am Breakpoint stehen und wartet darauf das wir den Programmablauf fortsetzen.

So und nun viel Spaß beim PHP Debugging.

WordPress – geplante Artikel werden nicht veröffentlicht

Dieses Thema scheint eines der ewigen Themen in WordPress zu sein.

Egal ob mit Bing gegoogelt oder mit Google gebingt, es werden für fast alle WP Versionen Artikel gefunden die über das Problem berichten, dass geplante Artikel nicht veröffentlicht werden und man auch nicht einfach diese geplanten Artikel nachträglich manuell veröffentlichen kann.

Ich hatte dieses Problem aktuell mit der WordPress Version 3.1.2.

Schnelle Abhilfe hat mir hier aber ein Plugin mit dem Namen WP Missed Schedule gebracht.

Einfach das Plugin über WP installieren und fertig.

Das Plugin kümmert sich dann darum, das nicht korrekt veröffentlichte Artikel doch veröffentlicht werden.

Besten Dank für das tolle Plugin

WebMatrix ist Heute Web Matrix war Gestern

Mitte letzten Jahres wurden die ersten Meldungen über das neue Tool „WebMatrix“ von Microsoft zur einfachen Entwicklung von Web Anwendungen veröffentlicht. Nun ist es endlich soweit und das neue WebMatrix steht seit einigen Tagen (13.01.2011) in seiner Version 1.0 zum kostenlosen Download zur Verfügung.

Ich habe hier extra vom „neuen WebMatrix“ gesprochen, denn 2003 gab es bereits einmal ein Produkt mit einem ähnlichen Namen „Web Matrix“. Damals noch in zwei Worten geschrieben, aber auch mit dem Anspruch „das neue Tool“ zur einfachen Entwicklung von ASP.NET Anwendungen zu sein. Wen es interessiert kann hier Informationen über das „alte Web Matrix“ nachlesen.

Doch wollen wir uns nicht lange an dem alten Produkt aufhalten, denn es hat nicht wirklich viel mit dem neuen WebMatrix gemein.

WebMatrix ist ein recht mächtiges Tool mit vielen Optionen und innovativen Funktionalitäten.

Hier die WebMatrix Highlights:

  • Kostenloses Entwicklungstool
  • Entwicklung in ASP.NET, Razor und PHP
  • Unterstützt HTML 5
  • Integrierter Web Server IIS Express
  • Integrierte Datenbank SQL Server Compact
  • Beinhaltet Installation und Konfiguration von PHP und MySQL für Windows
  • Beinhaltet Veröffentlichungsmethoden über FTP und Web
  • Erlaubt die Veröffentlichung sowohl an LAMP basierte als auch an Windows basierte Server
  • Beinhaltet SEO Optimierung Tools

Zusätzlich enthält WebMatrix auch noch eine Web Galerie über die ein Reihe von freien Webanwendungen wie DotNetNuke, BlogEngine.NET, Joomla, Drupal, WordPress und viele andere integriert werden können.

WebMatrix richtet sich zwar nicht ausschließlich, aber doch vornehmlich mehr an Anfänger in der Web Entwicklung als an die Hardcore Entwickler. WebMatrix könnte aber auch für Profis interessant sein, da man mit WebMatrix sehr schnell ein Grundgerüst einer Web Anwendung erstellen kann und bei Bedarf die Web Matrix Projekte in Visual Studio importieren kann.

Und wer sich WebMatrix gerne mal näher anschauen und erste Erfahrungen sammeln möchte sollte sich, solange noch Plätze frei sind, zu einem der kostenfreien Workshops in Bad Homburg oder München anmelden.

23.03.2011 in Bad Homburg

31.03.2011 in München

Vielleicht sieht man sich ja in Bad Homburg !

MySQL WordPress Datenbank Engine von InnoDB auf MyIsam ändern

Über das Thema welcher Tabellentyp (InnoDB oder MyIsam) für MySQL die bessere, schnellere oder robustere ist gibt es Unmengen an Diskussionen im Internet und ich möchte an dieser Stelle nicht damit weitermachen.
Vor allem nicht, da ich mich mehr im Umfeld von MS SQL Server bewege und MySQL nur hier und da verwende.

Im Zuge meiner Blogumstellung von dasBlog auf WordPress bin ich aber auf das Problem gestoßen, dass die von mir erstellte MySQL Datenbank für WordPress als Standard den Tabellentyp InnoDB verwendet hat, was für mich zuerst auch kein Problem dargestellt hat, sich aber im Laufe der weiteren Einrichtung von WordPress für mich doch als falsch herausgestellt hat. Eines der Plugins, welches Volltextsuche verwendet, setzt voraus dass die table_wp_posts als Tabellenformat das MyIsam Format verwendet.

Da ich in einer Datenbank nicht verschiedene Tabellenformate verwenden wollte, musste ich das Tabellenformat aller Tabellen ändern. Das hätte ich entweder für jede Tabelle manuell über phpMyAdmin machen können (was aber selbst bei nur 15 Tabellen) doch einige Zeit in Anspruch nimmt und vor allem wollte ich für spätere Tests eine schnelle Möglichkeit haben, den Tabellentyp sehr schnell von einem Format zu einem anderen zu ändern.

Das Resultat ist dieses nun folgende SQL Script was einfach über den phpMyAdmin ausgeführt werden kann.

alter table wp_blc_filters ENGINE=myisam;
alter table wp_blc_instances ENGINE=myisam;
alter table wp_blc_links ENGINE=myisam;
alter table wp_blc_synch ENGINE=myisam;
alter table wp_commentmeta ENGINE=myisam;
alter table wp_comments ENGINE=myisam;
alter table wp_links ENGINE=myisam;
alter table wp_options ENGINE=myisam;
alter table wp_postmeta ENGINE=myisam;
alter table wp_posts ENGINE=myisam;
alter table wp_terms ENGINE=myisam;
alter table wp_term_relationships ENGINE=myisam;
alter table wp_term_taxonomy ENGINE=myisam;
alter table wp_usermeta ENGINE=myisam;
alter table wp_users ENGINE=myisam;

Und wenn man die Engine von MyIsam nach InnoDB ändern möchte geht das natürlich auch.

alter table wp_blc_filters ENGINE=innodb;
alter table wp_blc_instances ENGINE=innodb;
alter table wp_blc_links ENGINE=innodb;
alter table wp_blc_synch ENGINE=innodb;
alter table wp_commentmeta ENGINE=innodb;
alter table wp_comments ENGINE=innodb;
alter table wp_links ENGINE=innodb;
alter table wp_options ENGINE=innodb;
alter table wp_postmeta ENGINE=innodb;
alter table wp_posts ENGINE=innodb;
alter table wp_terms ENGINE=innodb;
alter table wp_term_relationships ENGINE=innodb;
alter table wp_term_taxonomy ENGINE=innodb;
alter table wp_usermeta ENGINE=innodb;
alter table wp_users ENGINE=innodb;

Ein kleiner Schritt für die Menschheit – ein großer Schritt für mich !

Nach langer Evaluierungsphase und vielen Versuchen mit den verschiedenen Blog Software Lösungen hat WordPress nun auch bei mir meinen bisher betriebenen dasBlog Weblog abgelöst.

Heute bin ich mit der technischen Umsetzung

  • Installation von WordPress auf einem W2K8 Server (IIS7)
  • Konfiguration von WordPress
  • Export Aufbereitung und Import der vorhandenen Blog Beiträge aus dasBlog
  • Einrichtung eines URL Weiterleitung (Vorhandene URLs auf neue URLs Weiterleitung – Permanente Weiterleitung 301)
  • Einrichtung Datensicherung für WordPress Verzeichnis und MySql Datenbank

fertig geworden.

Auch wenn ich über Monate nach einer .NET Blog Lösung gesucht habe, musste ich einsehen, dass keine der Lösungen an WordPress heranreicht.

Und mit der nativen PHP Unterstützung von IIS auf einem W2K8 Server war auch die Installation von WordPress auf dem Windows Server keine große Sache.

Goodbuy dasBlog

Welcome WordPress