M239 - DAY 2

Folgende Handlungsziele wollen wir heute erreichen:

4.1 Kennt die Abhängigkeiten der zu installierenden Dienste und den Einfluss auf die Reihenfolge der Installation/Konfiguration.

Navigation

Step 1: Einführung (Richtzeit: 20 min)

Letze Woche haben Sie die Grundlagen eines Internetserver kennengelernt. Ausserdem haben Sie Ubuntu auf einer VM installiert. Dieses brauchen wir heute und die nächsten 3 Wochen immer wieder.
Lösen Sie bitte die folgende Repetition dazu (falls Sie einen Begriff nicht kennen, googeln sie ihn so, dass sie wissen was es ist):

https://learningapps.org/display?v=p7vy2svna20

Step 2: Einstieg Linux (Richtzeit: 90-135 min)

Für viele Leute ist Linux beim ersten mal etwas fremd. Die Benutzer- sowie die Verzeichnisstruktur ist völlig anders als bei Windows. Beide Betriebssysteme haben sich jeweils bei dem anderen die positiven Dinge abgeschaut, so hat Ubuntu nun – zusätzlich zur Konsolensteuerung – einen benutzerfreundlichen Desktop und Windows einen Linux-Kernel. Aus diesem Grund ist uns Linux auch nicht mehr so fremd, wie es das vor ein paar Jahren gewesen wäre. Um Ubuntu zu verstehen möchte ich von Ihnen eine schöne, kompakte Zusammenfassung zu folgenden Punkten (probieren Sie die entsprechenden Befehle unbedingt direkt aus):

  • Die gängigsten Linux-Distributionen mit jeweils mindestens drei Vor- und Nachteil in einer schön gegliederten Excel-Liste.
  • Das Benutzerkonzept von Linux (welcher User hat die meisten Rechte, wie sieht das in der Konsole aus, mit welchen Befehlen kann ich die Rechte anpassen?), ca. halbe A4-Seite
  • Die Verzeichnisstruktur von Linux (was wird in etc gespeichert, wo ist das Home-Directory eines Benutzers, wo ist meine externe Festplatte, usw.), max. 1 A4-Seite
  • Die 20 wichtigsten Linux-Konsolenbefehle (was macht cd, cd.., ls -a, gibt’s ein ipconfig?), auf max. 1 A4-Seite.
  • Wie installiere ich mit dem Terminal eine Software auf Linux?

Zeigen Sie diese Dokumente dem Lehrer.

Step 3: Einstieg Webserver (Richtzeit: 30 min)

Wir wollen einen Webserver einrichten. Bevor wir den Webserver einrichten können, müssen wir wissen was es alles für Grundvoraussetzungen braucht, um einen Webserver zu betreiben. Lesen Sie dazu den folgenden Link und fassen Sie ihn kurz in der Doku zusammen:

https://www.ionos.de/digitalguide/server/knowhow/webserver-definition-hintergruende-software-tipps/

Eine moderne Webseite kann Ihre Inhalte dynamisch anzeigen. Dies wollen wir natürlich ebenfalls umsetzen. Anbei der Unterschied einer dynamischen und einer statischen Webseite:

Lesen Sie folgenden Kurzartikel: https://blog.kompaktdesign.com/webdesign/statisch-vs-dynamisch/

Statische Webseite (Beispiel: https://www.coiffure-ruckstuhl.ch/):

Statische Websites werden zunehmend seltener verwendet. Ein (noch) sinnvoller Einsatzzweck stellt etwa eine simple Web-Visitenkarte dar. Z.B. eine Website einer Pizzeria, die nur aus einer einzelnen Seite besteht und lediglich Anschrift, Öffnungszeiten und Speisekarte enthält.

Dynamische Webseite:

Auch dynamische Websites bestehen (am Ende) aus einzelnen HTML-Seiten. Allerdings werden diese vor der «Auslieferung» an den Besucher dynamisch generiert. Dynamische Websites werden in einer serverseitigen Skriptsprache (insb. PHP) programmiert, die den Ablauf steuert. In der Regel werden Daten aus einer Datenbank geladen, verarbeitet und an passender Stelle ausgegeben. Sie können Eingaben von Benutzern verarbeiten (Bsp. Formulare, Bestellsysteme) und – im Normalfall – auch leichter das Design ändern.

Da wir mit modernen Systemen arbeiten wollen, brauchen wir also für eine dynamische Webseite einen Webserver, etwas mit dem PHP verwaltet werden kann und eine Datenbank. Diese wollen wir nun installieren. Doch zuerst müssen wir uns um den Zugriff auf das System kümmern.

Step 4: SSH (Richtzeit: 15/30 min)

Die Frage bei Servern ist immer, wie wir darauf zugreifen wollen. Sie haben bei der Inbetriebnahme der Hardware-Server gemerkt, dass es aufwendig ist, immer Monitor, Maus und Tastatur für jeden Server anzuschliessen. Im Normalfall greift man in der Praxis nach der Erstinbetriebnahme nur noch mit Remote-Tools auf das System zu. Hier gibt es zwei Möglichkeiten. Die Möglichkeit mit der Desktopanwendung, haben wir schon ausgetestet, nämlich mit dem Remote Desktop Protokoll (RDP) von Windows. Linux, welches sehr stark in der Konsolensteuerung ist, ist jedoch perfekt für eine andere Möglichkeit ohne GUI geeignet, nämlich für SSH.

Informieren Sie Sich kurz, um was es sich bei SSH handelt (4 min): Erklär mir: Was ist SSH? | Die Secure Shell erklärt [Deutsch/German]
Nun wollen wir SSH auf dem installieren. Dazu müssen wir einen SSH-Server auf der Ubuntu-VM und ein SSH-Client (Putty.org) auf dem Client installieren. Beide müssen im selben Subnetz sein, damit der Zugriff funktioniert.

Falls sie noch keinen SSH-Zugriff auf ihre VM oder ihren Raspi haben, gehen Sie wie in der Anleitung, Kapitel 1 vor: https://bbz.macherit.ch/files/m239/3h_Webserver_UBU.pdf

Es kommt immer wieder vor, dass Befehle aus Anleitungen bei Ihnen nicht funktionieren oder nicht das machen was sie sollen. Hier werden Ihre Google-Fähigkeiten enorm geprüft. Versuchen Sie Probleme mit gezielter Recherche zu ergründen. Sie können sicher sein, dass Sie nicht die erste Person mit diesem Problem sind. Je früher sie damit anfangen, desto besser, denn sie werden immer wieder auf Probleme stossen, die sie dann beheben müssen.

Nun haben wir einen SSH-Zugriff auf unseren Ubuntu-Server. Das einzige was wir nun tun müssen, ist die VM starten und dann können wir von unserem Windows-Rechner per Putty und SSH mit Befehlen unseren Ubuntu-Server konfigurieren. Das gute am Ubuntu mit Desktop ist, dass sie alles was sie machen jederzeit selbstständig überprüfen können, indem sie einfach in den Dateiexplorer von Ubuntu gehen und nachschauen ob die Files vorhanden und installiert worden sind.

Step 5: Apache installieren (Richtzeit: 20 min)

Informieren Sie Sich zuerst, was Apache Webserver genau ist (Kurzzusammenfassung in Doku). Sie können selbständig recherchieren oder folgende Quelle verwenden:

https://kinsta.com/de/wissensdatenbank/was-ist-apache-web-server/

Auch bei Apache gibt es tausende Tutorials auf Youtube, die sie selbständig suchen können. Ich habe die Installationssequenz, sowie das wechseln des Homeverzeichnisses in der Anleitung im Kapitel 3 für sie aufgeschrieben:

https://bbz.macherit.ch/files/m239/3h_Webserver_UBU.pdf

Schicken Sie mir ein Bild des «It works!» – Browserfensters:

Versuchen Sie die html-Datei entsprechend anzupassen. Erstellen Sie auch eine weitere html-Datei (mit Bild) in einem Unterordner und verlinken Sie diese neue Datei auf der Hauptseite.

So wollen wir sicherstellen, dass alle Berechtigungen korrekt vergeben worden sind und wir den vollen Zugriff auf die Ordnerstruktur haben.

Step 6: PHP und MySQL installieren (Richtzeit: 30 min)

Informieren Sie Sich zuerst, was PHP und MySQL miteinander zu tun haben (Kurzzusammenfassung in Doku). Lesen Sie folgenden Link bis zum und ohne Kapitel «Datenbank erstellen»:

https://entwickler.de/online/php/php-tutorial-datenbankprogrammierung-579772374.html

Um PHP und MySQL zu installieren, gehen Sie bitte in der Anleitung vor, wie in Kapitel 5, 6 und 7 beschrieben.

https://bbz.macherit.ch/files/m239/3h_Webserver_UBU.pdf

Schicken Sie mir nachher ein Bild von phpMyAdmin – Fenster, sobald sie sich eingeloggt haben:

Wichtig: Fahren Sie Ihre VM nun runter und schliessen Sie Vmware Workstation Player. Kopieren Sie dann Ihre VM mit dem installierten Apache, PHP und MySQL als Backup in ein anderes Verzeichnis. So haben Sie die VM auf diesem Stand wieder zur Verfügung, falls mal etwas schief läuft.

Versuchen Sie danach mit rudimentären php/MySQL-Kenntnissen einen Zugriff von der Website auf einen Datenbank-Eintrag zu machen. Recherchieren Sie dazu im Internet und versuchen Sie zu interpretieren wie die 3 Komponenten html/php/MySQL miteinander zusammenarbeiten. Hierbei ist es auch wieder wichtig, dass wir wissen, ob wir die entsprechenden Rechte auf die MySQL-DB haben und somit von einer Website auf die Datenbank zugreifen können.

STEP 7: FILE TRANSFER PROTOCOL (RICHTZEIT: 30 MIN)

Die meisten Grundlagen für einen guten Webserver haben wir schon gesetzt. Nun fehlt aber noch etwas wichtiges, nämlich wie ich die Daten auf den Server bringe. Ich will ja Daten auf den Server und mein Webseiten-Verzeichnis hochladen können, ohne dass ich mühsam die VM öffnen muss und dort hantieren muss. Mit SSH geht das auch nicht so toll. Aus diesem Grund werden wir heute einen FTP installieren, um Daten auf den Server hoch- und runterzuladen.

Lesen Sie Sich zuerst in folgende Theorie ein:

https://www.ionos.de/digitalguide/server/knowhow/ftp-file-transfer-protocol/

Schauen Sie Sich ausserdem folgende Video an und halten Sie die Unterschiede zwischen FTP, SFTP und TFPT in Ihrer Dokumentation fest:

https://www.youtube.com/watch?v=tOj8MSEIbfA&ab_channel=PowerCertAnimatedVideos

Zur Installtion auf unserer VM/Raspi gehen Sie dabei vor, wie im Kapitel 9 meiner Anleitung beschrieben: 

https://bbz.macherit.ch/files/m239/3h_Webserver_UBU.pdf

Legen Sie mir ein Bild in der Doku ab, sobald Sie Sich erfolgreich am FTP einloggen konnten, auf dem auch die IP-Adresse ersichtlich ist:

Versuchen Sie nach der TLS-Installation noch den Zugriff per FileZilla und legen Sie mir davon ebenfalls einen Screenshot ab. Erstellen Sie ausserdem eine Zusammenfassung in der Doku zum Thema FTP.

STEP 8: SSL-ZERTIFIKAT (RICHTZEIT: 25 MIN)

Wenn Sie auf Ihren Webserver zugreifen wollen, ist dieser unverschlüsselt. Das heisst, dass die ganze Kommunikation über das Internet mit dem HTTP-Protokoll vonstatten geht. Dies wiederum bedeutet, dass die Daten im Klartext, also unverschlüsselt durch das Web gesendet werden. Dadurch ist es möglich, Ihre Datenanfragen an Webserver und deren Antworten ohne grossen Aufwand mitzulesen. Das kommt in der heutigen Internetwelt überhaupt nicht mehr gut an. Aus diesem Grund ist in Kapitel 12 meiner Anleitung beschrieben wie Sie Ihren Webserver mit einem SSL-Zertifikat verschlüsseln können. Lesen Sie vorgängig hier einige Details zum SSL-Zertifikat «Letsencrypt», welcher gratis ist:
https://www.thomas-krenn.com/de/wiki/Let%27s_Encrypt

Schauen Sie Sich ausserdem folgendes Video an:

https://www.youtube.com/watch?v=MWdcCvGg194&ab_channel=it-zeugs.de

Versuchen Sie danach mit der Anleitung ein SSL-Zertifikat für Ihren Webserver zu installieren. Legen Sie mir danach wiederum einen Screenshot des verschlüsselten Zugriff in der Dokumentation ab.

STEP 9: VERZEICHNIS SCHÜTZEN (RICHTZEIT: 20 MIN)

Immer wieder kommt es vor, dass ein Teil einer Homepage oder ein Verzeichnis mit einem Passwort geschützt werden muss. Lesen Sie Kapitel 14 meiner Anleitung und versuchen Sie direkt ein Verzeichnis mit Passwort zu schützen. Dokumentieren Sie dies wiederum in Ihrer Doku und senden Sie mir einen Screenshot vom Aufruf der verschlüsselten Webseite.

Überlegen und notieren Sie Sich ausserdem, wozu man so ein geschütztes Verzeichnis gebrauchen könnte. Also welcher Kunde von Ihnen könntes so etwas brauchen?

Lerndoku oder Fachtexte (Richtzeit: 45 min)

Aktualisieren Sie die Lerndoku und versuchen sie das heute erarbeitete Wissen sauber und schön gegliedert in die Lerndoku einzubauen. Zeigen Sie den ersten Entwurf der Lehrperson.

Sollten Sie dies schon erledigt haben, suchen Sie Sich einen der Fachtexte auf Teams aus und lesen sie diesen.

Abschluss (Richtzeit: 20 min)

Wir haben heute die Grundlagen für einen Webserver gelegt. Wir haben mit PHP, MySQL und Apache alles installiert, was wir brauchen, um einen Webserver in Betrieb zu nehmen. Ausserdem haben wir einen ersten Einblick in das Betriebssystem Linux erhalten und die ersten Befehle kennengelernt. Beantworten Sie bitte die folgenden Antworten.

  • Was lief gut und hat mir richtig Spass gemacht?
  • Was hat mir Schwierigkeiten bereitet und wie konnte ich dagegen vorgehen?
  • Was werde ich nächstes Mal anders machen?
  • Habe ich heute für meine Bedürfnisse genug gelernt?
  • Gibt es etwas, das mich noch brennend interessieren würde?

Überprüfen Sie, dass Sie folgendes in der Lerndoku haben:

  • Linuxversionen, Excel-Dokument
  • Linux Benutzerorganisation, ca. halbe A4-Seite
  • Linux Verzeichnisstruktur, max. 1 A4-Seite
  • Linux Die 10 wichtigsten Linux- Konsolenbefehle auf max. 1 A4-Seite.
  • Kurzzusammenfassung Apache2
    • Plus Screenshot von funktionierendem Apache2 Webserver «It works!»
  • Kurzzusammenfassung PHP/MySQL
    • Plus Screenshot PHPMyAdmin
  • Screenshot Zugriff Filezilla auf FTP
  • Screenshot SSL-Zugriff
  • Screenshot verschlüsseltes Verzeichnis.