WebDev Flashcards
Wozu verwendet man Umgebungsvariablen?
Umgebungsvariablen können u.a. verwendet werden, um in der aktiven Kommandozeile Standard-Pfade zu setzen. Umgebungsvariablen setzen sich aus einem Bezeichner sowie dessen Wert zusammen; normalerweise einer Zeichenkette
Erklären Sie, weshalb Sie Linux-Befehle ohne Pfadangabe auf einer aktiven Übungsserver-Kommandozeile aufrufen können. Gehen Sie dabei auf die PATH-Umgebungsvariable ein
Linux-Befehle sind ausführbare Dateien bzw. Skripte, die ohne Angabe
des kompletten Speicherpfades aufgerufen werden können. Die Umgebungsvariable $PATH vereinfacht diesen Prozess.
Wie können Sie in einer aktiven Übungsserver-Kommandozeile den Inhalt von
Dateien ausgeben lassen ohne diese zu verändern?
Lösung: Die Linux-Befehle cat (concatenate) und tail können dazu verwendet
werden Dateiinhalte anzuzeigen, ohne den Inhalt der Dateien zu verändern
Wie können Sie Dateiinhalte
verändern?
Veränderungen an Dateien sind über Kommandozeilen-Texteditoren wie vim oder
nano direkt auf dem möglich. Alternativ dazu können Dateien über SFTP vom
Übungsserver auf einen lokalen Rechner heruntergeladen, dort bearbeitet und anschließend zurück auf den Übungsserver übertragen werde
Wie können Sie in einer aktiven Übungsserver-Kommandozeile Verzeichnisse und
Dateien umbenennen, verschieben und löschen?
Der Linux-Befehl mv (move) kann sowohl für das
Umbenennen als auch für das Verschieben von Dateisystem-Objekten (Ordner und
Dateien) verwendet werden.
Erklären Sie das Dateirechtesystem auf dem Übungsserver.
Jeder Ordner und jede Datei auf dem Übungsserver gehört einem Besitzer und ist einer Gruppe zugeordnet. Daraus resultierend können für drei logisch
getrennte Parteien Rechte vergeben werden: Eine für den Besitzer des Objekts,
eine für eine dem Objekt zugeordnete Gruppe und eine für alle anderen. Jeder
Partei können Lese- (read - r), Schreib- (write - w) und Ausführrechte (execute -
x) zugeordnet werden
Erklären Sie, wie Sie die Rechte von Dateien und Verzeichnissen auf dem Übungsserver anpassen können
: Zum Ändern der Dateirechte kann der Befehl chmod
(change mode) verwendet werden. Dabei können die z.B. über die eindeutig berechenbare Zahl angegeben werden und ist das Dateisystem-Objekt,
welches die neuen Rechte erhalten soll
Erklären Sie, was ein Prozess ist und wie Sie auf dem Übungsserver alle aktiven
Prozesse herausfinden können. Wie können Sie Ihnen zugeordnete Prozesse identifizieren und gezielt beenden?
Ein Prozess ist laut dem Duden Informatik „eine Instanz eines Programmes das sich in Ausführung befindet.“
Der Befehl top startet ein Programm, das alle Prozesse auflistet, die zurzeit auf
dem Computer betrieben werden.
Hierfür kann man im top-Programm
die taste ’k’ betätigen und anfolgend die PID eingeben. Existiert der Prozess noch
wird er dann „gekillt
Wie können Sie herausfinden, ob ein Prozess auf dem Übungsserver an einen Port
gebunden ist / auf diesem lauscht?
Das Netzwerkdiagnose-Programm netstat (Network Statistics) bietet
die Möglichkeit, Informationen über den Status von Netzwerkschnittstellen abzufragen. Über die Optionen -tulpen wird aufgelistet welche von anderen Rechnern
aufrufbare Dienste an welchen Port gebunden sind
Wie können Sie Archive im .tar.gz- bzw. .tar.bz2-Format auf dem Übungsserver
erstellen und entpacken?
Das Programm tar (tape archiver ) kann genutzt werden um Archive auf
Linux-Systemen zu erstellen und zu entpacken
Was sind symbolische Links (Symlinks)? Wie können Sie auf dem Übungsserver
symbolische Link anlegen?
Symbolische Links („Symlinks“, „Softlinks“) funktionieren ähnlich wie die
HTML-Links auf Webseiten und verweisen auf andere Dateien/Verzeichnisse.
Ein symbolischer Link kann mittels ln -s angelegt
werden
Wie können Sie Dateien von FTP- und HTTP-Servern auf den Übungsserver herunterladen?
Mit Hilfe des Programms wget kann man auf der Kommandozeile
Dateien von FTP- und HTTP-Servern herunterladen
Welche Aufgabe erfüllt der Apache Webserver im WorldWideWeb?
Der Apache Webserver ist ein Programm für die zentrale Bereitstellung
von Dokumenten in Rechnernetzen. Er implementiert das Hypertext Transfer Protokoll als Grundlage für die Kommunikation mit den Clients.
Wo können Sie einen installierten Apache konfigurieren?
m Verzeichnis conf des Installationsverzeichnis gibt es die Datei httpd.conf.
Diese ist für Konfigurationen zuständig. Oftmals werden die Konfigurationsparameter jedoch zur besseren Übersichtlichkeit auf mehrere Dateien aufgeteilt. Diese
können dann über den Include-Befehl in die httpd.conf eingebunden werden
Was ist eine Direktive?
Eine Direktive ist eine Verhaltensanweisung, die dem Apache in der
httpd.conf gegeben werden kann.
Wie können Sie Direktiven so zusammenfassen, dass sie nur für bestimmte Ordner
oder URLs gelten?
und werden dazu verwendet,
eine Gruppe von Direktiven zusammenzufassen, die nur für das genannte Verzeichnis und dessen Unterverzeichnisse gelten. [Übernommen von apache.org]
Analog dazu gibt es für URLs die Direktive … . [Details siehe apache.org]
Was bestimmt die Listen-Direktive?
Die Direktive Listen weist den Apache an, nur an
den angegebenen IP-Adressen oder Ports zu lauschen. Standardmäßig antwortet
er auf alle Anfragen an allen IP-Interfaces
Was bestimmt die ServerRoot-Direktive?
Die Direktive ServerRoot bestimmt das Verzeichnis, in
dem der Server installiert ist. Üblicherweise enthält es die Unterverzeichnisse conf/
und logs/. Relative Pfadangaben anderer Direktiven (wie z.B. Include oder LoadModule) werden relativ zu diesem Verzeichnis betrachtet. [Übernommen von apache.org]
Das Installationsverzeichnis des Servers kann bei der Installation im configureSchritt über die Option –prefix= festgelegt werden
Was bestimmt die DocumentRoot-Direktive?
Die Direktive DocumentRoot setzt das Verzeichnis, von
dem aus der Apache Dateien ausliefert. Sofern nicht eine Direktive wie Alias greift,
hängt der Apache Pfade aus der angeforderten URL an das Wurzelverzeichnis
an, um den Pfad zum Dokument zu bilden. Wenn das Verzeichnis nicht absolut
angegeben ist, wird es relativ zu ServerRoot betrachtet.
Was bestimmt die ErrorDocument-Direktive?
Über die Direktive ErrorDocument ist es
möglich, den Apache abhängig vom HTTP-Statuscode eigene Fehlermeldungen ausgeben zu lassen. kann dabei eine Textmeldung,
eine Umleitung auf einen lokalen URL-Pfad oder eine Umleitung auf eine externe
URL sein
Was ist ein Apache-Modul?
Der Quellcode des Apache Webserver ist modular aufgebaut. Dementsprechend können einzelne Funktionalitäten über das Hinzufügen von Modulen
im Apache eingebunden oder entsprechend auch weggelassen werden. Je hinzugefügtem Modul wird die Installation des Apache größer, langsamer und potentiell
unsicher (aufgrund von mehr potentiellen Sicherheits-Bugs). Dementsprechend ist
es für den Systemadministrator unerlässlich, sich gut zu überlegen, welche Module
tatsächlich benötigt werden
Erklären Sie die Vor- und Nachteile, sowie die Unterschiede von statischen und
dynamischen Modulen für den Apache Webserver
Da statische Module mit den Sourcen des Apache in dessen ausführbaren
Maschinencode kompiliert werden, können Sie vom Apache direkt verwendet werden und sind daher performanter. Bei Änderungen an einem statischen Modul ist
es daher jedoch zwingend erforderlich den gesamten Apache Sourcecode inklusive
des aktualisierten Moduls neu zu kompilieren und anschließend zu installieren.
Dynamische Module werden unabhängig von den Apache Sourcen kompiliert und
installiert. Daher ist es nicht notwendig den Apache neu zu kompilieren, wenn
sich der Quellcode eines eingebundenen dynamischen Moduls verändert. Wenn der
Apache die Funktionen eines dynamischen Moduls verwenden möchte, muss er
es beim Start laden. Dies verlangsamt den Start des Apache um circa 20%
. Wie können Sie dem Apache statische Module hinzufügen, wo dynamische? Wie
können Sie herausfinden, welche dynamischen Module in einem Apache geladen
sind und welche statischen?
Während der konfiguration für statische.
Dynamische Module werden während der Laufzeit
des Apache Webserver nachgeladen und können deshalb nach erfolgter Installation
in der httpd.conf über die Direktive „LoadModule“ eingebunden werden.
Dynamisch und statisch geladene Module lassen sich über den Befehl /bin/httpd -M auflisten. Hinter dem Name eines Moduls ist jeweils
vermerkt, ob das Modul statisch (static) oder dynamisch (shared) geladen wurde
Welche Funktionen haben die Module mod_status und mod_info?
mod_status liefert Informationen über die Serveraktivität und -performance.
mod_info liefert einen Überblick über die Serverkonfiguration.
Was versteht man unter Modulen von Drittanbietern?
Module von Drittanbietern sind Module für den Apache Webserver, die
nicht von der Apache Server Foundation (ASF) ausgeliefert werden (z.B. mod_php,
mod_perl)
Was versteht man unter einer bedingten Direktive? Geben Sie ein Beispiel an
Eine bedingte Direktive zeichnet sich dadurch aus, dass Sie nur ausgeführt wird, wenn eine Bedingung eingetreten ist. Bedingte Direktiven können über
das Schlüsselwort If erkannt werden, z.B. oder . Alle Direktiven, die von einer bedingten Direktive umschlossen
sind, werden nur ausgeführt, wenn deren Bedingung erfüllt ist.
Beispiel: Die Direktive DirectoryIndex index.html wird nur ausgeführt, wenn
das Modul dir_module geladen ist:
# DirectoryIndex: sets the file that Apache will serve if a directory
# is requested.
DirectoryIndex index.html
. Erklären Sie zwei simple Techniken, mit denen Sie Verzeichnisse eines Apache
Webservers vor unberechtigtem Zugriff schützen können
Zugriff anhand von IP-Netzen oder NutzernamePasswort-Abfrage zu beschränken. Hierfür kommen die Module mod_authz_host
und mod_auth_basic in Zusammenspiel mit mod_authn_file zum Einsatz
Über die Direktive Require können Voraussetzungen für den Zugriff
definiert werden. Beispielsweise kann ein notwendiger IP-Adressenraum über Require ip ip.adresse (z.B. Require ip 134.2.) definiert werden.
er Nutzernamen-Passwort-Schutz erfolgt über die Direktive AuthType Basic.
Diese ermöglicht es über die Direktiven AuthBasicProvider file und AuthUserFile
dateipfad eine Datei einzubinden, in der die Zuordnung zwischen Nutzer und Passwort hinterlegt ist
Nennen Sie Vorteile des hybriden Laufzeitmodells für den Apache Webserve
Systemgeschwindigkeit Aufgrund der Zugriffsverarbeitung durch die Threads,
kann die Bearbeitung mehrerer Zugriffe parallelisiert werden
Systemsicherheit Da ausschließlich der Hauptprozess unter der Rootkennung betrieben wird und die Kindprozesse keine Rootrechte benötigten, ist das Gesamtsystem sowie das Betriebssystem vor Sicherheitslücken in den Kindprozessen geschützt
Systemstabilität Das Gesamtsystem läuft stabil, da der Ausfall / Absturz eines
Threads oder Kindprozesses die anderen Threads / Kindprozesse sowie den
Hauptprozess nicht beeinflusst
Optimierbarkeit Durch das mpm_worker-Modul kann die Apache Installation
für die verfügbaren Hardware-Ressourcen optimiert werden. Dies geschieht
beispielsweise, indem die Threads-pro-Kindprozess-Anzahl an die verfügbaren
Prozessoren / Kerne eingestellt werden.
Welche Funktion hat das Apache-Modul mod_rewrite?
mod_rewrite ist ein Modul zur „URL-Manipulation“. Mit Hilfe des Moduls kann eine URL intern auf eine andere URL abgebildet werden. Dieses „Rewriting“ der URL erfolgt serverseitig und dadurch unbemerkt für den aufrufenden
Client.
Welche Funktion haben die Direktiven RewriteCond und RewriteRule des ApacheModuls mod_rewrite?
Die Direktive RewriteRule Pattern Substitution [flags] definiert
das „Umschreiben“. Pattern ist ein Muster, das die aufgerufene URL angibt,
Substitution die URL, deren Inhalt geliefert werden soll.
Über die Direktive RewriteCond TestString CondPattern [flags] kann festgelegt werden, dass die nachfolgende RewriteRule nur dann ausgeführt wird, wenn
TestString auf CondPattern passt
Wie können Sie in einer RewriteCond auf ein HTTP-Header-Feld zugreifen?
In einer RewriteCond lässt sich mittels %{HTTP:header} auf das HTTPHeader-Feld header eines HTTP-Requests zugreifen
Wie können Sie in einer RewriteRule einen HTTP-Redirect (HTTP-Weiterleitung)
anstatt eines internen Umschreibens der URL realisieren?
Ein HTTP-Redirect lässt sich durch die Angabe des Flags [R] realisieren.
Bei einem HTTP-Redirect wird der Client zu einer anderen URL weitergeleitet.
D.h. ein Benutzer sieht im Browser, dass er weitergeleitet wird!
Wie können Sie PHP in den Apache Webserver einbinden?
Um PHP in den Apache Webserver einbinden zu können muss das Modul
mod_php installiert und dynamisch in den Apache Webserver eingebunden werden. Zudem muss dem Apache angegeben werden, welche Dateien als PHP-Skripte
behandelt werden sollen; beispielsweise mittels
Welche Funktion hat die Datei php.ini?
Die Datei php.ini ist die Konfigurationsdatei von PHP. In ihr können alle
in PHP möglichen Einstellungen (wiederum als Direktiven bezeichnet) angegeben
werden. Beim Start von PHP wird diese eingelesen und die PHP-Umgebung nach
deren Einträgen gesetzt
Welche Funktionen haben die folgenden Direktiven der php.ini:
display_errors, ignore_user_abort, include_path und upload_max_filesize.
display_errors: Gibt an, ob bei der Skript-Ausführung auftretende Fehlermeldungen an den Client ausgeliefert werden. Defaultmäßig ist dies eingeschaltet.
ignore_user_abort: Gibt an, ob die Skript-Ausführung fortgeführt werden soll,
wenn der Client die Verbindung beendet hat. Defaultmäßig ist dies ausgeschaltet.
include_path: Gibt an, in welchen Verzeichnissen nach einzubindenden Dateien
gesucht werden soll. Die Angabe ist ähnlich zu Umgebungsvariablen: z.B.
include_path=¨
.:/php/includes¨
upload_max_filesize: Gibt die maximale Dateigröße an, die über ein PHPSkript auf den Server geladen werden darf. Problematisch an diesem Wert
ist, dass er Client-seitig nicht überprüft wird. Daher werden die Daten zunächst auf den Server geladen und sobald die Grenze erreicht ist beendet das
Skript den Upload
Mit welcher PHP-Erweiterung können Sie von PHP aus auf MySQL-Datenbanken
zugreifen?
In den Übungen setzen wir die PHP-Erweiterung mysqli ein (MySQL
Improved Extension). Es gibt jedoch auch die Möglichkeit mittels PDO_MYSQL
auf MySQL-Datenbanken zuzugreifen (für die Übungen spielt diese Möglichkeit
keine Rolle!)
Wann bietet sich die Verwendung des nginx-Webservers im Vergleich zum Apache
Webserver an?
Der nginx ist darauf optimiert, statisch vorgehaltene Inhalte für eine
sehr große Nutzerzahl bereitzustellen. Im Gegensatz zum Apache kann er somit in
sehr kurzer Zeit eine hohe Last bearbeiten. Der Nachteil des nginx gegenüber dem
Apache ist der geringere Funktionsumfang
. Was versteht man unter einem hybriden Webservermodell?
Beim hybriden Modell (siehe Abbildung 2) werden die Vorteile von Apache Webserver und nginx-Webserver miteinander verknüpft. Dabei werden alle
Anfragen zunächst an den nginx gestellt, welcher statische Inhalte mit höchster
Performance abrufbar vorhält und alle dynamischen Anfragen, die beispielsweise
mit PHP beantwortet werden, an den Apache Webserver weitergeleitet, der diese
bearbeitet. Auf diese Weise können auch statische Abzüge der dynamisch erzeugten Antworten auf dem nginx nach deren erster Berechnung abgelegt werden; er
fungiert in diesem Fall als reverse Proxy.
Wie können Sie den nginx konfigurieren?
Analog zur httpd.conf des Apache besitzt auch der nginx eine zentrale
Konfigurationsdatei namens nginx.conf
Wie können Sie den nginx als Reverse-Proxy verwenden und Caching aktivieren?
Beide Funktionalitäten lassen sich mit dem nginx-Modul ngx_http_proxy_module
realisieren. Wichtige Direktiven sind proxy_pass für den Reverse-Proxy sowie
proxy_cache_path, proxy_cache und proxy_cache_valid für das Caching