Categories
Tutorial

PHP 7.4 auf Debian installieren – So gehts

Dies ist ein Side-Tutorial einer größeren Tutorialreihe – Das Webdesigner Tutorial – Alles was du wissen musst. Folgen Sie den unten beschriebenen Schritten, um PHP 7.4 auf der Linux-Distribution Debian 10 & Debian 9 zu installieren. Die neuesten Versionen von PHP für Debian sind im SURY PHP PPA-Repository verfügbar. Wir fügen das Repository als Voraussetzung hinzu und installieren dann PHP 7.4 auf Debian 10 / Debian 9 von dort aus.

PHP Logo bei PHP 7.4 auf Debian installieren
CC BY-SA 4.0 Levi Morrison

Schritt 1: Als root das System aktualisieren

Wir führen alle Befehle als ROOT aus, oder gegebenen falls,mit dem vorangestllten befehl sudo

$ su root
apt update
apt upgrade -y && reboot

Schritt 2: Die SURY PHP PPA repository hinzufügen

Als erstes laden wir die GPG-Keyfile herunter:

apt -y install lsb-release apt-transport-https ca-certificates
wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg

Dann installieren wir den GPG-Schlüssel:

echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php.list

Schritt 3: PHP 7.4 auf Debian installieren

Noch einmal Updaten:

apt update

Jetzt ist PHP 7.4 bereit um auf dem Server/ Desktop installeirt zu werden.

apt -y install php7.4

Die ausgabe sieht etwa so aus:

Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  apache2 apache2-bin apache2-data apache2-utils libapache2-mod-php7.4 libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap libbrotli1
  libcurl4 libgdbm-compat4 libgdbm6 libjansson4 libldap-2.4-2 libldap-common liblua5.2-0 libnghttp2-14 libpcre2-8-0 libperl5.28 librtmp1
  libsasl2-2 libsasl2-modules libsasl2-modules-db libsodium23 libssh2-1 perl perl-modules-5.28 php-common php7.4-cli php7.4-common php7.4-json
  php7.4-opcache php7.4-readline psmisc ssl-cert
Suggested packages:
  apache2-doc apache2-suexec-pristine | apache2-suexec-custom www-browser php-pear libsasl2-modules-gssapi-mit | libsasl2-modules-gssapi-heimdal
  libsasl2-modules-ldap libsasl2-modules-otp libsasl2-modules-sql perl-doc libterm-readline-gnu-perl | libterm-readline-perl-perl make
  libb-debug-perl liblocale-codes-perl openssl-blacklist
The following NEW packages will be installed:
  apache2 apache2-bin apache2-data apache2-utils libapache2-mod-php7.4 libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap libbrotli1
  libcurl4 libgdbm-compat4 libgdbm6 libjansson4 libldap-2.4-2 libldap-common liblua5.2-0 libnghttp2-14 libperl5.28 librtmp1 libsasl2-2
  libsasl2-modules libsasl2-modules-db libsodium23 libssh2-1 perl perl-modules-5.28 php-common php7.4 php7.4-cli php7.4-common php7.4-json
  php7.4-opcache php7.4-readline psmisc ssl-cert
The following packages will be upgraded:
  libpcre2-8-0
1 upgraded, 36 newly installed, 0 to remove and 7 not upgraded.
Need to get 15.0 MB of archives.
After this operation, 76.9 MB of additional disk space will be used.
Do you want to continue? [Y/n] y

Schritt 4: Wichtige Pakete/Module für PHP 7.4 auf Debian installieren

Zusatzlich können jetzt zusätzliche Pakete mit apt-get install php7.4-xxx installiert werden.

Die gängisten davon einfach mit folgendem Befehl installieren:

apt install php7.4 php7.4-cli php7.4-curl php7.4-gd php7.4-intl php7.4-json php7.4-mbstring php7.4-mysql php7.4-opcache php7.4-readline php7.4-xml php7.4-xsl php7.4-zip php7.4-bz2 -y

Schritt 5: PHP 7.4 für Apache verfürgbar machen

apt install libapache2-mod-php7.4 -y
systemctl reload apache2

So, jetzt sollte PHP 7.4 auf deinem Debiansystem installiert sein und auch im Apache Verwendung finden.

Leider ist PHP 7.4 nur über die Sury Repo installierbar, und nicht über die standard Paketquellen. Achte immer darauf, dass du eine aktuelle Version deines PHP laufen hast. Leider sind einige Webanwendungen nur mit älteren PHP-Versionen betriebsfähig und werden bei neueren nicht unterstützt. Dies liegt daran, dass einige Funktionen dieser Sprache nicht mehr verfügbar sind. Von den alten Versionen sollte ebenfalls abstand genommen werden, da auch Sicherheitsbedenken eine Rolle spielen.


Viele Tutorials haben ein Erklärvideo. Sollte im Tutorial etwas Verwirrend oder Unklar sein, dann hinterlasse doch bitte eine Nachricht in den Kommentaren, ich versuche ständig den Inhalt zu verbessern. Auch wenn dir Fehler auffallen, lass es mich bitte wissen. Damit nicht andere entwickler die selben Fehler machen.

Und ganz wichtig: Aboniere einen (oder alle 😎 ) meiner sozialen Kanäle von My-Shops.eu, damit du bei Änderungen und Updates informiert wirst. So bleibst auch du immer UpToDate 😉

Categories
Tutorial

Kapitel 1 – Einrichten des Arbeitsplatzes / Entwiklungsumgebung

Inhaltsverzeichnis:

Als Server Benutzen wir Apache mit PHP und MySQL, einen so genannten XAMP.

Ziele dieses Kapitel:

  • Einen Server für unsere Webseiten zum Laufen zu bringen
  • Einen Editor zum Programmieren einrichten

Wir haben für dieses Tutorial 3 Möglichkeiten:

  1. Einen fertigen Server (Virtuelle Maschine) von Nice-Tutorial nutzen – für Anfänger sehr empfohlen! Diesen verwenden wir auch für unsere Tutorials

ODER

2. Einen WAMP (Windows) oder MAMP (MacOS) installieren – braucht weniger Speicherplatz, die Tutorial weichen etwas ab

ODER

3. Einen LAMP aufsetzen – eher für Fortgeschrittene – Dafür empfehlen wir dieses Tutorial: Einen LAMP-Server einrichten

Alle Arbeitsdateien können von meinem GIT-Repository heruntergeladen werden. Dateien bestehen immer aus ANFANG und FINAL

1. Einen fertigen Server (Virtuelle Maschine) von Nice-Tutorial nutzen

Der fertige Server von Nice Tutorial basiert auf DEBIAN-Linux und ist auf einer Virtuellen Maschine (VM) vorinstalliert. Alle Codebeispiele die wir in diesen Tutorials verwenden, sind auf dem System vorinstalliert. Eine VM bringt auch mehr sicherheit mit, da sie wie ein eigener Computer funktioniert. Sollte jemand zB.: die Datenbankserver Hacken, passiert dies nur auf der VM, und nicht auf deinem Computer

Systemanforderungen:

  • 1 GB RAM
  • 64 Bit OS
  • 10 GB Speicherplatz

Schritt 1: Oracle VirtualBox herunterladen und installieren

Schritt 2: NiceTutorialVM Herunterladen und entpacken

Schritt 3: Die VM Starten

Schritt 4: den StartUp-Script folgen und das Passwort ändern

2. Einen WAMP oder MAMP einrichten

Wenn du wenig Speicherplatz verwenden möchtest, kannst du XAMP verwenden. Dieses komplettpaket wird von Apachefriends.org entwickelt.

Schritt 1: für Windows, Linux und MaxOS – Download von apachefriends.org/de/download.html

Schritt 2: Installieren, dies kann je nach Betriebsystem abweichen, Infos findest du auf der Downloadseite.

Schritt 3: XAMP Starten und im Browser “http://localhost/” aufrufen

Schritt 4: den Ordner www lokalisieren
Im Installationsverzeichnis findet ihr den Ordner “www”. Dies ist der Ort von dem euer XAMP die Dateien serviert.

Schritt 5: Die Arbeitsdateien von GIT herunterladen und die Datei NiceTutorial-master.zip im Ordner “www” entpacken.

Was GIT ist und wie es funktioniert, zeige ich in einem späteren Tutorial

Schritt 6: auf “http://localhost/NiceTutorial-master” gehen, und mit den Tutorials starten

XAMP liefert standartmäßig PhpMyAdmin mit, das ist eine Weboberfläche um die MySQL Datenbanke zu verwalten. Unter:
http://localhost/phpmyadmin” kann diese geöffnet werden.

WICHTIG: Updates und Änderungen der Tutorials finden nicht automatisch statt. Du muss dies selbst machen um aktuelle Tutorials zu erhalten. Aboniere meine Kanäle um über Updates informiert zu werden.


Und ganz wichtig: Aboniere einen (oder alle 😎 ) meiner sozialen Kanäle von My-Shops.eu, damit du bei Änderungen und Updates informiert wirst. So bleibst auch du immer UpToDate 😉

Categories
Tutorial

Fortgeschrittenen Level 1

Categories
Tutorial

Das Webdesigner Tutorial – Alles was du wissen musst

Die ist ein komplettes Webdesigner Tutorial für absolute Anfänger, im zweiten Teil werden auch Tutorials für Fortgeschrittene angeboten.

Wir behandeln Design genau so, wie Programmierung. Ziel ist es, für eine Übersicht für Einsteiger zu geben. Die Hauptteile sind unabhängig von einander. Wenn du dich also nur für PHP oder Datenbanken interessierst, dann kannst du einfach die entsprechenden Tutorials absolvieren.

Einleitung ins Webdesigner Tutorial

Jetzt noch eine Einleitung und dann gehts auch schon direkt los.
Diese Tutorialreihe baut auf XAMP auf, also
X = Windows, Linux oder Mac (Das betriebssystem, welches ihr zum entwickeln benutzen wollt)
A = Apache (Ein HTTP Webserver)
M = MySQL / MariaDB (Ein Datenbankserver)
P = PHP (Die Programmiersprache, mit der wir unserer Webseite leben einhauchen)

Webseiten werden typischer weise in HTML geschrieben, das ist eine MarkUp Language.
Wir verwenden für unsere Tutorials:
HTML5 & CSS – nach Stand der Technik

HTML und CSS Logo für Webdesigner Tutorial
daPhyre / CC BY (https://creativecommons.org/licenses/by/3.0)

Viele Tutorials haben ein Erklärvideo. Sollte im Tutorial etwas Verwirrend oder Unklar sein, dann hinterlasse doch bitte eine Nachricht in den Kommentaren, ich versuche ständig den Inhalt zu verbessern. Auch wenn dir Fehler auffallen, lass es mich bitte wissen. Damit nicht andere entwickler die selben Fehler machen.

Inhaltsverzeichnis:

Ok, Let’s CODE!

Fangen wir gleich mit dem wichtigsten an:
Die Werkzeuge

Wir benötigen einen Editor, der uns das Arbeiten vereinfacht und eine Umgebung, in der wir unsere Programme / Webseiten entwickeln können.


Und ganz wichtig: Aboniere einen (oder alle 😎 ) meiner sozialen Kanäle von My-Shops.eu, damit du bei Änderungen und Updates informiert wirst. So bleibst auch du immer UpToDate 😉

Categories
Sicherheit

Sind Javascript Web Token (JWT) sinnvoll?

Um es kurz zu machen:
JA!!

gerade bei API anwendungen lässt sich damit problemlos die Last auf mehrer Systeme verteilen.

SessionID-Cookies, wie sie bei PHP eingesetzt werden, haben den Nachteil, dassbei jeder Abfrage ein Speicherzugriff auf die Festplatte (oder SSD) erfolgt. Dabei wird die SessionID-file geöffnet, und nach einem gültigen Sessionkey gesucht. Dieskann zu folge haben, dass viele Abfragen pro minute die I/O Kanäle des speichers belasten.

Datenbankbasierte Authentifizierung hat ein ähnliches problem. Für jede Abfrage muss erst der Datenbankserver kontaktiert werden, und die Datenbank nach einen gültigen User durchsuchen, ehe mit der eigentlichen Arbeit begonnen werden kann.
Dies kann, jeh nach Leistungsfähigkeit der Netzwerkverbindung und des Datenbankservers zu Verzögerungen führen. Gerade Datenbanken mit extrem vielen Nutzkonten zeigen schächen bei dieser art der Authentifizierung.

JWTs haben den Vorteil, dass sie nur entschlüsselt und überprüft werden müssen. Sind diese JWTs gültig ist auch ihr Inhalt, wie zB die User-ID vertrauenswürdig. Solange das Eigene Passwort, mit welchen die JWTs erstellt wurden sicher ist und nicht gestohlen wird, sind auch alle JWTs sicher. Sollte dieses Passwort abhanden kommen, kann man es einfach ersetzen, und automatisch werden alle JWTs ungültig, da sie keiner Prüfung mehr stand halten

Categories
Sicherheit

JWT in PHP erstellen

Hier zeigen wir, wie man einen Javascript Web Token (JWT) in PHP erstellt. Weiter unten wird erklärt, wie der Token aufgebaut ist und funktioniert.

Warum ein JWT Sinnvoll ist um die Leistung des Webservers zu steigern, erkläre ich in diesem Artikel.

JWT ist ein eine gute Möglichkeit, Daten permanent und sicher im Browser zu speichern. Gute Erfahrungen habe ich mit einer PHP-Lib namens REALLYSIMPLEJWT von https://github.com/RobDWaller/ReallySimpleJWT gemacht.

Installation mit COMPOSER:

composer require rbdwllr/reallysimplejwtin

oder in composer.json folgenden Eintrag in die requirements setzen

"require": {
    "rbdwllr/reallylsimplejwt": "^2.0"
}

JWT Token in PHP erstellen/generieren

in deinem Projekt kannst du einfach einen JWT erstellen mit:

<?php
use ReallySimpleJWT\Token;

require 'vendor/autoload.php';

$userId = 123;					// Bsp UID
$secret = 'MyShopseu123!';		// Geheimer Schlüssel
$expiration = time() + 3600;	// Ablaufdatum
$issuer = 'localhost';			// Benutzerprüfung

$token = Token::create($userId, $secret, $expiration, $issuer);

WICHTIG: $secret MUSS! mindestens12 Zeichen lang sein, mit großen und kleinenZeichen, so wie Zahlen und mindestens eines dieser Sonderzeichen beinhalten  *&!@%^#$

//Schlechtes Secret
myshops123

//Gutes Secret
MyShopseu123!

$token sieht dann in etwa so aus:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9 .eyJ1c2VyX2lkIjoxMjMsImV4cCI6MTU3NDUzMDYxOSwiaXNzIjoibG9jYWxob3N0IiwiaWF0IjoxNTc0NTI3MDE5fQ .BWRUr55Uz8YImUdBxYBkoPOe8lb_RHQL6lKTANyDzCg

Entwickler können die Methode customPayload() verwenden um einen benutzerdefinierteren Token zu erstellen. Dies ermöglicht die Erstellung eines Token basierend auf einem Array von Schlüsselwertpaaren.

<?php
use ReallySimpleJWT\Token;

require 'vendor/autoload.php';

$payload = [
    'iat' => time(),
    'uid' => 123,
    'exp' => time() + 120,
    'iss' => 'localhost.local'
];

$secret = 'TestSecReT&ofMyShopsXYZ';

$token = Token::customPayload($payload, $secret);

JWT Token in PHP prüfen/validieren

use ReallySimpleJWT\Token;

require 'vendor/autoload.php';

$token = 'aaa.bbb.ccc';
$secret = 'MyShopseu123!';

$valid = Token::validate($token, $secret); //TRUE oder FALSE
$header = 	Token::getHeader($token, $secret);
$payloead = Token::getPayload($token, $secret);

Wie ein JWT Token aufgebaut ist

Ein JWT (JSON WebToken) ist in drei Teile untergliedert, und durch Punkte getrent und mit Base64 verschlüsselt:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9 . 							<------ HEADER
eyJ1c2VyX2lkIjoxMjMsImV4cCI6MTU3NDUzMiaWF0IjoxNTc0NTI3MDE5fQ .  <--- 	PAYLOAD
BWRUr55Uz8YImUdBxYBkoPOe8lb_RHQL6lKTANyDzCg						<------ SIGNATUR