Categories
Allgemein

Was ist GIT und wie funktioniert GIT

Categories
Allgemein

Einen LAMP-Server einrichten

Vorraussetzung hierfür ist, dass du ein Linux als Betriebssystem laufen hast. Solltest du noch kein Linux installeirt haben kannst du dies in folgenden Tutorials lernen:

Linux (DEBIAN) auf einem PC Installieren

Linux (DEBIAN) auf ORACLE VirtualBox installieren

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
Quick help

Die Größe eines Verzeichnisses unter Linux ermitteln

Der Befehl DU zeigt die Menge des von den angegebenen Dateien oder Verzeichnissen verwendeten Speicherplatzes an. Wenn ein Pfad angegeben wird, der ein Verzeichnis ist, fasst DU die Plattennutzung jedes Unterverzeichnisses in diesem Verzeichnis zusammen. Wenn kein Pfad angegeben ist, zeigt du die Plattennutzung des aktuellen Arbeitsverzeichnisses an.

Wenn du ohne irgendwelche Optionen aufgerufen wird, zeigt DU die Plattenbelegung des angegebenen Verzeichnisses und jedes seiner Unterverzeichnisse in Bytes an.

Üblicherweise würde man den vom Verzeichnis belegten Platz in einem für Menschen lesbaren Format anzeigen wollen. Um zum Beispiel die Gesamtgröße des Verzeichnisses /var zu erhalten, würden Sie den folgenden Befehl ausführen:

sudo du -sh /etc

Die Terminalausgabe:

32G	/etc

Erklären wir den Befehl und seine Argumente:

  • Der Befehl beginnt mit sudo, weil die meisten Dateien und Verzeichnisse innerhalb des Verzeichnisses /etc dem Benutzer root gehören und für die normalen Benutzer nicht lesbar sind. Wenn Sie sudo weglassen, gibt der Befehl du “du: kann Verzeichnis nicht lesen” aus.
  • s – Zeigen Sie nur die Gesamtgröße des angegebenen Verzeichnisses an, zeigen Sie keine Dateigrößensummen für Unterverzeichnisse an.
  • h – Größe der Datei einem für Menschen lesbaren Format (h)
  • /etc- Der Pfad zu dem Verzeichnis, dessen Größe Sie ermitteln möchten

Was ist, wenn du die Plattennutzung der Unterverzeichnisse der ersten Ebene anzeigen möchten? Sie haben zwei Möglichkeiten. Die erste besteht darin, das Sternchen-Symbol (*) wie unten gezeigt zu verwenden, was bedeutet: ” alles finden, was nicht mit einem Punkt (.) beginnt”. Die Option -c weist du an, eine Gesamtsumme aller Größen auszudrucken:

sudo du -shc /etc/*

Die ausgabe:

8.0K    /etc/acpi
4.0K    /etc/adduser.conf
4.0K    /etc/adjtime
12K     /etc/alternatives
728K    /etc/apache2
12K     /etc/apm
16K     /etc/apparmor.d
160K    /etc/apt
4.0K    /etc/at.deny
4.0K    /etc/bash.bashrc
4.0K    /etc/bash_completion
8.0K    /etc/bash_completion.d
4.0K    /etc/bindresvport.blacklist
4.0K    /etc/binfmt.d
12K     /etc/ca-certificates
......
...

Eine andere Möglichkeit, einen Bericht über die Festplattennutzung der Unterverzeichnisse der ersten Ebene zu erhalten, ist die Verwendung der Option –max-depth:

sudo du -h --max-depth=1 /etc

Die Ausgabe



		
Categories
Quick help

SSH – Dateien mit SCP senden

SCP steht für Secure Copy und überträgt Dateien im Terminal via SSH zu oder von einen Zielserver.

Senden via SCP

Der Befehl sieht so aus:

scp /pfad/zur/datei <benutzername>@<Domaind oder IP>:/Pfad/

Ein Beispiel:

scp /test.file bob@100.50.20.14:/bob/Ziel/Pfad/test.file

Herunterladen via SCP

Um Daten von einen Server herunter zu laden, gibt man an erster stellen den Quellserver an.
Der Befehl für SCP:

scp <user>@<Domaind oder IP>:/Pfad/Datei /Ziel/Pfad

Beispiel:

scp bob@100.50.20.14:/bob/Ziel/Pfad/test.file /root/ziel/test.file

Daten zwischen zwei Server mit SCP übertragen

Um Dateien zwichen zwei entfernten Server zu übertragen, lassen sich als Quelle und Ziel je ein Computer eintragen

scp <benutzername>@<Domaind oder IP>:/Pfad/zur/Quelldatei <benutzername>@<Domaind oder IP>:/Pfad/zum/Ziel

Beispiel zum übertragen zwischen zwei entfernten Server

scp anna@69.69.0.3:/test.file bob@100.50.20.14:/bob/Ziel/Pfad/test.file
Categories
Quick help

Email in Mailcow finden

Manchmal reicht es, wenn man sich in den Container einlogt

Zuerst wechseln wir in das Verzeichnis, in dem sich der Mailcowcontainer befindet, in meinem Fall ist das

 cd /opt/mailcow-dockerized
docker-compose exec  dovecot-mailcow  /bin/bash

Ab un zu kommt es vor, dass der Container nicht gefunden wird.
Dann kann folgendes helfen:

# finde den Container
docker container ls

# z.B. in meinem Fall:
# f1ed3f47a12f        mailcow/dovecot:1.20    "/docker-entrypoint.…"   2 hours ago        Up 4 minutes
# Benutze die ID f1ed3f47a12f 

# Setze PID für den Container
PID=$(docker inspect --format {{.State.Pid}} f1ed3f47a12f)

# jetzt mit nsenter den namespace betreten
sudo nsenter --target $PID --mount --uts --ipc --net --pid

# Damit hat man Rootzugriff auf den Container
# Um zwischen Container und Hostsystem zu kopieren kann man docker cp verwenden
# z.B.: mail in /home/mail auf dem Host und  /var/vmail als das Ziel 
sudo docker cp /home/mail/domain.tld/username/.Spam/. f1ed3f47a12f:/var/vmail/domain.tld/username/.Spam/
Quelle:
https://www.reddit.com/r/mailcow/comments/7wqy3v/move_old_mail_to_new_mailcow_instance/
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