Nginx und Ghost in Unterverzeichnis

Vor Kurzem haben wir einen Blog von Wordpress auf Ghost umgestellt. Bis zu diesem Zeitpunkt war der Blog unter unter einer Subdomain zu erreichen. Durch die Umstellung erscheint der Blog nun als Unterverzeichnis zur Webseite. Das hat vor allem aus SEO Gründen einen großen Vorteil, aber darum soll es hier nicht gehen.

Damit Ghost innerhalb eines Unterverzeichnis funktioniert, muss folgende Nginx Regel erstellt werden:


location ^~ /blog {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Host $http_host;
    proxy_pass http://127.0.0.1:2371;
    proxy_redirect off;
}

Wichtig zu beachten sind hier vor allem die letzten beiden Zeilen. Da Ghost für uns neu war, sind wir hier anfangs auf folgende Probleme gestoßen:

Cannot get /blog wurde uns angezeigt als wir das Verzeichnis /blog aufgerufen haben. Das "Problem": Jede Ghost Installation läuft über einen eigenen Port. Um den Port der relevanten Installation zu bekommen, kann man mit dem Shell Befehl ghost ls einige Informationen bekommen, unter anderem die Port-Nummer.

Ein anderes Problem war die fehlerhafte, bzw. fehlende Darstellung der Javascript und CSS Dateien und keine Möglichkeit, in das Ghost Dashboard zu gelangen. Mit der Zeile proxy_redirect off; wurden diese Fehler behoben.

Laravel Tipp: Zugriff während Wartungsmodus auf IP beschränken

Mit Laravel kann man mit dem Befehl php artisan down sein Projekt in den Wartungsmodus versetzen. Während der Wartung ist die Webseite für die Benutzer nicht zugänglich. Um aber weiterhin Zugriff für bestimmte IP Adressen zu ermöglichen, kann man folgenden Shell Befehl verwenden:

php artisan down --allow=12.345.67.890

Laravel Tipp: Eloquent where mit Datum

In Laravel ist es unkompliziert möglich ein Eloquent Model mit where speziell auf einen Zeitpunkt einzuschränken. Verfügbare Methoden sind whereDay(), whereMonth(), whereYear(), whereDate() und whereTime().

Im Controller kann man diese Methoden folgendermaßen anwenden:


Tenant::whereDate('created_at', '2020-05-27')->get();
Tenant::whereMonth('created_at', '10')->get();
Tenant::whereDay('created_at', '20')->get();
Tenant::whereYear('created_at', date('Y'))->get();
Tenant::whereTime('created_at', '=', '18:30:46')->get();

Laravel Tipp: First und Last in Blade foreach

Mit Blade ist es sehr einfach das erste und/oder letzte Element in einer foreach-Schleife abzufangen. Dafür kann die $loop Variable verwendet werden.


@foreach ($products as $product)
    @if ($loop->first)
        Erstes Produkt
    @endif
    @if ($loop->last)
        Letztes Produkt
    @endif
    Produkt mit der ID {{ $product->id }}
@endforeach

Authentifizierung ab Laravel 6

Seit Version 6.x ist es nicht mehr möglich mit php artisan make:auth eine einfache Authentifizierung mit Laravel zu erstellen.

Generell war der Befehl immer sehr hilfreich, vor allem bei neuen Projekten um Ansichten und Funktionen für Login, Registrierung, Passwort vergessen, Passwort zurücksetzen und E-Mail Verifizierungen schnell hinzuzufügen.

Seit Laravel 6 gibt es diese Möglichkeit nur im Zusammenhang mit dem eigenständigen First-Party Package Laravel UI. Die Installation ist sehr einfach.

Via composer installieren

Den Befehl composer require laravel/ui im Terminal eingeben. Anschließend kann man sich alle möglichen Funktionen via php artisan ui --help ausgeben lassen.

Der ui:auth Befehl

Einer der neuen Befehle ist nun verantwortlich um das Gerüst für die Authentifizierung zu erstellen:

php artisan ui:auth

Dieser Befehl macht nun im Grunde genau das, was mit Laravel 5.x über den Aufruf php artisan make:auth möglich war.

Sie interessieren sich an einer Zusammenarbeit mit uns? Fantastisch! Lassen Sie uns einfach eine Nachricht zukommen und wir werden uns mit Ihnen in Verbindung setzen.

Kontaktieren Sie uns