Webtechnologien Sommersemester 2019

Virtuelle Maschine

Über den Studiengang wird Ihnen eine eigene virtuelle Maschine bereitgestellt. Diese muss zuerst erzeugt werden. Verbinden Sie sich dazu mit dem Server dsds-wirt. Der Benutzername ist Ihre Matrikelnummer, das Passwort das Ihres FB4-Accounts.

ssh s0543210@dsds-wirt.f4.htw-berlin.de

Auf dem Server stehen Ihnen vier Kommandos zur Verfügung, die alle mit sudo verwendet werden können:

Existierende VM

Haben Sie schon eine VM? Wenn Sie sich nicht mehr sicher sind, können Sie es einfach prüfen (Matrikelnummer durch die eigene ersetzen):

ls -l /vm | grep s0543210

Sollten Sie noch keine VM haben, führen Sie sudo restore_my_machine aus. Ein paar Atemzüge später ist Ihre VM bereit und das Script teilt Ihnen den Namen Ihrer Maschine (z.B. “dsds-00”) und das Passwort für den Nutzer “local” mit (z.B. “local-password: 2ea4ad54”).

Starten Sie jetzt noch Ihre VM mit sudo start_my_machine.

Verbinden

Trennen Sie mit exit die Verbindung zu dsds-wirt und verbinden Sie sich mit Ihrer VM (nur innerhalb des HTW-Netzes möglich, sonst bitte Proxy nutzen):

ssh local@dsds-00.f4.htw-berlin.de

Server-Test

Das Schöne am Web ist auch seine Einfachheit. Zum Testen starten wir eine Art Mini-Web-Server. Führen Sie dazu folgendes Script aus:

echo -e "HTTP/1.1 200 OK\r\n\r\nHallo Welt" | sudo nc -l 80

Wenn Sie nun im Browser die URL Ihrer VM aufrufen (z.B. http://dsds-00.f4.htw-berlin.de), sollte der Text “Hallo Welt” erscheinen. Zudem sehen Sie in der Shell genau, wie Ihr Browser seine Anfrage gestellt hat.

Update

Bevor es weitergeht, sollten Sie Ihr System noch schnell auf den aktuellen Stand bringen. Führen Sie dazu sudo apt-get update aus.

LAMP

Für die weiteren Übungen brauchen wir den sogenannten LAMP-Stack. Also Linux (haben wir schon), Apache, MySQL und PHP. Dazu gibt es diverse Anleitungen im Web; ich empfehle Ihnen wiki.ubuntuusers.de/LAMP. (Mit lsb_release -a finden Sie Ihre Ubuntu-Version heraus. Steht sonst aber auch im Begrüßungstext.) MySQL müssen Sie nicht unbedingt installieren, da die Hochschule Ihnen über den Studi-Server Datenbanken zur Verfügung stellt; Sie können es aber trotzdem tun und den lokalen Server verwenden.

Rewrite

Zukünftig wollen wir mit sogenannten clean URLs arbeiten (z.B. /users/123 statt /users.php?user=123). Dazu muss eine kleine Änderung in der Datei /etc/apache2/apache2.conf vorgenommen werden. Öffnen1 Sie diese und suchen Sie nach folgender Stelle:

<Directory /var/www/>
   Options Indexes FollowSymLinks
   AllowOverride None
   Require all granted
</Directory>

Ändern Sie AllowOverride None zu AllowOverride All. Aktivieren Sie danach das Rewrite-Modul und starten Sie den Apache neu:

sudo a2enmod rewrite
sudo service apache2 restart

Testen von mod_rewrite

Wenn Sie testen möchten, ob die Änderung funktioniert hat, legen Sie zwei Dateien in /var/www/html/ an:

  1. .htaccess

    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php?url=$1 [L]
    
  2. index.php

    <?= $_GET['url'] ?>
    

Wenn Sie nun beispielsweise http://dsds-00.f4.htw-berlin.de/eins/zwei/drei aufrufen, sollte “eins/zwei/drei” in der Seite angezeigt werden.

Löschen Sie die beiden Dateien, wenn es geklappt hat.

Deployment

Deployment bezeichnet die Verteilung, Installation und Konfiguration von Software auf Zielsystemen. In unserem Fall beschränkt sich das auf das Transferieren der Website-Dateien auf den VM-Server. Später könnten noch Aktualisieren der Datenbank, Konfiguration von Zugangsdaten und Neustarten des Web-Servers dazu kommen.

Zum Transferieren ihrer lokalen Dateien gibt verschiedene Möglichkeiten. Die einfachsten (und hier empfohlenen) sind scp und rsync. Zuerst konfigurieren wir aber noch den Zugang zum Server.

ssh config

Aus Bequemlichkeit (um nicht immer wieder local@dsds-00.f4.htw-berlin.de tippen zu müssen) legen wir uns zuerst ein Alias für den VM-Zugang an. Erstellen Sie dazu auf Ihrem Computer die Datei config:

vim ~/.ssh/config

und fügen Sie folgenden Eintrag hinzu (mit ihrer VM-Nummer):

Host vm
   User local
   Hostname dsds-00.f4.htw-berlin.de

Ab sofort können sie sich einfach per ssh vm mit Ihrer VM verbinden. Das funktioniert auch mit rsync, scp etc.

SCP

Mit Secure Copy, kurz SCP, lassen sich verschlüsselt Dateien zwischen zwei Computern übertragen. Es baut auf SSH auf, was in unserem Fall praktisch ist, weil in der VM schon ein SSH-Server läuft. Die Syntax entspricht der von cp, um also beispielsweise das Verzeichnis “Aufgabe1” auf den Server zu kopieren, genügt folgender Befehl:

scp -r Aufgabe1 vm:/var/www/html/

-r (recursive) ist nötig, um ganze Verzeichnisse zu kopieren.

Rsync

Im Gegensatz zu SCP kopiert Rsync nicht stur, sondern gleicht ab. Das heißt, es findet zuerst die Unterschiede und kopiert dann nur neue oder geänderte Dateien. Mit --delete entfernt es auch lokal nicht mehr vorhandene Dateien vom Server. Der Befehlt gleicht syntaktisch dem von SCP. Eine genaue Erklärung des Befehls samt aller Parameter finden Sie unter explainshell.com.

rsync --recursive --delete --stats --human-readable Aufgabe1 vm:/var/www/html/

git

Eine Alternative zum direkten Übertragen der Dateien ist der Weg über Git. Dazu gibt es auch wieder mehrere Möglichkeiten, beispielsweise die VM als eigene Origin einzutragen, wodurch der aktuelle Stand später per git push vm abgeglichen werden kann. Oder Sie clonen Ihre Repository auf dem Server und führen immer wenn eine neue Version bereitsteht folgendes Script aus, das den aktuellen Stand pullt.

ssh vm 'cd /var/www/html && git pull'

Noch fortgeschrittener ist der Weg über Git Hooks (so funktioniert z.B. der Kalender des cbmi).

GUIs

Zu guter Letzt gibt es für all jene, die die Command Line nicht verwenden wollen, auch kostenlose grafische Programme, die SCP beherrschen, beispielsweise Cyberduck, WinSCP oder FileZilla.


  1. Sie können nano nutzen. Andernfalls können Sie vim mit apt-get install vim installieren.