Laravel mit CMS: neue Website

Nach nun fast 4 Jahren habe ich meine neue Website mit Laravel 5.6 released. Das ist damit die 5. Überarbeitung innerhalb der letzten 10 Jahren. Die vorherige Version lief mit Laravel 5.0 mit wenig dynamischen Inhalten. Nun kommt WordPress und CoasterCMS zum Einsatz.
Nachdem ich im vergangenen Jahr (2017) nur sehr wenig Zeit zum überarbeiten meiner Website hatte, musste ich das Release auf dieses Jahr verschieben.

Die zum Einsatz kommenden Technologien haben sich immer wieder geändert. So habe ich mir vor einer Weile das Laravel Content Management System OctoberCMS angesehen und versucht meine Seiten damit zu erstellen. So umfangreich es auch ist, z.B. die riesige Menge an Extensions/Plug-Ins, so gab es doch einige Punkte die mich damals gestört hatten.

OctoberCMS

Das CMS setzt zwar auf Laravel doch als Template Engine wurde Twig gewählt, welches man unter anderem in Projekten mit dem Symfony Framework häufig findet (der Creator von Symfony und Twig ist Fabien Potencier). Bei der Entwicklung von October war Twig vermutlich noch etwas mächtiger und verbreiteter als die Blade Template Engine von Laravel. Doch Blade als Template Engine in Laravel ist vor allem in seiner eigenen Welt richtig stark.

Da man mit Laravel Mix und Vue.js mittlerweile auch eine mächtige Lösung für das Client-seitige Rendering hat, gibt es nach meiner Meinung nur noch wenige Vorteile gegenüber Blade. Vor allem da neben Laravel auch Vue.js immer mehr Entwickler für sich gewinnt. Im State of JavaScript Frameworks 2017 von npm kann man erkennen, dass Vue.js ganz vorne mit dabei ist. Es wird sogar diskutiert, ob Vue.js nicht stärker und beliebter zu sehen ist als Angular und somit der direkte Konkurrent zu Facebooks React.js ist.

state of js frameworks 2017
Quelle: https://entwickler.de/online/javascript/der-state-javascript-frameworks-2017-express-gewinnt-im-backend-579826589.html

Ein anderes Problem was ich bei dem Versuch OctoberCMS einzusetzen hatte war, das teilweise direkt in Dateien geschrieben werden kann. Das finde ich vor allem aus redaktioneller Sicht nicht gut gelöst. Da hat man mit der Versionierung auch kaum noch Möglichkeiten das richtig abzusichern. Beides zusammen hat mich davon abgehalten hier weitere Zeit zu investieren.

OctoberCMS mag eine relativ gute Alternative für WordPress sein, gerade für kleinere Agenturen um ihr Know-how in Laravel in einem CMS zu verkaufen. Doch für meine Zwecke genügt es nicht den Anforderungen.

CoasterCMS und WordPress

Im vergangenen Jahr habe ich mich darum sehr viel mit dem CoasterCMS auseinander gesetzt. Dabei sind auch schon ein paar Websites und Plug-Ins entstanden. Coaster bietet alles was ein Laravel Entwickler benötigt um ein CMS zu erstellen. Ein großer Vorteil von Coaster ist, dass es sich in jede Laravel Installation bereitstellen lässt. Es wird nämlich als Package geladen und man benötigt keine komplett neue Umgebung.

Auch für meine Seite habe ich angefangen Coaster einzusetzen und die entsprechenden Erweiterung zu entwickeln. Doch aktuell bleibt noch immer wenig Zeit für die Weiterentwicklung meiner Seite. Darum habe ich nun auf Basis der Coaster Installation eine Zwischenlösung gebastelt. Dabei werden mit dem Laravel Package Corcel die Daten aus der WordPress Datenbank recht einfach mit Laravel ausgelesen. Ich verwende für meine neue Seite zur Zeit also meine bestehenden WordPress Daten. Sowie die für Coaster bereits erstellten Templates. Nach und nach werde ich so alles auf Coaster umstellen.

Ich bin froh, so endlich nach mehreren Jahren meine neue Website zu präsentieren. Außerdem haben ich nun eine moderne Umgebung, mit der es wieder Spaß macht weiter Features zu implementieren. Was ich zeitnah noch bereitstellen möchte ist ein Newsletter, der neben dem UX9-Newsletter regelmäßig erscheinen soll. Auch werde ich Themen präsentieren, über die ich aktuell nur in meinem Blog berichte (Beispiel SSL-Zertifikate).

Technisch noch ein paar Details: Die Seite läuft nun mit PHP 7.2, MySQL 5.7 und verwendet Laravel 5.6. Die CoasterCMS Erweiterung wurde von mir für Laravel 5.6 modifiziert. Hier warte ich noch auf ein Release von Coaster selbst, das Laravel 5.6 unterstützt. Die DNS Verwaltung mach ich über CloudFlare. Damit wird die Geschwindigkeit der Seite deutlich erhöht.

Hier geht’s zur neuen Seite: https://maxham.de/

SSL Zertifikate mit Let’s Encrypt

Seit dem Frühjahr 2016 ist Let’s Encrypt aus der Beta Version raus. Viele Sponsoren haben ihre Verträge verlängert und durch eine einfache Implementierung findet es auch immer größer Verwendung.

Das Unternehmen hat sich zum Ziel gesetzt, das Web auf HTTPS umzustellen. Ungeschützte Seiten sollen dann Geschichte sein. Um das zu erreichen haben Sie bereits einen Meilenstein erreicht. Sie sind bereits eines der größten CA auf dem Markt. Zusammen mit den prominenten Sponsoren wie Google Chrome, Mozilla oder Ciso gilt Let’s Encrypt auch weiterhin als sehr vertrauenswürdig. Darum spricht hier auch nichts gegen den Produktiven Einsatz.

Let’s Encrypt. Kostenlos!

Was ich in den letzten Monaten auch beobachten konnte: Viele Hosting-Anbieter bieten zusätzlich zu den Standard Paketen noch einen kostenlosen Service um die SSL-Zertifikate von Let’s Encrypt anzubinden. Wenn man das so sieht wird klar, dass damit die Anzahl an unverschlüsselten Verbindungen tatsächlich abnehmen wird.

Doch warum muss man für andere Zertifikate etwas bezahlen? Nun das hat primär mit zwei Dingen zu tun. Zum einen wird Let’s Encrypt von einigen großen Sponsoren unterstützt. Somit rechnet sich das dann zumindest wieder finanziell. Zum anderen hat es dann doch noch etwas mit der Sicherheit zu tun. Es gibt mittlerweile Zertifikate (z.B. im Bankenumfeld) die eine hohe Verschlüsselung garantieren. Das diese dann nicht günstig oder gar kostenlos sind ist eigentlich klar. Doch auch Let’s Encrypt bietet ein hohes Maß an Verschlüsselung. Der Trend geht auf jeden Fall in die Richtung, das kostenlose Zertifikate angeboten werden. So gibt es diese z.B auch bei CloudFlare und StartSSL.

Ausblick

Für 2018 hat Let’s Encrypt bereits die lang ersehnten Wildcard Zertifikate angekündigt. Somit kann man für alle Subdomains noch einfacher die Zertifikate erstellen.

Ich selbst nutze mittlerweile nur noch die Zertifikate von CloudFlare da ich meine Domains schon darüber konfiguriert habe. Doch wer diese Möglichkeit nicht hat, für den ist Let’s Encrypt wirklich zu empfehlen.

In einem weiteren Beitrag werde ich zeigen, wie einfach die Implementierung zusammen mit der automatischen Verlängerung ist. Dies werde ich an einem Beispiel demonstrieren.

Wieder eine Domain geschnappt

Da ist es passiert, wieder eine Domain mehr im Portfolio. In der aktuellen Ausgabe von „IT-Business“ (Juni 2017, ISSN 1864-0907) mit dem Großthema „IT-SECURITY“ geht es hauptsächlich um Sicherheiten, Gefahren und Lösungen in der IT bezogen auf Unternehmen.

Beim Lesen der Ausgabe wurde ich auf einer Seite dann auf eine Anzeige von G-DATA aufmerksam. Zu sehen war unter anderem ein Browser-Fenster mit einer Fehlermeldung. Bei der Meldung handelt es sich um eine Nginx 500 Meldung „Internal Server Error“. Interessant jedoch war die Domain die aufgerufen wurde. Wie ich es ziemlich oft mache, habe ich sofort versucht die Domain aufzurufen. Dabei musste ich feststellen, dass diese tatsächlich noch nicht registriert war.

Selbstverständlich habe ich mir die Domain hättemanvorherwissenkönnen.de dann sofort registriert. Um den Hintergrund der Registrierung beizubehalten, habe ich dann einen ähnlichen Content wie in der Ausgabe erstellt. Ein Backlink auf meine eigene Website darf dann auch nicht fehlen.

Sinn und Zweck?

Ich bezweifle ob es tatsächlich einen realistischen Nutzen hat. Nichts desto trotz habe ich so bereits Anfragen bekommen. Auch sind die Besuche auf meinen Seiten gestiegen.

Ähnliches habe ich auch schon mit den Domains fahlsegler.de und zwergdommel.de gemacht. Ich bin sicher es wird die ein oder andere Seite noch folgen.

 

Ping: Zeitüberschreitung der Anforderung und Zielhost nicht erreichbar

Haben wir vermutlich alle schon einmal ausgeführt. Ping. Doch was ist Ping? Ping ist das Netzwerk Troubleshooting Tool Nummer 1. Ping sendet ICMP Pakete an ein IP fähiges Gerät. Meist in der Hoffnung, dass dieses Gerät auch antwortet. Aber was bedeutet „Zeitüberschreitung der Anforderung“ und wie unterscheidet es sich mit „Zielhost nicht erreichbar“?

Ich pinge einen Rechner in meinem Netzwerksegment.

Ping Ok
Ping Ok

Der Rechner antwortet auf das 32 Bytes große Paket in 50-55 ms und der TTL Wert ist 62 (Anzahl der max. Hops). Alles Ok soweit, das Gerät ist erreichbar.

ZEITÜBERSCHREITUNG DER ANFORDERUNG

So, jetzt wird es interessant: Ein Computer mit der IP 192.168.1.4 ist offensichtlich im Netzwerk nicht erreichbar. Meine IP ist 192.168.1.54/24. Die zu testende IP ist 192.168.1.4/24. Das bedeutet, dass sich beide Geräte im gleichen Subnetz und in der gleichen Broadcast Domäne befinden.

Ping Zeitüberschreitung
Ping Zeitüberschreitung

Was kann man nun daraus schließen? Viele gehen jetzt davon aus, dass das Gerät nicht erreichbar ist, sprich „kaputt“, ausgeschalten oder nicht mehr im Netzwerk ist.

Zeitüberschreitung der Anforderung im lokalen Subnetz bedeutet, dass das Gerät keine ICMP Pakete in einer gewissen Zeitspanne sendet. Sonst nichts. Es kann mithilfe dieser Information auf nichts anderes geschlossen werden, als auf die Tatsache, dass das Gerät nicht auf einen Ping antwortet.

Ich erkenne mit arp -a, dass die MAC Adresse mithilfe ARP ermittelt wurde. Das heißt zwar nicht zwangsläufig, dass der Computer online ist (ARP Cache), aber ich habe vorher mit arp -d den ARP Cache geleert.

ARP
ARP

Meist lässt die Windows Firewall ICMP eingehend nicht zu, d.h. das Gerät ist funktionsfähig. Hier die Ansicht in wf.msc:

Firewall Einstellung
Firewall Einstellung

Beim Aktivieren der IPv4 Regeln antwortet das Gerät.

ZIELHOST NICHT ERREICHBAR

Ich bekomme als Antwort auf einen Ping an einen Computer im lokalen Subnetz die Information: Zielhost nicht erreichbar.

Ping Nicht erreichbar
Ping Nicht erreichbar

Was kann ich daraus schließen? Hier sieht die Sache anders aus. Meist ist der Computer nicht online und auch der ARP Cache zeigt keine MAC Adresse des Zielcomputers. Das bedeutet, dass auch der ARP Request fehlgeschlagen ist. Es kann in den meisten Fällen davon ausgegangen werden, dass der Computer tatsächlich offline ist.

Blog jetzt mit HTTPS/SSL-Zertifikat

Ab heute ist mein Blog unter https://blog.maxham.de/ erreichbar. Leider hat die Umstellung auf die verschlüsselte Datenübertragung nicht ganz reibungslos funktioniert. Zwischenzeitlich war der Blog mehrere Stunden nicht erreichbar. Doch das hat sich gelohnt. Denn jetzt ist die Webseite mit einem SSL-Zertifikat eingebunden.

Domainumzug

Mit dem Umzug auf einen anderen Server habe ich mich für die verschlüsselte Übertragung via HTTPS/TLS entschlossen. Da ich unter anderem DNS und Caching bereits über CloudFlare steuere, habe ich nun auch das SSL-Zertifikat von CLoudFlare eingebunden. Dies seht ihr je nach Browser z.B. an dem Schloss in der URL-Bar.

SSL-Zertifikat mit Chrome/Windows
Chrome/Windows
Warum ein SSL-Zertifikat?

Warum aber ein Blog via HTTPS? Naja das hat mehrere Gründe. Unteranderem wird der Schutz der Daten immer mehr gefordert. Nicht nur von den Verbrauchern. Per Gesetzt gilt z.B. bereits in verschiedenen Bereichen (wie Banken oder Onlineshops) eine Pflicht für SSL-Zertifikate. Dies weitet sich immer mehr aus und gilt teilweise auch schon für Kontaktformulare. Als Entwickler wollte ich das aber einfach auch mal an meiner eigenen Webseite probieren. Da ich jetzt auch die Probleme kenne, wir der Umzug meiner Hauptdomain wesentlich leichter fallen.

In einem späteren Beitrag werde ich noch von der Möglichkeit berichtet, wie man seine Webseiten mit dem Let’s Encrypt SSL-Zertifikat verschlüsseln kann. Denn dieser Anbieter hat es sich zum Ziel gesetzt, alle unverschlüsselten Seiten auf HTTPS umzustellen.